Why Mephisto?

In response to the comments on my first post I thought it would be a good idea to write briefly about why I chose to implement this site using Mephisto rather than any of the other blogging systems and also talk a little bit about the process of putting it together. I have to say though, all of this is definitely from a programmers point of view. If you’re not a code head you’ll need to consider things like ease of installation which is not so much an issue for the technically minded.

For me, the single most important requirement of any CMS system I use is that it’s easily hackable. I don’t like the idea of being locked into a certain featureset or way of doing things, especially for my own site, as I really want to be able to evolve the site and try out new ideas. All of the blogging systems around now do have quite substancial plugin architectures some of which are really quite nice but at the end of the day if you plan on writing a lot of custom code for a site you’ve got to pick a blog tool based on a platform you like. I immediately ruled out Movable Type (I don’t know Perl and have no desire to learn at this point in time), Textpattern (writing PHP makes me want to kill the world, and no I’m not just following the pack of current PHP hating – I’ve hated it for years) and all the other PHP-based systems of which there are enormous amount. I was briefly swayed towards Symphony after a Pub Standards conversation with Mike. It’s got a really nice clean interface and an XSLT based templating engine.

It’s also got to be enjoyable to use and code for the site as I’m mostly going to be working on it in my spare time so for me there was only one choice of platform, you guessed it – Ruby On Rails or at least Ruby. I did consider going with Django (in a Jeff Croft stylee) and essentially roling my own system from scratch because I’ve wanted an excuse to play with Django for a while but I just like writing ruby so much that it needed to be Ruby based. I was originally going to write a system based on Camping as it is ‘The world’s first ironic web framework’ and I thought in some kind of perverse way it would be funny. After a brief investigation I discovered that it would definitely way to much effort to start from scratch writing a comments system and what-not so then I came down to the two RoR-based blogging tools, Typo and the new kid on the block, Mephisto. Of course, RoR is not for everyone. If you’ve got shared hosting then getting and keeping it running might be a problem. I’d recommend a VPS with at least 128MB of RAM for running RoR apps. However, Rails deployment has come on a long way recently and the fabled Mongrel/Apache 2.2/mod_proxy_balancer stack is robust and relatively easy to get going.

We previously used Typo for The Web’s Bollocks but after a few months we wished we hadn’t. It started off simple and small but has seemed to have turned into a bit of a test bed for random Rails and Ajax techniques which make the interface really nasty IMO. On the other hand, although it’s very new, Mephisto is going from strength to strength at the moment and Rick has very cunningly got Justin Palmer to design the UI and that guy knows what he’s doing. The whole thing is really lean but is very easily extendable using standard Rails plugins which means, if you want to, you can change anything you want. That I like.

Also, Rick and Justin are both active on #mephisto and are really open to suggestions (and sometimes patches) which is great. As I was building the site and chatting on #mephisto about it bugs got fixed and features added as I was working. Not only this, but with Rails plugins, if a feature isn’t in the core you can stick it on yourself which is exactly what I did.

With Mephisto, there are essentially three ways of extending the application with plugins; writing new filters and macros, writing custom Liquid template tags or extending/monkey patching the core code with your own code. The first two are definitely the most desirable as, especially being so young, trying to patch the internals is almost certain to break in later versions. For this site I wrote a macro (to implement client-side code highlighting with CodeHighlighter) and three custom tags(For working with the del.icio.us, last.fm and Upcoming APIs). Although they are all pretty fresh out of Textmate but you can have a look at them in my SVN repos.

At first, I found it tricky to get my head around writing custom Liquid tags but once you get the hang of it it’s really quite good. You do need to parse your own tag options which requires a bit of regex tomfoolery but the trick is to use some of the pre-built regexes from Liquid which will ease some of the pain and ensure that your tag syntaxes are consistent with the built in tags. I used a similar for approach for each of the three tags which I’ve extracted out into a reusable base class that might be of use to you and takes care of all of the tag option parsing.

If there is a down side to using Mephisto it’s that it is very new. If you work of the trunk you’ll get all the new stuff but some features aren’t fully implemented (like tagging and asset management) but if you want to keep on top of it then just make sure you svn up every now and then and you’ll be fine. The documentation is a little light at this stage as well as it’s a young project but I’m sure it’ll grow along with the project.

So yes, all in all Mephisto is a very promising project and although it’s very new it’s in a very usable state. Give it a go if you get the chance.

12 Comments (Closed)

First off, really great redesign. It’s so simple and clean.

Second, I completely agree with your thoughts on Mephisto. Mephisto is a great project but it is very new.

I have been using it on Rails Tips for around three weeks and really enjoyed it thus far. The Admin UI is intuitive and great looking, especially compared to other blogging systems that I have used (Wordpress, Textpattern, Typo, etc.).

John NunemakerJohn Nunemaker at 27.08.06 / 23PM

Im REALLY digging your layout… Been using Mephisto for awhile as well, and I guess it is the same reasons I couldnt/wouldnt use typo.

Another DanAnother Dan at 29.08.06 / 10AM

I’m a big fan of Symphony but I’m waiting on their next release to finish off my site… The new version looks like it’ll be absolutely awesome but it’s still somewhere in deepest darkest Australia at the moment. Right now it’s lacking in plugins for the don’t-want-to-do-it-myself crowd, of which I am a proud member, but hopefully that’ll be remedied in the forthcoming release.

Mike StenhouseMike Stenhouse at 29.08.06 / 18PM

Mike: Yeah, it looks quite different from the rest…is it a PHP thing? The thing that immediately annoyed me about it is that they made up there only ponsy names parts of the admin interface like ‘blueprints’ instead of templates and ‘campfire’ instead of, well, god know what that is. I suppose you’d get used to that though.

DanDan at 30.08.06 / 09AM

Great job on the redesign Dan. Mephisto looks to be pretty damn cool… I may give it a go on my next project.

PS – the link to CodeHighlighter is incorrect (going to “CodeHighliter” instead of “CodeHighlighter”)

Aaron GustafsonAaron Gustafson at 31.08.06 / 13PM

Thanks for spotting that, Aaron. I’ve not mastered this ‘hyperlink’ trickery yet. What every happened to libraries and books eh? New fangled technology, grumble grumble…

DanDan at 31.08.06 / 13PM

What a great design. I’ll be sure to try out Mephisto as the CMS for my next project.

OlavOlav at 31.08.06 / 16PM

Pretty! And clean! I’ll give this a shot for the intranet redesign I’m doing. I’ve started with plain RoR, but perhaps Mephisto has already solved some of the problems I don’t even know I’ll run into yet.

RamonRamon at 03.09.06 / 12PM

great design. Good luck

TonyTony at 03.09.06 / 20PM

Dan: Yeah, Symphony’s PHP, which would probably have put you off! I actually don’t mind that they’ve made up their own vocabulary for the interface – it makes a hell of a lot more sense than TxP – but I know what you mean. The biggest barrier to wider adoption of the system is likely to be the steep learning curve and unforgiving nature of XSL. Any slips and you’re presented with arcane error messages that require a direct line to the spirits to interpret.

Mike StenhouseMike Stenhouse at 11.09.06 / 12PM

Hey Dan, dig the new site (I dig CodeHighlighter even more… It’s so pretty when you color it like the Vibrant Ink theme for TextMate).

One question though, how are you getting the Gravatars to display? I can get the comment author’s email address using the Liquid comment drop, but can’t figure out how to pass that through MD5 except in JavaScript. I noticed there’s a gravatar helper in application_helper.rb, but this Liquid stuff definitely won’t like it.

I see you’ve got it running nicely here though, so I thought I’d try my luck (drop me an email if you see this :)).

Chu YeowChu Yeow at 25.09.06 / 06AM

Bah, ignore my last comment – I figured it out. There’s a gravatar Liquid filter available – found it after looking at lib\mephisto\liquid\filters.rb :x

Chu YeowChu Yeow at 25.09.06 / 11AM

About This Article