What is Magmawiki?Magmawiki is a new Ruby on Rails wiki engine that Emi and I are currently working on. Our goal is to eventually replace the mediawiki engine (that we're currently using at the dwarf fortress wiki) with something considerably more stable, user-friendly, with maintainable and extensible code.
It's also open source (modified MIT license - you're not allowed to use my name, Emi's name, or my company's name for advertising; otherwise, everything goes) and has a rockin' cool name.
Why should I care?Well, you can take a sneak peek at some of the changes we're implementing with the new skin called Magmawiki on the current wiki (
http://df.magmawiki.com/index.php/Special:Preferences to change your skin). However, our core ideas go far beyond just a friendlier skin. For a look at the features we're planning on implementing (before we even get to version 1!), check out
http://df.magmawiki.com/index.php/Dwarf_Fortress_Wiki:Magmawiki.
That's not good enough. Why are you doing something so crazy?Mediawiki has a plethora of security holes and issues, and has the most tangled code base on the face of the planet. That's fine, except the team behind Mediawiki isn't likely to fix these issues UNLESS it affects the wikimedia foundation's projects -- and a number of the bugs we've run into don't apply to, say, wikipedia. Additionally, php is a very buggy and poorly designed programming language, which has the potential of opening up a significant number of security holes.
We looked at some of the other wiki solutions (including MoinMoin, Instiki, and a very ... hilarious meeting with Wagn), but none of them offer the features we've come to depend on at the dwarf fortress wiki.
OMG so you're going to make us enter in pages again by scratch?No. One of the
required features before we release is an importer from mediawiki databases to the magmawiki system, including a mediawiki parser. Until this is working
perfectly (well, within reason), we will not be forcing a switch to magmawiki.
You mentioned features, what do you mean?Well, high up on the list are a better templating system and saner markup.
- Parser:
Potential parser options (markup) include markdown and textile. Anyone who's messed with the core mediawiki syntax can appreciate how these would be an improvement. Additionally, we are looking at other options (such as a javascript WYSI(almost)WYG editor that converts down to textile or markdown) for the less technically inclined. - Templates:
The mediawiki template syntax is balls terrible. Don't believe me? Here's a simple example: <center>
<div style="width:{{{width|95%}}};"><p><big>'''{{#expr:({{#expr: ((({{PAGESINCAT:Elven Quality Articles|R}} * 0) +({{PAGESINCAT:Human Quality Articles|R}} * 50) + ({{PAGESINCAT:Dwarven Quality Articles|R}} * 100))/(({{PAGESINCAT:Elven Quality Articles|R}} + {{PAGESINCAT:Human Quality Articles|R}} + {{PAGESINCAT:Dwarven Quality Articles|R}})))}}) round 0}} out of 100'''</big> overall wiki [[Dwarf Fortress Wiki:Quality|quality]] rating <small>(estimate)</small></p>
<p style="-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px;-moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px;
border:1px solid #bbb; padding:2px; overflow:hidden; background:#eee;"><span style="width:{{#expr: ({{PAGESINCAT:Dwarven Quality Articles|R}}/({{PAGESINCAT:Elven Quality Articles|R}} + {{PAGESINCAT:Human Quality Articles|R}} + {{PAGESINCAT:Dwarven Quality Articles|R}})) * 100 round 1}}%; height:{{{height|16}}}px; background:#bd8; float:right; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; padding:0; margin:0;"> </span><span style="background:#bd8"><span style="width:{{#expr: ({{PAGESINCAT:Human Quality Articles|R}}/({{PAGESINCAT:Elven Quality Articles|R}} + {{PAGESINCAT:Human Quality Articles|R}} + {{PAGESINCAT:Dwarven Quality Articles|R}})) * 100 round 1}}%; height:{{{height|16}}}px; background:#49f;
background:-webkit-gradient(
linear,
left bottom,
right bottom,
color-stop(.75, #49f),
color-stop(1, #bd8)
);float:right;padding:0; margin:0; text-align:left;"> </span><span style="width:{{#expr: ({{PAGESINCAT:Elven Quality Articles|R}}/({{PAGESINCAT:Elven Quality Articles|R}} + {{PAGESINCAT:Human Quality Articles|R}} + {{PAGESINCAT:Dwarven Quality Articles|R}})) * 100 round 1}}%; height:{{{height|16}}}px; background: #db8;
background:-webkit-gradient(
linear,
left bottom,
right bottom,
color-stop(0, #ff8),
color-stop(.75, #db8),
color-stop(1, #49f)
);
float:right; -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px;padding:0; margin:0; text-align:left;"> </span></span></p></div></center>
Sure it could be cleaned up a bit, but if you mess with the spacing at ALL on that template, it breaks, horribly. So, whats our solution?
Yes, we're going to allow templates written in sane code, with restricted runtime environments and cached output. Readable templates are significantly more palatable and editable, and less likely to induce stress killing sprees when trying to figure out why a template stopped working.
Why Ruby on Rails? Isn't that a hipster fad?Maybe I'm a hipster
. The reason we're using Ruby on Rails is because I have significant experience with programming with that web framework. Illideri Studios (my company) uses it for the majority of our web-based stuff, and it works well.
Cool, what are the caveats?No IE support. Not until after version 1.
We'll develop to version 1 without checking it in IE7/8 and then I'll go back (at my own leisure) and write some css and other stuff for compatibility.
I do not own (and will not ever buy) another copy of Windows. Internet Explorer is also so backwards when it comes to web standards, that any attempt to maintain support with the browser results in the majority of your time spent fixing insanity inducing edge cases that ONLY affect IE. Such time could be better used actually programming and getting it to work for the other browsers that actually adhere to the W3C recommendations and HTML / CSS standards. If it still works in IE for you, great, but we're not going to be going out of our way at all to make it work right.
Advanced media features (such as videos) will require HTML5 and Javascript. We're not embedding flash into the site - flash is too incompatible with too many systems to even bother trying; whereas HTML5 media is supported on devices including the iPhone, iPad and Android phones. Also, Adobe charges out the buttocks for the flash development software. If you want to donate the $500 + for a commercial license, feel free - I'll turn right around and donate it to an animal shelter or something.
Also, we will be charging a tiny fee of 0.001¢ per page view, to reduce bandwidth consumption (this is a JOKE, this is not serious, I would never charge people to use the wiki!)
How long before this move takes place?No idea. Could be a few months before we're ready to try database dumps (that doesn't mean we're moving quite yet, though!), or it could be a year. However, we will have at least a month of testing before we even BEGIN the move process over to the new wiki. You'll have to recreate your user account, but all templates, pages, and page histories will remain intact.
Cool, can I help?Sure! We use github for the code repository (
http://www.github.com/locriani/magmawiki) and invite code contributions. We won't accept any code if it has not been unit tested, though.
Ways you can help:
- Translations / Localizations
- Programming
- Skin designs
- Bug testing
- Discussion!
If you're not technically oriented (or, you're technically oriented and don't want to learn ruby), we can also use help with thoughts on the new skin (detailed above), bug testing (details to come soon), and feature testing (details to come soon). If you just want to see what it looks like at this moment, you can get a sneak peak at
http://99.35.187.9:3000/ - but I make no guarantees that will be functional, useable, pretty, or even online as that's the computer I'm using for development.
Also, comments and criticism are welcome and encouraged.
This sucks, I hate you.Sorry. Life sucks sometimes; it is best to keep a positive attitude!