top | item 1431602

ASKHN: Django OR Rails

11 points| maheshs | 16 years ago | reply

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.

13 comments

order
[+] michael_scheibe|16 years ago|reply
I've worked with Rails and Django and they are both excellent choices.

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.

[+] huwshimi|16 years ago|reply
One thing to note with Django is that its documentation is excellent. It is often held up as a model for how good open source documentation can be.
[+] stephenjudkins|16 years ago|reply
They're both great frameworks.

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.

[+] AENGINE|16 years ago|reply
Django Why: 1. Uses Python

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)

[+] oomkiller|16 years ago|reply
Both are good. I don't have a whole lot of experience with Django, but the little that I did use it, I liked Rails better. It seems to me like the community is much larger and there are more plugins, gems etc. (This may just be a skewed perception though)
[+] alanthonyc|16 years ago|reply
If you're truly looking to learn about frameworks, I would suggest checking out Flask.

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.

[+] boyter|16 years ago|reply
Id say go with the language you prefer. If you fancy yourself a Pythonista then go with Django. If you prefer Ruby syntax then go with Rails. Both languages are different to C#, or VB.NET which is where you are probably coming from so dip into each and follow the path of least resistance.

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.

[+] robosox|16 years ago|reply
Yes. The way you've posed the question is slightly backwards to me. Sit down and take a crack at learning both Python and Ruby first. Whichever language you prefer will obviously guide you toward which framework to use.

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.

[+] mhd|16 years ago|reply
Both are very good options. Sooner or later I'd recommend looking at both of them. Preferably sooner, although you might just skip over most of it. Read their relevant "Getting started" tutorials (and/or screencasts), and just follow your hunch about language and its use.

There 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…

[+] fr0man|16 years ago|reply
You might want to work through some ASP.NET MVC tutorials using your language of choice before jumping into Django or Rails. That will give you an easier entry point to learning MVC (which is quite different conceptually from ASP.NET Webforms). Then you can read through some language tutorials and decide whether you prefer Ruby or Python. ASP.NET MVC is nearly identical to Rails minus ActiveRecord, so you could easily jump from there to Rails development. Though if you're going to be developing on a Windows box, Django is much more of a first class citizen there than Rails. I also had a ton of deployment problems trying to deploy Rails to a Windows server. Just a tip: no matter where you dev, don't try deploying to a Windows Server machine unless you have to. Linux plays much more nicely with both Django and Rails.

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.

[+] tobiassteele|16 years ago|reply
I've been starting with Sinatra instead of Rails, but the documentation is sparser, and I'm hitting unnecessary walls (is there a Sinatra-simple way to upload a file sans database?) without finding resources/people who can help.
[+] c00p3r|16 years ago|reply
Take a look at Sinatra (http://www.sinatrarb.com), and Haml (http://haml-lang.com/) If you will feel that you like this "descriptive" approach (Ruby is great for creating DSLs), then you probably will like RoR also.

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. ^_^