ASKHN: Django OR Rails
Its not the another language debate, its a decision making discussion.
I am a ASP.NET developer, but want to learn other frameworks/language (open source). I don't know from where i should start and why? Django and Rails both seems promising, but i am confused which one i should choose to start, or i should choose some other framework. I know learning the language (python or ruby) is must before start Django or Rails.
Please advise.
14 comments
[ 2.9 ms ] story [ 38.1 ms ] threadThere are other interesting systems, but I think looking at the two "big dogs" of the open source framework world is always a good start. Let's leave Nitrogen, Compojure and Hunchentoot for later…
Honestly when it comes down to productivity there isn't much to be gained from using one over the other.
I guess one thing that is in Djangos favour are the free out of the box Admin screens which are truly awesome.
Another thing to consider is what your goals are here. Is this just learning for learning's sake, or is there a project you have in mind that you want to build/prototype? In my experience the differences between Django & RoR are minor, but your end goals obviously will also help guide you toward one framework over the other.
2. Free hosting on Google App Engine (note: to Heroku proponents 5Mb storage is a joke)
3. Python is extensible in a way ruby isnt, even OpenCV has a python port
Finally ruby is more popular with hip programmer crowd (HN reading, Latte sipping, Apple fanbois, with no CS degrees )
While Python is more popular with "gets work done", Googler's and Advanced CS degree holders (E.g. nearly all top CS departments prefer Python after C++ and maybe java), you would be lucky if you found someone using Ruby. If you dont believe me, here is State Of Art OSS in Machine Learning http://mloss.org/software/search/?searchterm=python&post...
Finally Since you are from ASP.NET background, have a look at SCALA it seems to be a nice language and its based on JVM. And twitter started using it after running in issues with Ruby. (Another reason why Ruby should be avoided, consider that python was used for Youtube)
http://flask.pocoo.org/
It's a lightweight framework on Python. The author is using it to explore the basics of building a famework.
I'm a little over a year into using Django now, but what I've learned is heavily biased towards getting something out the door versus learning the fundamentals. Because of this, I've started looking into Flask so I can gain deeper knowledge.
Being a python developer I'm obviously biased towards Django. So I'll name the reasons why I think it's better than Rails: 1. Python has a larger community and better libraries.
2. The zen of python says "there should be one and preferably only one obvious way to do it", Ruby has the totally opposite philosophy inherited from Perl. But I guess some people see it as a positive side.
3. Deployment options for ruby/rails applications are catastrophic. I've never come across one method that doesn't leak memory.
4. Django's approach to MVC is far more flexible and natural than the traditional approach in rails, although that may not be obvious at first if you come from another similar MVC framework.
Anyway, the wise choice would be to try both and see what pleases you best.
As others have said, try some tutorials for each to get a feel.
Django Tutorial: http://docs.djangoproject.com/en/1.2/
Rails Guides: http://guides.rails.info/getting_started.html
The soon to be released Rails 3 looks excellent, so I would personally use that over Django 1.2.
Also, the Rails community is a bit more organized as everyone uses GitHub, so there are some fantastic and well maintained gems that can help you speed through your development.
Rails Resources:
http://ruby5.envylabs.com/ - Great podcast discussing recent developments in the Ruby/Rails community.
http://ruby-toolbox.com/ - Overview of gems by category. Great to figure out what people are using for pagination or search or whatever.
http://railscasts.com/ - Screencasts covering new gems and Rails features.
http://railsconf.blip.tv - Videos from the latest RailsConf, if you want to get a feel for the community.
Django Resources:
http://djangodose.com/ - Good Django podcasts. There is one for the community stuff, and one for the newest features of Django trunk.
http://djangocon.blip.tv/ - DjangoCon, check it out for the same reasons as RailsConf.
In short, python is clean and very pragmatic, while ruby is nice and different. ^_^
Personally I think RoR3 is going very fast toward becoming a new J2EE - at least being equally popular and bloated. ^_^
Edit: Anyone care to explain the downvoting? I'm not whining; I'm just genuinely curious. I thought my post was fairly informative, and I tried to give love to both Django and Rails. I had problems going from C# Webforms to Rails, partly because I was a noob, partly because I was trying to learn a new framework (Rails), a new language (Ruby, which is very different from C#), and partly because Ruby and Rails both have some configuration issues on Windows. It's nothing you can't overcome, but added all together it made for a very steep entry to becoming a Rails developer. The OP sounded like he was coming from a very similar situation to me.
Most of the complaints I had about Rails have been addressed by the upcoming Rails 3. If you're learning Rails for fun, you might as well start using the Rails 3 beta since there are tons of new goodies in it.
Network effects are very important for these kind of things, so I'd recommend checking out local user groups for both languages/frameworks to see where you'd fit in best. It seems a good deal more people in my town (Portland, OR) are familiar with Rails than Django. Anecdotally, while there are more Ruby/Rails developers around, their average proficiency is lower than Python/Django devs. Also, the culture surrounding each framework has a different vibe.
I don't want to draw too many generalizations, but in my personal view differences in culture do exist. Getting to know other developers who use both tools should be an important part of picking which language/framework to use.
Or, learn to use both. It'll be good for you. Knowing the strengths and weaknesses of each language will make you a better developer, and reduce the chance of you becoming an--excuse the term--ignorant zealot.