Rails or Django for web app development.
Lets pretend you are writing online bank software and your set of tools are the king in the arena. You are converting a J2EE or .NET application and moving everything to rails or django. Which one do you choose?
And you have a team of about 20 people which may grow to 50. You J2EE application was 2 million lines of code that is 5-6 years old. Will django or rails welcome the change?
Rails still seems like it is designed for quick (small) to medium-sized projects that take a couple of months, to half-a-year to develop (PHP like development for 2007+). Django seems like a more mature product for larger sites. Language wise, python or ruby are powerful enough for the task.
Used rails but not django.
Never used Django, so I have no idea how well it scales. How it handles clustering, or caching to speed things up, or how to use Apache to serve up static things like images.
But I know Rails can do all that.
June 1st, 2007 5:42pm
Well... you could just move from the (I presume) god-awful raw bits-of-raw-sql-stuck-in-code and println("<table>") J2EE you have, to pretty & clean Spring/Hibernate J2EE.
Less pain, might also be better in the long run. I've been told RoR stops being easy when you move beyond CRUD apps.
June 1st, 2007 5:44pm
Well, that's when it becomes actual programming, the same point at which all frameworks stop being "easy".
June 1st, 2007 5:46pm
Doesnt seem to have a large amount of stuff for middleware development and focuses more on the view side of things (eg, the ajax and the simple view setup).
Spring, Struts, Hibernate, Wicket are good but J2EE is still heavy. You cant shake the application.xml or the web.xml or the config files. Cant shake the crap java language.
(botlist in the link below is developed with spring, hibernate, jruby)
There is a rapidly growing library of gems for ruby and plugins for rails you might want to peruse, but you're probably aware of them already.
June 1st, 2007 5:54pm
Is there a *reason* to convert from Java? Or has someone just got some money and they'd like to spend it?
June 1st, 2007 5:59pm
Someone wants to prove Joel wrong.
June 1st, 2007 6:00pm
"Hey, it's June. Summer's almost here! Hm. What should I get those coder boys doing while I work on my golf game? I know! Let's rewrite the website in ... ummm.... [throws dart at dartboard 'o technologies] Django!"
June 1st, 2007 6:02pm
> println("<table>") J2EE y
>to pretty & clean Spring/Hibernate J2EE.
Does spring/hiberate have tools for creating html/css layout? If not, what do people use?
June 1st, 2007 6:15pm
June 1st, 2007 6:36pm
To move such a large project over to any new framework is simply insane. Pick small new feature and see how it goes. Or better yet figure out how to make your existing framework better. There's no magic in either of your choices.
son of parnas
June 1st, 2007 6:37pm
I am not saying that. I was trying to give a hypothetical.
June 2nd, 2007 8:56am
June 2nd, 2007 10:55am
catalyst: "I's in yur mixture, makin' kemical reakshuns!"
June 2nd, 2007 11:41am
Not everything that has been written about Python / Ruby against Java (including stuff that I have written myself in the past) holds true in the face of medium to large projects (> 100 kloc).
Here is a counter-example: We had a 300 kloc application written in Python/Zope ( http://www.cps-project.org/
). We have rewritten into a 150 kloc Java EE application ( http://www.nuxeo.org/
) leveraging existing Java EE libraries and frameworks (Jackrabbit, JBoss Seam, Hibernate...). We have more unit tests than we had before, and we can leverage static code analysis tools (the Java compiler, IDEA, Checkstyle, FindBugs, TPTP...) to ensure higher code quality.
Duh! Using perl, you can write the whole project in just 1 LoC q:
Some good hypothetical questions to ask in this hypothetical situation:
Does anyone on the team already have good working knowledge of Ruby or Python standard libraries, third-party ecosystem, etc?
How willing are team members to adapt to a dynamic language and not just straight port Java code without wondering whether the target language could express the same intent in a more effective way?
Do you have the ability and willingness to make any necessary infrastructure changes?
What assumptions from Java need to be thrown out or reconsidered when transitioning?
That's just for starters, but hopefully it's an indication of a more productive line of questioning for choosing a framework (and remember that there are more things out there than just Rails and Django - Ruby and Python both have a variety of frameworks available).
Disclaimer: I stole this from James Bennett http://www.b-list.org/