Fork me on GitHub

Rails-powered Open Source Killer Apps, Anyone?


Table of Contents

    Lately I’ve been meandering around the web to find a good CMS for a family site I’d like to set up.
    Why a CMS? Well, for a few simple reasons:

    1. I don’t have enough free time to fiddle with Rails and make my own (I’m an Hobbyist Programmer™: I code for fun and enlightment, not for money)
    2. Even if I had the time, I’m sure there are plenty of CMSes out there which suits my needs.

    It turns out that reason #2 is not really applicable in this case, especially if we restrict the field to Ruby + Rails/Merb/<insert cool DRY framework here>.h3. Rails-powered CMSes

    Name a Rails-powered CMS, quick!

    Easy: Radiant.

    Hmm, no. As much as I do like Radiant, it really cannot be considered a general-purpose CMS, can it? When it comes to build nearly-static sites in a clean and neat way I’d pick it any day, but it lacks quite a lot of community features like comments, ability to create forums, etc. etc. It does, however, support multilingual content in a rudimentary, yet effective way: create each translated page manually and use consistent URL conventions (/en/about, /it/about, etc.).

    I’m not saying that there aren’t enough CMSes built on Rails, just that there’s no “killer app” in the pack. A “killer” CMS would be something as powerful as Drupal, but easier to use and more modular.

    Here’s an incomplete list of the Rails CMSes I’m currently aware of:

    Name First Impressions/Comments
    Radiant Mature, suitable for administering static sites
    Typo Mature, one of the best blogging engines out there (my opinion is slightly biased though)
    Mephisto Mature, blogging engine
    Rubricks Under development, basic features if compared to other non-Rails solutions
    Slate Missing a lot of features if compared to competitors
    Beast Forum engine, extremely ligtweight
    RailFrog Not sure if it’s still being updated, not so many features
    Zena Alpha, looks promising although it doesn’t offer many features
    simplelog Yet another blogging engine. Simple and easy to use
    oooopen rcms Early development stage (dead?), minimal feature set
    Geego Multilingual, not so many out-of-the-box features

    [Psst, if you know any other Rails CMS I missed out, mention it in a comment and I’ll update this table!]

    Developing Proprietary Web Applications with Rails

    What’s wrong with all of these? Normally one of three things: either they are mature, production-ready but focused on only one particular function (blog, forum, etc.), or they are still too new to be used seriously or they are slowly heading towards oblivion.

    What’s going on here? Rails is a damn fine framework which offers all the modularity and power you need to build sites! Why isn’t there a fully fledged CMS to rival Drupal?
    I think that part of the problem is that Rails is too good. Why build a CMS from scratch when you can develop a web site from scratch much more easily, tailored to your customer?

    Rails has been used to build a few “mainstream” sites like Twitter (no bashing please!), Basecamp, GitHub and many more. What do these sites have in common? They are not open source. You cannot deploy your own Twitter on your server (You can with Laconica, though), you cannot deploy your own Basecamp to your server (you can with ProjectPier, an open source fork of ActiveCollab).

    It feels like that even though Rails itself is open source, there aren’t that many open source Rails-powered projects after all. Maybe there are, but they do not really compare with similar alternatives offered in other languages. This is the reason why, despite its utter ugliness, PHP is still the Open Source King of the Web, and that’s very, very sad in my opinion.

    Dreams on Rails

    The annoying thing is that Rails is suitable to build CMSes, and good ones, too! Take Radiant and Typo, for example: they both excel in their own ways, in their own worlds.
    Theorethically speaking, there’s no reason why someone couldn’t develop a modular system to glue different components together: you’d need common user administration and common workflow, a few hooks, and a solid set of conventions on how to build third-party components.
    Hell guys, the folks at Drupal developed a huge (and successful) product with a million different ways to extend it in PHP. Even without using OOP! Every damn hook in the core is a function.

    What does it take to do something like this using Rails, o Merb, or whatever else you like? You already have a very solid and consistent framework to build on (Rails), a way to automate tasks (Rake) and a language which lets you do everything you want, in a very elegant and organized way.

    Rails lacks successful open source projects, in particular CMSes. I wish someone could fix this: not by coding the n^th^ CMS with the only two or three features you need, but by developing an high level application framework to build complex, dynamic and interactive web sites. Don’t even develop the whole damn thing: just come up with a set of conventions on how to extend a very basic core, and tell people how they can contribute, or even integrate existing applications into it.

    The community will do the rest, hopefully… Or maybe are you too busy trying to roll out your newest, closed source startup?

    If someone decides to develop such a powerful, high-level framework and is determined to keep it user-friendly and open source, I hereby promise to write the documentation for it, articles, and books. And I’m not kidding.

    [UPDATED] A Glimpse of Hope

    A few of the commenters of this article brought up a few interesting points and actually gave me a little bit of hope. Luigi Montanez pointed out that Rails was built to help developers build web sites. For now, Rails deployment isn’t as seamless as end users would like it, so there’s no point creating a killer app for such users if they can’t even get it to run on their $2/month shared hosting environment.
    Nevertheless, there seems to be at least three different open source “social network engines” powered by Rails:

    These are not CMSes in the early 2000’s sense, obviously, but they do provide the basis to effectively build a late Web 2.0-ish community web site. Each one of these project seems stable and mature enough to be used in production, but surely not as well-known as many other PHP-based solutions.

    On the other hand, Priit Tamboom mentioned adva cms, a project still in alpha stage which aims to be more traditional and site-agnostic:

    “[…] Different from other Rails applications the all-engines approach of adva cms allows you to build your own applications on top of it. It also makes it very flexible and extensible: our plan is to make it possible to only pick those engines/features that you really need for your application and omit the rest. As they are still all designed to work together seemlessly and reuse each others functionality the whole plattform feels much more consistent to a collection of similar but separate Rails applications. […]”

    This sounds exactly like what I was hoping would come out from the Rails community: something in between a web development framework and an high-level CMS.
    I’m definitely going to try it out (it’s an ideal weekend project) and I’ll report back once I know more about it.

    Legacy Comments

    These comments were imported automatically from an old version of this web site. Scroll down for the newest stuff.

    Matthew Williams

    All the sites you mentioned are “proprietary” because they monetize. A company that releases a product is in the game to make money. GitHub is doing so, Basecamp is very much doing so, Twitter has a ton of funding and will soon be making money one way or another, so why give that up? The fact that you’re expecting sites built with Rails to just expose their source to the world is asking for a little too much.

    Scour http://www.rubyforge.org and find some Open Source projects. There are some really great Open Source projects out there (take a look at http://www.redmine.org/), you just need to look.

    The list of your CMS’s is I think as extensive as it’s going to get for the Rails world. Drupal is a very mature project. I’m sure if you looked at Drupal a few years ago, it was in similar shape as Radiant or Typo. Give it time.

    But again, because the framework is Open Source, it’s asking way too much for any products written with the framework to be Open Source.

    Thank you Matthew. You’re right, RedMine is indeed an interesting open source project, but what I’m trying to say is that Rails developers seems more focused on building something which can “monetize” quickly rather than investing time and energy in complex open source projects.

    I don’t blame them, really! If I were a full-time web developer I’d probably do something similar!

    What I wanted to point out in a rather exaggerated and provocative way is that even if Ruby and Rails are MUCH better organized than PHP and any PHP framework, there are still a lot of complex open source projects (not only Drupal, but take Joomla, Mediawiki, e107, etc.), in particular CMSes, which offer a lot of features.
    The current open source Rails projects are great, and some of them are quite successful (this very blog runs Typo, and I think it’s an awesome blogging engine!), I just wish there were more.

    Maybe is just a matter of time… what’s shocking is that the few “general purpose” CMS either are not doing very well or are just focusing on niches, like blogging.

    There are quite a few reasons there’s no widely adopted open-source Rails CMS:

    1. Rails deployment isn’t as easy as PHP deployment (though Passenger has done much to change that).

    2. You get into Rails because you want to build highly customized (and good) web apps, not implement a standard CMS. PHP CMS frameworks are Good Enough, and they serve the niche of people who want a semi-customize website but don’t want to code it.

    3. Ruby, Rails, and Merb are geared toward developers, while PHP is geared towards people who want to make websites. That’s not a knock on PHP, but it is a significant difference.

    4. CMSes are so early 2000’s. These last few years, social networks have been all the rage (soon to be replaced by mobile apps). I’d point out that there ARE a bunch of out-of-the-box open-source social networking projects for Rails.

    - http://portal.insoshi.com/

    - http://www.communityengine.org/

    - http://lovdbyless.com/

    lowell

    A few things.

    First, about your ‘About’ page. Here in the United States, our IT admins tend to be extremely conservative when it comes to upgrading (regardless of benefit); this is the biggest reason that IE6 is still being used. Reading your ‘About’ page caused me to fire up VMWare Fusion and load this in IE6 – I wasn’t ready to believe that you would go so far as to actively ‘exclude’ those without choice. I placed in exclude in quotes because you claim incompatibility with older browsers, but it isn’t like your blog is on the cutting edge of CSS – I mean, you do claim it to be minimalist, don’t you? In fact, it’s humorous to me that the only ‘incompatibility’ I as able to find is an image transparency issue. Okay, fine, we get it – you develop web apps and you’re cool and know better than many. There’s no need to go out of your way to be an a*s about it.

    As for the Rails app rant, well.. The final product isn’t what we share because all the fun is in building it. We aren’t PHP script junkies that cut and paste random code, you know that. What we do share is arguably much more important => plugins and gems.

    BTW, points for using a Rails app for your blog. :) I can’t count how many similar Rails rants I’ve read on WordPress lol..

    Thanks Luigi for bringing up excellent comments and lowell for… well, bringing up good comments too.

    @Luigi: Indeed, I didn’t know those three, and they look interesting.

    @lowell: I’ll probably change the /about page, alright. Here in Italy, and especially in companies, IE6 is sadly still the way to go so… yes, I know what you mean. I did want to actively lock people out actually, but then I thought a banner would suffice to get the point across: after all, as you pointed out, my site does not break completely in IE6.
    As for using Typo… well, I wouldn’t have dared to say something even slightly unpleasant about Rails from a WordPress blog!

    Have you played with Adva-CMS? http://adva-cms.org (it’s under very active development at the moment, so be warned). It’s a kind of next evolution compared to Radiant. It’s agnostic to what you build. So you can add blog, wiki, forum and your main apps directory is empty for your custom app.

    I wrote about adva at my blog: http://priit.mx.ee/posts/4

    Cheers,
    Priit
    ps. i’m new adva dev, so I might not be very objective :-)

    I see Radiant as a great compromise between writing up your own customized CMS and a full fledged system like Drupal. I’m currently using it for my own website (http://cubiclemuses.com) as well as the ApacheCon websites (http://us.apachecon.com), so it’s really flexible.

    Radiant is not good for member sites with lots of users, but for a basic CMS, it’s pretty nice.

    Hey, take a look at Merb and merb-slices. I think the slices feature has the ability to offer a better foundation for “open source killer apps” than Ruby on Rails. slices are like “mini-apps”. In merb, it’s designed in a way that can be turned on/off/altered really easily. There’s a video on the merbcamp.com website that explains the concept very well.

    @job grades
    Yes! Merb slices seem to be really interesting. All you need now is …more slices and an ad-hoc site to easily distribute them. Add something to automatize download/update/installation and you have a very good foundation indeed.

    I found you via a note at RubyFlow (http://www.rubyflow.com/). Thank you. This post is exactly the sort of thing that I’m interested in at the moment.

    Another good source of general Ruby/Rails information that I’ve newly discovered is “A Fresh Cup: Notes from a Recovered Microsoft addict” (http://afreshcup.com/).

    A recent post there referred in turn to a Rails testing post at Caboose: “We’ve stopped using rSpec…” (http://blog.caboo.se/articles/2008/11/4/we-ve-stopped-using-rspec)

    This turned out to be somewhat relevant to the CMS issue in that in following up on Rails testing options I found Thoughtbot, Inc., which in turn has a product/service called “Widgetfinger” (http://www.widgetfinger.com/).

    Widgetfinger is deliberately limited but might be interesting to some: “The widgetfinger service is ‘Simple content management made for the modern web designer’. The tool was built to solve problems that we saw in our client work, and is meant to manage very basic ‘brochure style’ websites.”

    Component/slice based approach is nothing new. Rails engines has allowed people to do that for years now.

    @Fabio : Maybe you want to check out http://www.opensourcerails.com/

    Comatose is a CMS which can be dropped into an existing Rails app as well. check it out.

    http://wiki.rubyonrails.org/rails/pages/Comatose

    rick

    Pratik: there’s also the desert plugin by the pivotal guys. They used it to build their own in-house platform. There’s also tog, a mish mash of popular plugins providing social network features.

    Just a passing note on zena (http://zenadmin.org). I am biased since I wrote the damn thing, but I must react to your quick description: “Alpha, looks promising although it doesn’t offer many features”.

    I think this CMS has many more features then most top notch CMS out there. Give me a competitor for:

    1. really powerful templating language, editable through the browser with support for ajax.

    2. multi-lingual, versioned content.

    3. custom classes for you content, defined through the browser (no code to write).

    4. powerful image manipulation (automatic resizing/limiting for multiple contexts).

    5. groups based access rights to any item in the CMS.

    6. publication workflow (redaction → proposition → publication).

    7. multi-host (one app, many websites).

    8. context based caching (cache expires when needed, not because a clock says so).

    9. comments (with captcha for anonymous visitors).

    10. import an xhtml template with images ===> you have your initial template.

    11. etc

    And just a note about your idea of a powerful base, with conventions. If you need to extend zena, it si very easy to write your own models (they should inherit from the base class “Node”) with their own validations, versions, special database content, etc.

    Let me know if you would like more details on specific features / needs.

    By the way… I’d love having someone writing tutorials and introductory materials :-).

    @gaspard

    Sorry for sounding a bit harsh with my first description: I actually need to take a (much) closer look at Zena. Let me say that it looks very interesting (I definitely missed some of the features you mentioned!) and I can’t write to try it out properly (I’m just waiting for a week-end and a bit of spare time).

    Here’s a deal: I’ll try it out and write about it, let’s see what happens :-)

    Incidentally, “Zena” is actually the name in dialect of my city (Genoa, Italy)… how did you pick the name?

    “zena” is short for “zen admin” (relaxing, peaceful content management).

    I did not know about the dialect name of Genoa. Nice. A CMS that is somehow related to an important seaport is a step towards openness.

    Let me know if you have any questions or need any help.

    Torsten Becker

    adva-cms is undergoing a lot of development lately with many new features. Please let us know, how your success was with testing adva-cms. Do not hesitate to contact us for any question.

    Don’t forget about wagn!