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.com, 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? 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? |