- In the mid 1990s, the web consisted of static web pages and
forms that could be submitted to make changes. It became obvious that
more dynamic content would be nice to have. At that time, Java was
supposed to be the foundation of such content. But Java clearly was too
complex for web designers and Java applets were unwieldy and too far
removed from HTML – they ran in a rectangle, poorly integrated with the
not experienced programmers and wanted to add a little interactivity to
their web pages. For example, forms whose content could be checked
without being sent to the server or buttons that change their appearance
connects more powerful components programmed in Java. Obviously, this
last idea never gained much traction, because Java in the browser never
- 2005. Ajax – browser-based desktop-class applications
- Ajax is a collection of technologies that brings a level
of interactivity to web pages that rivals that of desktop applications.
One impressive example of what can be achieved via Ajax was introduced
in February 2005: Google Maps. You were able to pan and zoom over a map
of the world, but only the content that was currently visible was
downloaded to the browser. After Google Maps came out, Jesse James
Garrett noticed that it shared certain traits with other interactive web
The two cornerstones of Ajax are: First, loading content asynchronously
in the background (XMLHttpRequest, 1999, Internet Explorer 5). Second,
dynamically updating the current page with the results, by manipulating
the DOM (Document Object Model) of the browser (DHTML,
1997, Netscape 4 and Internet Explorer 4). That was a marked usability
improvement from always performing complete page reloads.
Since the inception of Ajax, other data formats have become popular (JSON instead of XML), other protocols can be used (e.g. Web Sockets in addition to HTTP) and bi-directional communication is possible. But the basic techniques are still the same.
- Roughly, CouchDB is a JSON database: You feed it JSON objects,
without the need to specify a schema in advance. Additionally, you can
because you can directly work with native data. Compared to a
relational database, there is no mapping-related impedance mismatch.
Compared to an object database, you avoid many complications, because
only data is stored, no behavior. CouchDB is just one of several similar
- 2007. WebKit becomes the foundation of the mobile web
- Based on prior work by KDE, WebKit is an HTML engine introduced
by Apple in 2003. It was open-sourced in 2005. With the introduction of
the iPhone in 2007, it became the foundation of the mobile web.
WebKit is now the main engine for Android and the only engine for iOS
and dominates the mobile market. That means that if you want to write a
cross-platform mobile application then web technology is currently your
best bet (unless you need features that are only available natively).
- When Google introduced its Chrome web browser, one of its
other browser vendors that we are still profiting from. V8 is open
source and can be used as a stand-alone component whenever one needs a
fast embedded language that is widely known.
- Node.js lets you implement servers that perform well under load.
event-driven programming style is unusual: All server code is executed
by working off jobs from a queue, in a single thread. You register a
handler for requests. Each request is an event that adds a job to the
queue that invokes the handler. When the handler processes the request,
delegate more time-consuming work (such as querying a database) by
adding library invocations to the job queue. The last arguments of such
invocations are callbacks for handling the results, later on. Thus, the
server code does not block while waiting for the results and Node.js can
immediately process the next job in the queue, e.g. to handle a new
request. Most library jobs are executed in a pool of threads external to
the main thread. When they are done, they add callback invocations to
the queue. Those invocations can be viewed as resuming the work of the
original request handler. One advantage of this approach is that the
number of threads will never explode, even under heavy load. And the
server code stays simple while still achieving a fair amount of
multi-threading, thanks to the external thread pool.
- Because it’s bare and does not come with I/O APIs [hence all of them are new and non-blocking].
- Web developers use it already.
- DOM API is event-based. Everyone is already used to running without threads and on an event loop. [Web developers are not scared of callbacks.]
- 2009. Chrome OS – a web operating system 
- Since Ajax, more and more applications that people use are
running in the browser: social networking, email, games, etc. Add to
that the fact that Chrome even has its own task manager and you can see
that a browser is already an embedded operating system. Then you have to
ask the question: What do you need the embedding operating system for?
That is the motivation behind Chrome OS: Run just the browser, as an
operating system. There are three advantages to using this approach:
First, it allows you to get started quickly with a new operating system,
because all of the user interface technology is already there (for
lower levels, you’ll need to plunder something else, such as Android or
Linux). Second, many developers already know how to program for your
operating system. Third, for users of the system, there is nothing to
install, new users can get started quickly. That’s a big plus for public
installations such as internet cafes and schools.
We also need a hill to take, in order to scope and focus our efforts. Recently we saw the pdf.js project [which renders PDFs via HTML5, without plugins] expose small gaps that needed filling in order for “HTML5” to be a superset of PDF. We want to take a bigger step now, and find the gaps that keep web developers from being able to build apps that are—in every way—the equals of native apps built for the iPhone, Android, and WP7.
- When Microsoft introduced Windows 8, it surprised everyone with the operating system’s extensive integration of HTML5. HTML5 applications are first-class citizens in Windows 8, on par with those implemented via incumbent technologies such as .NET and C++. To demonstrate that point, Microsoft wrote several important Windows 8 applications in HTML5 (plus proprietary extensions), including the app store and the email app.
- Features for applications: Canvas for bitmap graphics (static or animated), WebGL for 3D graphics, etc.
- Features for documents: SVG for vector graphics, MathML for typesetting math, etc.
Comments on this blog post are welcome: Did I miss a milestone? Do you agree with the ones I picked?