all repos — h3rald @ 0e7c2c1e3f010871f2018d2016e9fc21410733cf

The sources of https://h3rald.com

content/articles/rails-os-killer-apps.textile

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
----- 
permalink: rails-os-killer-apps
filters_pre: 
- redcloth
title: Rails-powered Open Source Killer Apps, Anyone?
comments: 
- :date: 
  :author: Matthew Williams
  :url: ""
  :id: 371
  :body: |-
    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.
- :date: 
  :author: Fabio Cevasco
  :url: http://www.h3rald.com
  :id: 373
  :body: "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.\n\n\
    I don't blame them, really! If I were a full-time web developer I'd probably do something similar!\n\n\
    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.\n\
    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.\n\n\
    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. "
- :date: 
  :author: Luigi Montanez
  :url: http://salesforceonrails.com
  :id: 376
  :body: |-
    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/
- :date: 
  :author: lowell
  :url: ""
  :id: 383
  :body: |-
    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..
- :date: 
  :author: Fabio Cevasco
  :url: http://www.h3rald.com
  :id: 385
  :body: "Thanks Luigi for bringing up excellent comments and lowell for... well, bringing up good comments too.\r\n\
    \r\n\
    *@Luigi*: Indeed, I didn't know those three, and they look interesting.\r\n\
    \r\n\
    *@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.\r\n\
    As for using Typo... well, I wouldn't have dared to say something even slightly unpleasant about Rails from a WordPress blog! "
- :date: 
  :author: Priit Tamboom
  :url: http://priit.mx.ee
  :id: 389
  :body: |-
    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 <br/>
    ps. i'm new adva dev, so I might not be very objective :-)
- :date: 
  :author: Aaron Farr
  :url: http://www.cubiclemuses.com
  :id: 415
  :body: |-
    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.
- :date: 
  :author: job grades
  :url: http://jobgrades.com
  :id: 416
  :body: 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.
- :date: 
  :author: Fabio Cevasco
  :url: http://www.h3rald.com
  :id: 417
  :body: |-
    @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.
- :date: 
  :author: Dave Sailer
  :url: http://ultralighter.blogspot.com
  :id: 419
  :body: "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.\r\n\
    \r\n\
    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/).\r\n\
    \r\n\
    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)\r\n\
    \r\n\
    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/).\r\n\
    \r\n\
    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.\" "
- :date: 
  :author: Pratik
  :url: http://m.onkey.org
  :id: 420
  :body: |-
    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/
- :date: 
  :author: Tim Kadom
  :url: http://blog.skiptree.com
  :id: 432
  :body: |+
    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
    
- :date: 
  :author: rick
  :url: ""
  :id: 463
  :body: "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."
- :date: 
  :author: gaspard
  :url: http://zenadmin.org
  :id: 752
  :body: "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\xE2\x80\x99t offer many features\".\n\n\
    I think this CMS has many more features then most top notch CMS out there. Give me a competitor for:\n\n\
    1. *really* powerful templating language, editable through the browser with support for ajax.\n\n\
    2. multi-lingual, versioned content.\n\n\
    3. custom classes for you content, defined through the browser (no code to write).\n\n\
    4. powerful image manipulation (automatic resizing/limiting for multiple contexts).\n\n\
    5. groups based access rights to any item in the CMS.\n\n\
    6. publication workflow (redaction -> proposition -> publication).\n\n\
    7. multi-host (one app, many websites).\n\n\
    8. context based caching (cache expires when needed, not because a clock says so).\n\n\
    9. comments (with captcha for anonymous visitors).\n\n\
    10. import an xhtml template with images ===> you have your initial template.\n\n\
    11. etc"
- :date: 
  :author: gaspard
  :url: http://zenadmin.org
  :id: 756
  :body: |-
    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 :-).
- :date: 
  :author: Fabio Cevasco
  :url: http://www.h3rald.com
  :id: 759
  :body: |-
    @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?
- :date: 
  :author: gaspard
  :url: http://zenadmin.org
  :id: 779
  :body: |-
    "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.
- :date: 
  :author: Torsten Becker
  :url: ""
  :id: 2683
  :body: 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.
- :date: 
  :author: Sam Rose
  :url: http://wagn.org
  :id: 2721
  :body: Don't forget about wagn!
date: 2008-11-02 10:41:00 +01:00
tags: 
- rails
- ruby
- writing
- rant
type: article
toc: true
-----
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:

# I don't have enough free time to fiddle with Rails and make my own (I'm an _Hobbyist Programmer(TM)_: I code for fun and enlightment, not for money)
# 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/&lt;insert cool DRY framework here&gt;.h3. Rails-powered CMSes

_Name a Rails-powered CMS, quick!_

Easy: "Radiant":http://radiantcms.org/.

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":http://radiantcms.org/ | Mature, suitable for administering static sites |
| "Typo":http://www.typosphere.org/ | Mature, one of the best blogging engines out there (my opinion is slightly biased though) |
| "Mephisto":http://mephistoblog.com/ | Mature, blogging engine |
| "Rubricks":http://rubricks.org/index_en.html | Under development, basic features if compared to other non-Rails solutions |
| "Slate":http://slateinfo.blogs.wvu.edu/ | Missing a lot of features if compared to competitors |
| "Beast":http://beast.caboo.se | Forum engine, extremely ligtweight |
| "RailFrog":http://www.railfrog.com/ | Not sure if it's still being updated, not so many features |
| "Zena":http://zenadmin.org/en | Alpha, looks promising although it doesn't offer many features |
| "simplelog":http://simplelog.net/ | Yet another blogging engine. Simple and easy to use |
| "oooopen rcms":http://rcms.oopen.de/ | Early development stage (dead?), minimal feature set |
| "Geego":http://www.geegocms.com/ | 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!]_

h3. 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":http://laconi.ca/trac/, though), you cannot deploy your own Basecamp to your server (you can with "ProjectPier":http://www.projectpier.org/, an open source fork of "ActiveCollab":http://www.activecollab.com/).

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.

h3. 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.

h3. [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":http://salesforceonrails.com/ 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:

* "Insoshi":http://portal.insoshi.com/
* "Community Engine":http://www.communityengine.org/
* "Lovd By Less":http://lovdbyless.com/

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":http://priit.mx.ee/ mentioned "adva cms":http://adva-cms.org/, a project still in alpha stage which aims to be more traditional and site-agnostic:

<blockquote>
"[...] 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. [...]"
</blockquote>

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.