I like Ruby on Rails a lot. It’s a pretty awesome web development frameworrk and it’s generated a serious amount of buzz for its young age (just over a year). One major milestone that’s ahead for the language will be a 1.0 release that among other things promises to deliver more API stability than there has been with more recent releases (as well as freeing developers and writers from creating code that’s partially outmoded on arrival). Will that mean though that the big development work for Rails will be done? Hardly. If Rails is really to succeed as a development platform, I believe it can only happen if the distribution problems are solved. And Rails 1.0 seems to be a necessary precursor to that.
I like to think with web application frameworks there are 3 Ds that are important for the platform to succeed:
- Development – how easy is it to develop?
- Deployment – how easy is it to place on your own servers and systems?
- Distribution – how easy is it for third-party users to deploy on their servers?
I think Rails has done very well in the first case. In the second case, I think tools like Switch Tower will help to make the second problem as nice as the first. But I think the third problem is the most problematic in Rails right now. Essentially, there are no nice and standard ways for developers to package up their Rails-developed programs for other users to easily install (without Rails experience).
Let me give a concrete example here. As you may know, I recently switched this blog from WordPress (a PHP-based service) to Typo (a Rails-based service). I currently am hosting on Textdrive, which is rare among hosting providers in that it supports the latest Rails versions, so at least I did not have to fight with my ISP to get Rails as an option. But even then, I must admit that WordPress’ setup was a dream to use, and not knowing a lick of PHP, I was able to get a blog up, installed, and running in no time. In contrast, I do have some knowledge of Rails, but Typo was definitely harder. For starters, I had to manually create tables in a MySQL database by running a MySQL file to create the tables (good thing I didn’t use one of the more obscure adapters like MS SQL that didn’t have a manually written schema file for them). I had to go an edit the database.yml config file manually in a shell (not confugured via an install script) Importing the data from WordPress was a bit difficult too, and I had to fix the import script. Finally, I discovered that I have actually been dispatching Rails methods with the FastCGI dispatcher, even though I’m not using it currently. So, my blog went down over the weekend and I didn’t know. Not good.
This is not to trash Typo, which is a truly excellent product. Nor is it to condemn Rails, which is still too young to even explore a thorough solution to the distribution problem yet. But I think if we start thinking about the future of Rails, the distribution problem is important, because without easy distribution, Rails will be doomed by the network effect. What do I mean by that?
There are a lot of PHP developers out there these days, far more than develop for Rails, Django, Seaside or some of the other frameworks out there. Why? Is PHP a better framework? Arguably no. But is PHP in a whole lot of publicly deployed web products, like WordPress? Or more wikis than you can shake a stick at? Yes. This in turn leads to more people thinking of developing in that language, books being written, etc. which accelerates adoption of PHP even further. The network effect.
I think 37 Signals, Robot Coop and such have done a lot to advance Rails over the last few years. But ultimately, I think it’ll do more to sell their particular style of visual design than Rails as a development platform. Sure, there are people making custom solutions from scratch that might be wowed by the backend magic that makes it all happen. But I think there’s a bigger pool of programmers who might find themselves having to setup a quick Wiki for their intranet or such? Given the choice, how many of them will write a system from scratch in Rails? And how many of them will just grab an existing PHP-based solution? And once they’ve done the latter, how likely is it they’ll look at Rails ever again? The best way for Rails to grow is for there to be many Rails apps to choose from. And to get there, Rails needs to make distribution as easy as development.
(I hope to follow up on this in a few days with some further observations and ideas.)