Until couple years ago, doing anything more than simple form validations or image mouseovers with JavaScript was considered drudging work. Not many people understood or appreciated this small but very powerful language that run on our browsers. It wasn’t even seen as a serious programming language. Fast forward to today suddenly it is the new cool thing. People are writing Drag and Drop User Interfaces that can edit graphics and save your data on the background.

So, what happened? This is very amazing. Today almost nothing has changed about the underlying technology but suddenly our thinking has shifted. JavaScript is not seen as a hack any more. People are now making very complex applications with it. JavaScript is not ugly any more. There are beautifully written libraries that can do powerful things. JavaScript is not a light language any more. The most exciting web applications written today use it extensively.



In his seminal book, Crossing the Chasm, Geoffrey Moore explains how high-tech products get adopted. The new product needs to get enough early majority users or most of the time fall down to the chasm. A new technology comes out and a small number of people who are called early adopters start using it. These people use it because it is exciting and new. They don’t care if it is stable or productive. They are just excited by the technology and they will use and try the product even if sucks. They see future possibilities in the technology and they are excited about it. Then there comes the pragmatists. These people will only use your product if it is really useful.

The Big Chasm

JavaScript took almost 10 years to be seen as a real programming language. There are couple of reasons why it took so long.

1. Marketing Mistakes: The worst thing that ever happened to JavaScript has been its name. With the ambition of taking on Microsoft, Netscape was partnering with Sun at the time. They did not understand the power of this new scripting language on their hands and they wanted it to be a sister language of Java. This naming caused enormous amount of confusion on the developer community. It also put down JavaScript as the “light” language of the Internet.

2. Microsoft: Embrace and Extend was not only used against Java, it also devastated JavaScript. Best developers are usually little idealistic so they hate having their web application only work on a single browser. For a long time most things only worked on either Netscape or Internet Explorer. Microsoft even released something called Jscript for a short period of time.

3. Missing Tools: It is almost impossible to do any JavaScript development on Internet Explorer. When IE took over the web, it stopped the flow of newcoming developers.

On 90s Netscape was the engine of the new Internet economy. Many browser innovations like JavaScript, bookmarking and cookies came from Netscape. Once Microsoft destroyed the company as we know it, we had a period of time that not only crashed innovation in browsers but made JavaScript development very very difficult. Have you ever tried writing JavaScript code on IE? There was no debugger or tools. You only had a pop-up error message that gave no real information about the problem. It seemed to be designed to annoy people into disabling JavaScript on their browser completely.

We had a five year period after 1999 without much JavaScript development. This is also the same time it seemed like innovation on the web ended. There was no excitement any more. People talked about how the dot com was over and the industry was now maturing, and everything that could be made was already made. It was depressing.

The Come Back

When there is a forest fire, the trees burn down but amazingly in a matter of couple of years new trees start growing on the same fertile ground. Netscape was burned down but from the ground it left, a new browser called Mozilla (Firefox as we know it today) sprang up. New innovations starting coming out such as tabbed browsing and a better JavaScript Console. It provided better support for standards like CSS. This was the turning moment for JavaScript.

The main reason JavaScript became popular again is Firefox. Many people think GMail and AJAX hype propelled JavaScript. I do not agree with this view. They were only results of the change. They may have increased the excitement but the only real reason for the new popularity of JavaScript is all those web hackers who starting using Firefox. Firefox may be used only like 10% of the general population, but this number is probably more like 90% of the web developers. This community now had really good tools like JavaScript Console, JavaScript Debugger and DOM Inspector.

When I developed JotForm, I mainly worked on Firefox. My favorite tools have been the JavaScript Console and Web Developer Toolbar. Quick write, run, debug cycle made development easy and fun.

The Future

Understanding the chasm theory has profound implications about the future. JavaScript and LAMP(or ASP.net or RoR) is the new Visual Basic. It is even more. On top of all the business applications, we now have many social applications written as web applications.

So are there any alternatives to JavaScript on the client side? This was been discussed on a Joel on Software thread recently. The main contenders are Java applets and Flash. They are both propriety, slow and do not easily mingle with HTML and CSS like JavaScript does. But most importantly, they are both difficult to develop with. One of the main characteristics of web is that small things loosely coupled have better chance of success. The learning curve that’s required to write a Java applet is too much for web developers who are constantly bombarded with new technologies like Ruby on Rails. The claustrophobic and expensive Flash tools will also keep Flash adoption at bay.

Couple of months ago, I listened Joel Spolsky on his talk to NYC Lisp Users Group. He wasn’t very excited about the small things loosely coupled way of things working on the web. He suggested a new language framework that integrated the server side and client side. So things are done “right”. Although it was an interesting talk, as a big Joel fun, this was pretty disappointing. This is exactly what Java, Flash and MS one-click installs tried to do and pretty much failed.

JavaScript may be lacking a lot of things today and may take some time reach its full potential. But it surely is evolving. Clay Shirky in his essay In Praise of Evolvable Systems talks about things which are loosely designed.

The very weaknesses that make the Web so infuriating to serious practitioners also make it possible in the first place. In fact, had the Web been a strong and well-designed entity from its inception, it would have gone nowhere. As it enters its adolescence, showing both flashes of maturity and infuriating unreliability, it is worth recalling what the network was like before the Web.

This is true for HTML, CSS and JavaScript. They are all loosely designed. JavaScript may be lacking many things today but it is also evolving constantly. Now that it has crossed the chasm, I believe next couple of years will be very exciting. People will come up with cool web applications, not because of the web 2.0 hype, but because it is the right time. Are you ready for the ride?

Update: A good discussion on the JoS Forum.