

Ask HN: how did you decide upon a web application framework? - BadassFractal

I'm at a crossroads right now where I need to decide upon what web framework my project is going to be using for likely the rest of its existence.<p>Most of my professional experience relied on WinServer/IIS/.NET/ASP/WCF/SOAP/Silverlight technologies, but it was all software I didn't have to pay a dime for, as the licensing was taken care of by the powers that be. Now that I have to pay out of pocket for everything, I realize that I would much rather rely entirely on open source solutions. Also it's obviously quite good for me to get out of the MS ecosystem and explore other possibilities (mind was totally blown by NoSQL for example when I tried it for the first time!)<p>There are quite a few popular options out there, and the team originally started with Java (as a few developers were more or less green and that felt like the simplest route) but after a while I realized I didn't very much enjoy using that language, maven, Spring and a lot of the other technologies we were using.<p>I started playing around with Rails and I immediately loved the opinionated architecture, the expectation of using git, the ease (and rapidity of development) and the availability of great supporting services such as Heroku. I think I'd very much enjoy working with it long term, but I'm concerned it might be a bit rough for our less seasoned developers who might be scared by MVC and the Ruby syntax.<p>What are the options out there that are a solid alternative to RoR (I've read the wikipedia article, I swear :)) that have been getting as much support in the past years? I want to make sure that I don't take the choice of technology too lightly and that I think this step through from all the angles! What have you chosen for your project, and why? Why did you feel the alternatives weren't as good of a fit?<p>Thanks!
======
mnazim
Python is another language not very different from Ruby. Check it out and if
you like what you see, below are the python specific answers(IMO and far from
complete) to your question.

    
    
      > What are the options out there that are a solid alternative to RoR?
    

First three frameworks that pop up in my head without thinking too much are:

 _Flask -<http://flask.pocoo.org/> _

Flask is a nice _micro-framework_ for quickly getting up and running with
simple web applications. It is easy to understand. But do not get mislead by
the word _"micro"_ ; it is an amazing piece of software and can be used to
build real web applications. Great for building APIs.

Why Flask: Strong architecture design, easy to use, actively developed by
amazingly smart people.

 _Django -<http://djangoproject.com/> _

Django is a high-level Python Web framework that encourages rapid development
and clean, pragmatic design. Development with Django is a breeze. Most common
backend stuff in web development can be done with a few lines of code. Django
is a full stack framework which comes bundled with its own ORM, template
language, URL dispatching and lot of middlewares, libraries and utilities.

Why Django: Actually usable autogenerated admin interface, genric views(create
stuff with zero code(sorta)) active development, insanely fast development
cycles, good design, huge community of very smart and well respected people in
python community.

 _Pyramid -<http://pylonsproject.org/projects/pyramid/about> _

Pyramid is a very general open source Python web framework. While Pyramid does
not provide its own ORM, template languages, URL etc. It glues together
already developed, high quality and functionally solid python packages for the
those tasks. This comes at a cost though. You will actually need to do a bit
more setup/coding. This is intentional and not accidental. People tend to
choose Pyramid when they want very tight control of application architecture,
which one has to trade-off in case of frameworks like Django and Flask.

Why Pyramid: Build the app the way you want and not the way framework wants,
strong community, developed by incredibly smart and well respected people in
the python community.

PS: Assuming your team members are not new to programming, your concerns about
syntax etc. might most likely be misplaced. Most important question here is
"Is the team willing to learn and experiment with new things?" If yes, then
such concerns will vanish as soon as the your team implements a very simple
app as a learning exercise. My favorite _code2learn_ app is a simple private
messages system app as found on many social networks. It is simple and easy to
understand so any moderately experienced web developer should be able to
implement in a day or two.

\- God speed.

------
mindcrime
If you like the Rails approach, but you have a Java background, or are working
with people who have done Java before, you could do worse than Groovy on
Grails. Grails is an opinionated / convention-over-configuration framework
that was inspired by Rails, and Groovy is a dynamic language that runs on the
JVM, and has a syntax that is _almost_ a superset of Java. It's a very easy
transition for Java folks to Groovy and Grails, but the environment is - in my
experience - radically more productive than traditional Java web development
environments.

<http://www.grails.org>

I'm using Groovy and Grails for the stuff I'm working on right now ,and really
loving it.

------
pdebruic
I thought Microsoft's BizSpark program was designed just for you.

<http://www.microsoft.com/bizspark/About/Default.aspx>

------
anderspetersson
A good alternative to RoR is definitely Django. It's written in Python, witch,
according to me, has a much cleaner syntax than Ruby. I switched from a
ASP3.0/ASP.NET MVC background to Django 2 years ago when I got tired of the
licensing cost for Windows machines. I Wanted to learn a new language, luckily
we had a Python class at university and I'm stuck ever since.

------
matthewslotkin
Check out various scala frameworks :) Also there are some pretty sophisticated
PHP frameworks out there for less experienced developers.

~~~
mnazim
I think, for theless experienced(read just starting out) developers,
understanding a framework like Symfony2 will be the as complicated as any
other framework in any other language.

Trust me, I have seen "senior developers" with years of experience doing HTML-
PHP spaghetti style coding(and nothing else) going bonkers when asked to do
something in a framework as simple as CodeIgniter - let alone more complex
systems like Symfony2 or Drupal.

