Skip to main content

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.


jjinux said…
By the way, before someone tells me I'm a moron, this article is 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:


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.
jjinux 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…

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 seems interesting...
Unknown 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.... :)
jjinux 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? :)
jjinux said…
RESTful Web Services

Popular posts from this blog

Ubuntu 20.04 on a 2015 15" MacBook Pro

I decided to give Ubuntu 20.04 a try on my 2015 15" MacBook Pro. I didn't actually install it; I just live booted from a USB thumb drive which was enough to try out everything I wanted. In summary, it's not perfect, and issues with my camera would prevent me from switching, but given the right hardware, I think it's a really viable option. The first thing I wanted to try was what would happen if I plugged in a non-HiDPI screen given that my laptop has a HiDPI screen. Without sub-pixel scaling, whatever scale rate I picked for one screen would apply to the other. However, once I turned on sub-pixel scaling, I was able to pick different scale rates for the internal and external displays. That looked ok. I tried plugging in and unplugging multiple times, and it didn't crash. I doubt it'd work with my Thunderbolt display at work, but it worked fine for my HDMI displays at home. I even plugged it into my TV, and it stuck to the 100% scaling I picked for the othe

ERNOS: Erlang Networked Operating System

I've been reading Dreaming in Code lately, and I really like it. If you're not a dreamer, you may safely skip the rest of this post ;) In Chapter 10, "Engineers and Artists", Alan Kay, John Backus, and Jaron Lanier really got me thinking. I've also been thinking a lot about Minix 3 , Erlang , and the original Lisp machine . The ideas are beginning to synthesize into something cohesive--more than just the sum of their parts. Now, I'm sure that many of these ideas have already been envisioned within , LLVM , Microsoft's Singularity project, or in some other place that I haven't managed to discover or fully read, but I'm going to blog them anyway. Rather than wax philosophical, let me just dump out some ideas: Start with Minix 3. It's a new microkernel, and it's meant for real use, unlike the original Minix. "This new OS is extremely small, with the part that runs in kernel mode under 4000 lines of executable code.&quo

Haskell or Erlang?

I've coded in both Erlang and Haskell. Erlang is practical, efficient, and useful. It's got a wonderful niche in the distributed world, and it has some real success stories such as CouchDB and Haskell is elegant and beautiful. It's been successful in various programming language competitions. I have some experience in both, but I'm thinking it's time to really commit to learning one of them on a professional level. They both have good books out now, and it's probably time I read one of those books cover to cover. My question is which? Back in 2000, Perl had established a real niche for systems administration, CGI, and text processing. The syntax wasn't exactly beautiful (unless you're into that sort of thing), but it was popular and mature. Python hadn't really become popular, nor did it really have a strong niche (at least as far as I could see). I went with Python because of its elegance, but since then, I've coded both p