let’s start with the most vocal
RoR or Ruby on Rails… as much as i love ruby, as much as i find rails a piece of shit and it’s fanatic vocalist ridiculous. why : slow, pms’y (as in opinionated), memory hog, crappy integration with webserver, it’s magic feature ORM/active record is now available anywhere else. so yeah RoR needs a quad core 8Gb RAM application server to run a prototype and it really doesn’t run unless you call an insecure yet slow memory hog that you have to keep on killing and restarting a framework. it’s a pity that a beautiful language like ruby is tainted by a thing like rails. if you need the beautiful syntax use python and django, not sure how’s zope doing now but it used to be a serious guy 10+ years ago.
Django/Python : beautiful, alot of magic (so ymmv) need wsgi which is a stupid piece of shit as well, but if you get it on a full server you should have something close to a good opinionated framework.
Pyramid/Python : this stuff is just pure perfection. I won’t say anything more.
Webob, routes, mako / Python : loosely coupled stack that’s very close to Pyramid and you’ve got full control here, the advantage is clear your in power, disadvantage is all the wiring, deployment etc. nevertheless with wtforms, mongokit, gevent this becomes something on steroid better than node.js and all the hype stuff.
Perl : in the old days there was CGI, today I really don’t know. I wouldn’t recommend it anyway.
Lua : a beautiful language I use alot, no web framework for it per se, i’ve seen clever implementation dating 3 and 4 years ago and they probably could get you going far, check nanoki or other smart stuff coded by smart people, if you don’t want to get your hands dirty coding internals and want the heavy lifting mostly set up for you, avoid lua for now.
Seaside/Smalltalk : very beautiful but doesn’t power real life scenarios and no data persistence without extreme headache. If you have time to spare this could be a hobbyist framework, nothing more.
Lift/Scala : this thing revolutionized webframeworks and helped shut up the rails cyber parasites once and for all. Scala is lovely, Lift is a solid contender except I really hate the syntax and especially the class naming that resemble java, for that and for the not so trivial deployment (servlet, containers and all the java crap…) i’d only recommend it for entreprise development, forget rapid prototyping etc. also keep in mind that you’ll need tons of closure to serialize forms input in case you have a horizontal deployment (really messy).
Tons of so called frameworks/PHP : first anything that’s PHP and not OOP got to be burned. Only after that, PHP becomes the defacto language of dynamic server generated html pages that it always have been full stop. The problem with php is the quality of so called php apps that are around including the most popular ugly piece of software online today that’s Wordpress. From PHP 5, OOP is here, PHP 5.3 we even get closures, lambdas etc. and in 5.4 traits are here so this makes PHP a capable guy on par with Python, Ruby etc. in addition it’s faster than both of those two and when used with APC is quiet unbeatable (facebook uses what?) and in addition to that PHP deployment is a breeze, you can’t get tighter to a webserver. So PHP is brave, it’s syntax is quiet shitty nevertheless and for frameworks well you have the choice to go Zend for “entreprisy” as they’ve got everything covered and it’s just too much code covering everything stupid, or you can go clever even very clever
i personnaly recommend only 2 contenders here: the trusted one : Kohana (ko3) beautiful, rigid, secure, verbose and just rock solid. the challenger: Lithium (li3) a piece of innovation, something clever, decoupled on purpose, very tolerant, fluid as in many things.
both require dedication reading the source files because of poor documentation, lithium is my favourite today in the php world, it comes nevertheless with some shortings
-no relationship for mongodb (you have to hard code all business logic and make sure to enforce it and that requires a great level of model design and solid OOP background to nail it clean and DRY)
-very opinionated when it comes to Databases and Datasources, you sometime will wish to bypass the wrappers altogether (but then what’s the point of using a framework?)
-the same old problem with PHP, verbose templating. Lithium’s helper functions are either plain dumb or very opinionated, you can either extend or customize, the first option again require alot of thinking and design, the second is so verbose and repetitive you’ll just want to cry. Another route is to go with an external templating library today in the PHP world you’ve got Mustache and Twig and many in between, the two extreme templating engines are suitable for two different worlds and you shall chose, i use both but having them work together asks for solid design, what’s the reward you ask? ux designers that won’t fuck up with business logic. what’s the price, a complete redesign of the request-controller-action-dispatcher-renderer flow, by the way lithium is beautiful in here as it lets you filter after, during and before with beautiful closures which are going to ease the overall pain of this process.
So at the end using lithium is asking for spaghetti and different integration points, but that’s what lithium developers praise, spaghetti makes for a delicious and fast meal and are perfect to RAD and prototyping. Whether you need more structure and probably other kind of headaches there’s Kohana who’s very rigid, only complain about Kohana is that they keep changing the response class names from minor release to minor release plus small shortages here and there.
I can’t finish this article without talking bleeding edge with a caveat, node.js + express.js give something completely new and very smart, if web apps reside clientside why not use the client, and clients are only javascript aware. Javascript for a guy who witnessed the birth of the web is shit for historical reasons, it’s been a couple of years that it became a refined shit, the syntax is the same turd and i personally hate it, in addition to that google is lobbying hard to phase it out from the browser and replace it by Darts. Personally i wouldn’t recommend it unless for web games or highly interactive interfaces, for anything that resembles today’s webapps i’d keep conservative but your mileage may vary.
Opa/OCaml : strongly typed web framework, finally… this guy is new and capable, it already found use in poker sites etc. the architecture’s quiet rigid and comes with the web, app, db servers tightly coupled. never really used it but i’ve researched it and it is promising, my only concern is the syntax style but i’m hearing they are fixing it altogether because it was really a joke just by reading the libraries etc. never thought you could do worse than java syntax wise, well Opa did other than that it’s quiet smart and depending on the spread it might evolve to something very promising.
We could go on and on in the neverending review of web frameworks, but at the end all frameworks suck. some suck less and are capable, well documented, easy to deploy, easy to try and furthermore keep a certain consistency. you’ve got to choose wisely and for every new project/start-up the freedom you have to choose is priceless even if sometimes we as businessmen, developpers, hackers or whatever you call yourself don’t cope well with the clutter and information overload freedom opens up for us. the decision is important and the time spent deciding as well. choose wisely.
and just for the sake of it, here’s the conclusion dated 12.2011
- if you want the best : Pyramid
- if you want speed and need PHP : Lithium or Kohana
- if you want entreprise : Lift
- if you want pythonic : Django
- if you want shit for buzz : Rails
- if you want something else : Node.js + Express.js
Take care.
-
apartmentrt6 liked this
-
victimms9 liked this
-
stephensok85 liked this
-
kathleentag901 liked this
-
firemyst posted this