Atwood’s Law strikes again

It all started when Jeff Atwood, author of the blog Coding Horror, wrote this in a post:

Tim Berners-Lee on the Principle of Least Power:

Computer Science spent the last forty years making languages which were as powerful as possible. Nowadays we have to appreciate the reasons for picking not the most powerful solution but the least powerful. The less powerful the language, the more you can do with the data stored in that language. If you write it in a simple declarative form, anyone can write a program to analyze it. If, for example, a web page with weather data has RDF describing that data, a user can retrieve it as a table, perhaps average it, plot it, deduce things from it in combination with other information. At the other end of the scale is the weather information portrayed by the cunning Java applet. While this might allow a very cool user interface, it cannot be analyzed at all. The search engine finding the page will have no idea of what the data is or what it is about. The only way to find out what a Java applet means is to set it running in front of a person.

This was later codified in a more formal W3C document, The Rule of Least Power. I propose a corollary to this rule, which in the spirit of recent memes, I’ll call Atwood’s Law: any application that can be written in JavaScript, will eventually be written in JavaScript.

That was back in 2007. Since then we have witnessed the rise and rise of the web application, led front and center by Google. Google Docs, Calendar, Maps, GMail – these all used to be the domain of the desktop application. Now these run in the browser, powered by JavaScript. We’ve seen web browsers competing based on JavaScript benchmarks and Google released the Chromebook, the ultimate example of the web as a platform.

For a taste of what we might have running natively in our browsers in the future we need only look at some of the examples of Atwood’s Law in action, like a Linux emulator and a GameBoy Emulator.

The latest victim is the MP3 player. It’s called jsmad and is a pure JavaScript decoder that allows you to play MP3s in a browser without using Flash. You can try it out at, where you can play a sample song or upload one of your own. Be warned though that it only works in Firefox 4+ at the moment. It shows what is possible though, and someday soon we might see a Winamp clone, playing a combination of local tracks from your PC and streaming tracks from the web, all without Flash.

This is not certain, however. Currently in development is the Google Native Client (NaCl). This is a technology which allows the running of native code from a web browser, allowing code to run at near-native speeds. It is currently available as an experimental feature in the Chrome browser. So it would seem that JavaScript’s time in the sun may be short-lived.

I am not so sure. I think the choice of whether to develop your web application in JavaScript vs. NaCl might end up being similar to the choice between a memory managed language like Java and a unmanaged memory language like C. When performance is the most important factor, the correct choice will probably be NaCl, but for most other applications, JavaScript will be entirely adequate. Which of course brings us back to the Principle of Least Power mentioned at the top of the post.

I therefore see no reason why Atwood’s Law won’t continue to stand the test of time.

  • Facebook
  • Twitter
  • LinkedIn
  • Tumblr
  • StumbleUpon
  • email
  • Add to favorites
This entry was posted in Web. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>