Wednesday, January 09, 2008

Computer Science: Everyone Wants to Write a Web Framework

I had my stint. I started a Python Web application framework called Aquarium seven years ago. It's now being used by IronPort all over the world. It's even been used in a couple apps at Yahoo.

In the Python Web world, we have about 1.5 times as many frameworks as we have programmers. I've heard people joke that you can't be a serious Python programmer until you've written your own templating engine in Python ;)

Ruby became mainstream, not thanks to its cool metaprogramming, but rather because DHH decided to write an app in it. Oh, and he also wrote some obscure Web framework that no one knows about ;)

One of the most "vocal" blogs supporting Erlang is Yariv's Blog. Erlang is wicked cool, so what does he do with it? He wrote a Web framework called ErlyWeb.

My buddy Alex Jacobson is a fascinating character. He's been coding in Haskell for almost as long as I've been coding in total. What's his project? HApps. It's labeled an "application server", but every time I see him playing with it, he's writing Web apps.

Surely, deep in the bowels of academia, there must be someone not interested in Web development. Someone, perhaps who only cares about computer science theory, right? For instance, Philip Wadler. He's made numerous contributions to Haskell and functional programming in general. He's presently a professor of Theoretical Computer Science in the School of Informatics at the University of Edinburgh. Surely he must be blissfully ignorant of this whole Web framework craze!

Nope, he's currently working on a new functional language designed for writing web applications called Links.

15 comments:

Shannon -jj Behrens said...

By the way, before someone tells me I'm a moron, this article is hyperbole:

http://en.wikipedia.org/wiki/Hyperbole

Bill Mill said...

Man, I only (kind of) maintain a python meta-templating framework, I must not be a real python web developer :)

Noah Gift said...

I did a lot of reading as a kid, and when I was on my Lous L'amour kick, I read every book he published in about a year, if memory serves me correctly. There was a common Western theme of "the fastest gun in the West" in a lot of his books.

If you happened to get in a couple of gun battles, and show you were handy with a six shooter, you were going to have some real problems for the rest of your life. Why? Because people were going to come from all over to try to shoot you, and take you out, to build a reputation as "fastest gun in the West".

Today in 2008, Web Frameworks are very similar to "the fastest gun in the West". If you are considered the most popular, you really have grabbed the Tiger by the tail. People can, and will, come from everywhere to prove they can draw a gun faster, and eventually they will. It must be a real "pleasure" to know that and try to sleep every night.

If there is one thing to count on, it is that everything will change. What is popular today, may not be popular in two months. Ultimately being king of the hill reminiscent of Training Day with Denzel Washington..."King Kong ain't got s**t on me...", then he gets machine gun blasted a few hours later. Life is rough in the fast lane :)

Noah Gift said...

You Tube is great. Here is a link to the Denzel scene from training day:

Link:

Training Day "King Kong" scene

Now substitute "police", with web framework. Who do you think you are, I am the "web framework"......."I am going to win...."

Good stuff!

mike bayer said...

noah -

theres room for many approaches to the same thing. theres competition sure but i've noticed you trying to reduce things into an "epic battle" on more than one occasion. i'm not sure its so productive to emphasize "winners/losers" over ideas and techniques (and of course collaboration...which is just what you get with an ecosystem-oriented community). theres a good deal of cross pollination going on with the current crop of frameworks and tools.

Shannon -jj Behrens said...

The reason there are so many is because so many smart people have new and innovative ways of accomplishing the same goal. If you look at Links, it's pretty interesting. Wadler wants to use one language for app development, querying, and client-side behavior. My own Aquarium was about inversion of control, especially at the template layer.

There are a lot of Web apps that need to be written and there are a lot of creative people who need to write them. Why not try out a bunch of techniques and see which ones work out, eh?

Noah Gift said...

mike,

I am actually trying to lighten things up a bit, and my point is actually the opposite. No one has to win, or lose. What is there to win or lose?

It is actually funny to take a look at some of this stuff, and realize how silly it really gets. That is why I posted the training day video. It kind of puts things in perspective on anyone trying to be the king of hill, or the fastest gun shooter. What is there to gain?

I agree with you, it seems like people want to work together more and more each day. I hope it continues.

I do like the idea of using youtube videos as a way to express an idea though....it seems interesting...

gldnspud said...

I'm sure some day someone will figure out how to "webapp-ize" traditionally non-web stuff like Final Scratch (vinyl emulation software for DJs). That'll be the day!!

Darrin Eden said...

What is the minimal set of functions to be a "web framework"?

Noah Gift said...

darrin/a large marketing budget.... :)

Shannon -jj Behrens said...

A Web framework should have some combination of the following:

* A way of responding to Web requests, perhaps via WSGI.

* A way of doing URL dispatch.

* An ORM or other code for talking to a database.

* Sessions.

* Some way of producing HTML.

Sean Fritz said...

You prompted me to to write a rant about this topic =p
The musings of a grue: Web frameworks, aka low hanging fruit.

-Xv said...

It's such a pity that Wadler went for such an ungoogleable name...

Anonymous said...

so what books would you recommend to a noob to start writing his own web framework? :)

Shannon -jj Behrens said...

RESTful Web Services