3 ms·
Ask HN: how did you decide upon a web application framework?
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.
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!)
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.
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.
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?
Thanks!
- anderspetersson 15y agoA 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 15y agoCheck out various scala frameworks :) Also there are some pretty sophisticated PHP frameworks out there for less experienced developers.
- mnazim 15y agoI 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.
- techn_in 15y agoThe two web frameworks I would most likely look into if RoR didn't exist would probably be Lift (http://liftweb.net http://liftweb.net) which uses scala, or node.js (which uses javascript.) Node.js has actually been on a rise (relatively) in terms of popularity. Your stack might look something like: - express or railway for your framework (expressjs.com and railwayjs.com) - now for client/server communication (nowjs.com) - cradle or mongoose for ORM abstraction (http://cloudhead.io/cradle http://cloudhead.io/cradle and https://github.com/LearnBoost/mongoose https://github.com/LearnBoost/mongoose) - backbone for light MVC if using express (http://documentcloud.github.com/backbone http://documentcloud.github.com/backbone) - can't forget underscore (http://documentcloud.github.com/underscore http://documentcloud.github.com/underscore) What's actually gotten me most excited about node.js is the recent announcement of ClojureScript (https://github.com/clojure/clojurescript https://github.com/clojure/clojurescript). Check out posts like these if you're wondering exactly why that's awesome: http://brianmckenna.org/blog/cps_transform_js http://brianmckenna.org/blog/cps_transform_js It's basically a clojure -> javascript compiler, which is _really_ cool 'cause clojure is really an awesome language ^^
- mindcrime 15y agoIf 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 http://www.grails.org I'm using Groovy and Grails for the stuff I'm working on right now ,and really loving it.
- mnazim 15y agoPython 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/ 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/ 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 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.
- pdebruic 15y agoI thought Microsoft's BizSpark program was designed just for you. http://www.microsoft.com/bizspark/About/Default.aspx http://www.microsoft.com/bizspark/About/Default.aspx