

Ask HN: What framework should I learn  - jmuir

Ive been developing in C# and .NET MVC for the past few years and am looking for open source alternative. I have dabbled in php based framworks (mostly drupal and cake) but keep hearing about other frameworks such as rails and django and was wondering if there is anything out there that might have less of learning curve given my current background?
======
madhouse
I'd suggest django, based on my experience.

About a year or so ago, I was looking for a framework, and narrowed my
possibilities down to Catalyst (perl), Django (python) and Rails (ruby).

I was a perl guy, so ruled out Catalyst, as I wanted to learn a new language
aswell, so Rails and Django was the two I had a look at.

Both had extensive documentation, I didn't know either language (though, I did
dabble into python before, but that was mostly bugfixing some GUI apps, where
I knew the toolking from another language anyway).

In the end, after playing with each for about a week, I went with Django,
because the ORM seemed much friendlier, and I didn't really like how I'd have
to install a bunch of gems if I wanted to play with the bleeding edge rails.
Gems, which weren't packaged by my distribution..

With Django, however, I could just check it out from SVN, and that was that.
Much easier.

While I understand that this is a non-issue for production apps, where one
would bundle all the stuff with the application, when I want to play and learn
something, I very much prefer that it works with stuff that my distribution
has available. Or at least, there's very little extra I need to install.

As for the learning curve: it took me about two hours to start work on the
project I wanted to do (with Django, it was a bit longer with Rails), and I
didn't know neither the framework, nor the language all that well before that.

------
zeemonkee
My current favourite for quick prototyping is Flask. A minimal Flask app is
just a few lines of Python, plus some sensible defaults, which is great when
you just want to throw something up quickly as proof of concept. There's a set
of handy extensions when you need to do more, such as ORM stuff.

It's also pretty easy to integrate with the Google App Engine, which I
personally don't like (I mean, Python 2.5 ? It's nearly 2011 already !) but
has its uses.

For larger projects (especially client-related) it's definitely Django, just
for the number of features out of the box (such as the admin). If you're just
starting in Python you might find Flask (or similar micro-frameworks such as
Bottle or web.py) easier to get started with, as there's quite a learning
curve with Django before you really get to know the framework and it's better
(though not required) to have a good grasp of Python first.

It's been bread and butter for me for the past couple of years though and I'd
definitely recommend it for "serious" work.

If you're used to C# and want something a bit more familiar (i.e. Java) Play
is quite interesting and quite unlike the typical over-engineered Java
framework.

Outside of Python, for something more esoteric, I'm starting to get into
Clojure and the Compojure/Ring stack - I love the concepts, but my mind isn't
quite in functional mode yet.

~~~
jmuir
Thank you. I had never heard of Flask and Play until now. Play definitely
looks like something that I could pick up.

------
swombat
Rails is easy to pick up and well documented. Python is not too hard either.
Give each an hour of your time, then choose the one which you like best.

Alternatively, if you want to go more bleeding edge, have a look at node.js,
it's the hot potato at the moment.

------
mootothemax
If you're open to anything and everything, give Google's App Engine a try.
Their Python implementation is pretty quick and easy to pick up, and you can't
beat the free price of hosting :)

