Saturday, April 21, 2007

How much does web framework choice really matter?

Based on experience with consulting jobs developing web applications using several Java frameworks, Ruby on Rails, and Portable AllegroServe with WebActions (open source Common Lisp frameworks), I believe that choice of framework is less important than:
  • Programming language: choose a language that both fits the application domain and has good library support for your application
  • Data modeling: while I believe in interactive bottom up development, spending time up front getting object models 'right' makes development easier
  • Object persistence: there are lots of good choices (prevalence, object relational mapping for relational databases, distributed memory only, etc.) but choose a scheme that makes sense both for development and deployment
I think that these 3 issues are all more important than choosing a web UI framework.

I have been investing a fair amount of time learning Erlang this year and the ErlyWeb framework (that uses the high performance Yaws Erlang web server) looks very good for both interactive development and distributed deployment. For web applications that map well to Erlang, ErlyWeb allows Erlang to be the development language of choice, but again the important choice is programming language selection rather than web framework.

4 comments:

michael.lommel gmail com said...

Thank you for the interesting post. I was wondering, given your range of experience with a number of languages, what would you consider the best language for developing a web application for searching, interacting with and displaying semi-structured documentation? (Possibly encoded in xml).

On a side question, how would Lisp deal with fulltext and parametric searching of such a repository of about 200mb?

Mark Watson, author and consultant said...

Hello Michael,

If runtime performance is not an issue, I would probably use Ruby: easy XML processing, fast prototyping language, Ruby on Rails for the web application. Ferret (port of Lucene) would be great for text indexing.

If performance was an issue, I would probably use Java or Common Lisp (WebActions+PortableAllegroServe for web app, XML libraries depending on the Lisp impelmentation). Java would probably be the best choice, unless you are really into Lisp.

re: Lisp fulltext search: try Montezuma (Lucene/Ferret port to Lisp).

Alphadog said...

I come to this somewhat old post courtesy of Google.

I am in the middle of having the luxury to kick off my own project for an online web application. I am looking at Ruby, Python and Java. Erlang is interesting, but perhaps not production-ready.

I find a lot of seasoned developers say things like "use the framework best suited to your project", but never lay out criteria to help determine exactly when one is preferable to another.

Can you make any such statement that may help me or anyone else reading your above post?

Mark Watson, author and consultant said...

Hello Alphadog,

One other very important framework selection criteria is simply: do you and your team have experience with it?

Obviously, it is important to try and perhaps use new technologies, but developer skill sets matter a lot.

Other than this, I stick to my original advice in the post for general advice.

In your case: do you already have experience with Java+JSPs, etc.? If not, Ruby and Ruby on Rails have an easier learning curve.