Over a million developers have joined DZone.

I Beat Ruby on Rails by 6 Months

DZone 's Guide to

I Beat Ruby on Rails by 6 Months

· ·
Free Resource
Waay back in 2003, I got tired of writing the same boilerplate crud apps and longed for a "better way to do things" so I wrote a rapid development framework called thrust. It used turbine, velocity, and torque to build an entire web application scaffold from an xml database schema definition. I look at the code now and kinda chuckle and shake my head, but something I realized is that it predates the public release of ruby on rails by a good six months. Moreover it predates the closest allegory I can find in the java space (Spring Roo) by a good 6-7 years! I'm not just tooting my own horn, because I remember talking to other people who all said things like "we should just use conventions" and "this stuff is just boilerplate, why don't we generate/template it?", but it seems like most folks just built internal-only proprietary solutions. Couple of lessons/observations: #1 promotion is everything... rails languished in relative obscurity until some folks started evangalizing it. My solution died on the vine as I moved on to bigger and better things. #2 Timing is important, but not MOST important. Being first can be an advantage or a liablilty. Grails got to learn from rails and avoid some of the wonkiness (for example). #3 Some times it's good to go back and look at what you've done for inspiration. I had forgotten about velocity templates...which are pretty useful. I also didn't realize that Maven (arrgh) originated form the Turbine project (which is what my framework was built upon). #4 Great ideas seem to burst on the market in a short period of time and one or two solutions seem to end up dominating. It seems that tech trends infect large numbers of developers simultaneously and then go away.

Source:  http://mikemainguy.blogspot.com/2011/11/i-beat-ruby-on-rails-by-6-months.html

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}