27 September 2015

The Web is Horribly Broken

The World Wide Web, the part of the internet that focuses on presenting data in a document-like format, is horribly broken.  It is completely inadequate for its job.  The evidence is the enormous number of hacks that are almost essential to producing professional quality web sites in a reasonable amount of time.  I am talking about the plethora of general purpose frameworks that are constantly being produced, used, and often discarded.

The foundation of the web, HTML, is a document formatting language.  It was designed as a simple encoding for text documents that would allow for headers, paragraphs, and simple text formatting.  The single unique and interesting thing about HTML was the ability to include links to other documents.  HTML was designed for research papers, and research papers tend to reference other research papers, so linked cross references made things considerably easier.  Generally speaking, HTML did an excellent job of this.

The web took HTML and attempted to use it for applications it was not designed for.  As time went on, it was quickly discovered that web pages needed more interactivity than research papers.  Since that time, HTML has undergone many revisions and additions, but even with HTML 5, it is still based around a design intended primarily for presenting research papers (though much more impressive ones than the original HTML).  Perhaps the most dramatic addition to HTML was JavaScript, which allowed web developers to add programmatic elements to web pages.  This is when web pages gained true interactivity. 

Unfortunately, this was still not enough.  JavaScript gave programmers the tools to make highly interactive web pages, but it did not do much more than that.  It turns out that there are several specific types of interactivity that are needed more often than even many built-in features of HTML.  Very few of these have been added to HTML or other parts of the Web Standards though.  The result is that web developers started to roll their own using JavaScript.  The problem is that now we have hundreds of popular "frameworks" (the name given to libraries of features that probably should have already been included in the official standards).  Frameworks tend to come and go.  Many are poorly designed, hard to use, and don't work well, though developers rarely realize that until something significantly better comes along to make it obvious.  Some frameworks have become so popular that nearly every web site uses them, and tutorials for other frameworks just assume the reader is already familiar with and using them.  The vanilla web is so severely inadequate that every modern, professional web site uses at least a few frameworks as hacks to get the functionality that is essential to the modern web.

This is a problem.  Frameworks are heavy.  They use a lot of bandwidth to load (I can hear web developers reading this saying "its only a few kb"; unfortunately, only a few kb quickly adds up to gigabytes or even terrabytes on a high traffic web site).  They are also slow.  Despite the extreme levels of JavaScript optimization in modern browsers, interpreting JavaScript is still significantly slower than using capabilities built into the system to comply with web standards.  Frameworks are problematic for everyone.  Even if there were people who rarely visited sites that use them, they would still have to deal with the general congestion caused by various frameworks being downloaded billions of times a day.  Unfortunately, they are also essential, because they provide absolutely necessary functionality that HTML and other standardized web technologies are missing.

The cause of this problem is simple: Web standards are lacking essential functionality necessary for effective use of the web.  Unfortunately, this problem is nearly impossible to solve.  Standards are inherently complicated.  Technology standards cannot (or at least, should not) be legislated, because no one with sufficient political power is educated enough to have any business getting involved.  Standards are standards because a significant majority agrees on them and follows them.  This necessarily results in a slow release cycle, because each release requires a consensus among a large number of parties.  (This slowness is why pure democracy cannot work for governments.)  When a specific part of a standard cannot get a consensus, it is set aside for the next version, which means that cutting edge technologies almost never end up in the version of the standards where they are most needed.  Instead, a faster, more agile approach is necessary, and that is where frameworks come from.

Frameworks are an unfortunate but necessary part of the standards cycle.  For something to become a standard, it is important to ensure that it is of general usefulness and reasonably necessary.  When a framework becomes so popular that everyone is using it and no one can do without it, it is clear that the features it adds (at least, those in common use) are both generally useful and necessary.  When multiple frameworks provide the same popular feature, it provides many examples of how the feature could be implemented, which is valuable in establishing a sane standard.  In short, the world of frameworks is the world where standards evolve and compete for survival of the fittest.  The features and implementations that survive and thrive for long enough will eventually become web standards.

What it all comes down to is that the web is horribly broken.  It is being propped up all over the place by hacks that are more politely known as frameworks.  It is missing enormous amounts of essential functionality.  The worst part is that it will never catch up.  The fact, however, is that the current system results in good, sane standards that can be relied upon.  Frankly, it is pretty amazing that the web works at all.  After over 35 years of competing computer operating systems, we still cannot expect a program written for one to work on any others.  With the modern web, using frameworks, a developer can reasonably expect a web site written for one modern browser to work with little or no adjustment on nearly all modern browsers.  The web might be horribly broken, but it works amazingly well despite that.

No comments:

Post a Comment