Crashing the Train
Let me start off by saying the project I work on suffers some major flaws from lack of any testing framework to a lack of any design structure at all. For the past few weeks, I’ve been tasked to research our options and find a framework that fits our particular project.
I searched long and hard and there isn’t any doubt in my mind that Ruby on Rails is the best framework available right now and it fits our project perfectly. There’s just one hangup for the team: Ruby. Most people haven’t even heard of Ruby (head in the clouds or they just aren’t web developers). Today in the morning, the boss told me we were going with Rails. The word spred quickly and within minutes he was hounded with objections. The Java kiddies don’t want to learn a new language and want to have Java on the resume. Other folks would prefer C# to Java. And everyone else, I’m not sure they know enough about web development to really make a good arguement one way or another.
I was tasked to find the best framework for our environment and I did. Later in the day, I was told we were going with Java due to popular demand. Basically the Java guys threw a fit and said they’d quit because it won’t benefit them to put Ruby on Rails in their resume. I say screw them. The direction of the project shouldn’t be determined because of what someone want’s to put on their resume. It should be determined based on facts and the facts are that Ruby on Rails (RoR) is hands down the best framework. There really isn’t any argueing that. What people are argueing is that Ruby isn’t popular so we shouldn’t use it.
Corey mentioned that we could still benefit from the power of a scripting language and use a Java framework. He was talking about Jython or JRuby. Since the Ruby ship has apparently sailed, Jython is looking better and better. Alex Greif has a blog post about using Spring as the framework using Jython for the controller actions. Thomas Risberg talks about something very similar in his blog. Let’s take that one step further and integrate Jython into Velocity as mentioned by Jason R. Briggs. This essentially takes Java out of the picture as far as development is concerned. Combining these two approaches will allow us to use a Python for both the view and the controller. Of course there’s still going to be all those XML files to deal with but I suppose we’ll have to live with it.
I tried to slowly introduce Ruby to members of the team but when I did they just seem dumb founded at where to begin and didn’t really even seem to put much effort into learning something new. I think the Python approach might be an easier sell to the bosses since they’re Python programmers and the Java guys are going to have to learn a new language and develop with it whether they like it or not. Good developers shouldn’t be affraid to learn new things and those that are certainly shouldn’t have an influence on major decisions. I’m no expert at Ruby on Rails (RoR). I only looked at it seriously for about two weeks but I certainly feel confident enough that I can go build whatever I need to with it. In fact, I already had a prototype for our project built in Rails which I did in two days. It’s practically fully functional.
In the end, the decision needs to be concrete by this Friday. The funniest thing is that I’m tasked to fix up the trade study document justifying our position. I wonder how that’s going to look in the end? I’ll try to post an update as to our direction next week when all is said and done.

September 14th, 2005 at 5:32 am
A bit late now, but have you come across django?
http://www.djangoproject.com/
Worth looking at if you’ve gone down the Python track.
September 14th, 2005 at 6:30 am
The ball is pretty much moving along the Java track I outlined in this entry. Mostly due to the blog entires integrating it with Jython. That makes me think that Python was the more important deciding factor which means Django may float. I’ll mention Django to the boss man but there’s some issues I see right away that are going to be sticky.
I’ve noticed that industry folks seem to point out version numbers frequently as if it’s a sign of maturity or stability. I routinely point out the fact that Mozilla Firefox was on release 0.7 or 0.8 and was pretty much 100% functional and stable. The point remains though that the Django project acknowledges that they aren’t officially released and it’s going to raise flags for some folks. I should also point out also that Windows was at version 95 and was a pile of unreliable crap.
The second thing that concerns some people on the project is that we have a very long contract, 12 years. They want to know that the community behind a framework isn’t going to disappear in a year or two. For me, I think that arguement is worthless. I don’t think we should build this thing once and forget about it for another 10 years. It should be rewritten many times over the course of the project and we’re undoubtedly going to switch frameworks along the way. However, there are those among the team who feel that simply having the name Java behind the framework makes it long lived and industrial strength.
Thanks for the link though. I’ll take a better look at it and pass it around the team.
November 1st, 2005 at 5:48 pm
Oddly, I found that I was able to learn Rails without having to learn Ruby. Or at least not very much Ruby at first. I was quite productive, and only had to look up how to do a few things in Ruby. Perhaps it’s because it’s so close to Python and PHP/Perl, and I know a lot of different programming languages.
But my recommendation for anyone wanting to learn Rails is to NOT bother to learn Ruby first. You’ll pick up enough of it as you go. For me, reading the appendix of the Agile Programming with Rails book was enough for 95% of what I wanted to do.