The Death of the Computeral Craftsman

I was recently alerted to Forrester analyst Josh Bernoff’s groundswell blog through his article on the rise of the “Splinternet”, which argues that the the bewildering array of web formats and technologies is disturbing the unified nature of the Web:

“Web marketing has grown since 1995, based on the idea that everything is connected. Click-throughs, ad networks, analytics, search-engine optimization — it all works because the Web is standardized. Google works because the Web is standardized.

Not any more. Each new device has its own ad networks, format, and technology. Each new social site has its login and many hide content from search engines.

We call this new world the Splinternet (with a nod to Doc Searls and Rich Tehrani, who used the term before us with a somewhat different meaning). It will splinter the Web as a unified system. The golden age has lasted 15 years. Like all golden ages, it lasted so long we thought it would last forever. But the end is in sight.”

Bernoff’s main point as I understood it, that online content is being balkanized among many private networks and thus the Web is no longer unified by standards that ensured interoperability, has some merit, but it also has many shortcomings that readers were quick to point out in the comments. Regarding logins, OpenID has been relatively successful in simplifying online user authorization, and as for social media content, Google just recently succeeded in integrating real time Twitter updates into search results. One could also take a step back and maintain that the social media content issue is a red herring, since content that is not being shared generally has to do with privacy concerns, and that content would not be online at all were it not for Facebook et al. in the first place.

Nevertheless, the myriad of Internet-enabled devices, web browsers, and the like have muddled web standards and suggest a trend toward a genuinely fragmented cyberspace. Whereas once upon a time HTML and other standards promised fellow travelers on the Information Superhighway a lingua franca,

“Now with iPhones, Androids, Kindles, Tablets, and TVs connecting to the Web, that’s not true. Your site may not work right on these devices, especially if it includes flash or assumes mouse-based navigation. Apps that work on the iPhone don’t work on the Android. Widgets for FiOS TV don’t work anywhere else.”

Both Bernoff’s criticisms and his readers’ retorts, however, miss a more fundamental point, which is that web standardization is actually booming at the moment in a very curious way. Beyond the secret mailing lists and the molasses-like negotiations of the W3C and WHATWG, the not-so-transparent bodies that create and maintains web-wide specifications like HTML, developers have been slowly but surely restructuring the entire Internet under the Model-View-Controller (MVC) scheme, which has dramatically spurred on standardization.

MVC is a basic software architectural pattern that rigidly separates data (models) from the code used to create a user interfaces (views) by means of an intervening logic layer (controller), which updates the data models according to user input from the views and vice versa. First proposed in 1979 during a visit to Xerox’s Palo Alto Research Center (PARC, home of the computer mouse) by Trygve Reenskaug, an influential Norwegian computer scientist, only in the past decade or so has MVC taken the Web by storm, and today nearly every major website from Amazon to Yahoo is based on this paradigm.

Working through a common example will help illustrate how MVC works. When you log on to Twitter from your web browser and post an update, for instance, the web page you see is an example of a view, which has the text box you typed your message in, the “Submit” button you clicked to send in your twit, and all the other visual elements that you see on the page. You could also, however, use an instant messaging/social media client like Digsby to post an update or even post from your phone, and yet the result will be the same. This is because all of these methods of posting are all examples of views, and regardless of which view you use they all send your update to the same controller, which does the hard work of updating the Twitter database’s models with your message and then broadcasting that change back to everyone’s views so that they can see your post. Generally, the implementation involves a view written in JavaScript and dynamic HTML, and the JavaScript component actually changes the HTML on the fly depending on what new information it receives from the controller.

In contrast, the way most of the web was written before MVC was with plain static HTML pages that unified content with its formatting without any intervening controller. HTML is a markup language, which means that it is tightly integrated with the text, and yet unlike other markup languages such as XML it explicitly tells us how content should be formatted. When we write a basic, static HTML page of the kind that first populated the Internet, we are creating a document whose formatting and content are effectively unified, not unlike when we write a page out by hand on paper. Also like writing documents out on paper, the unification of formatting and content in static HTML pages makes it hard to abstract the content, which make applications like e-commerce almost impossible. Running, say, a major online retailer like Amazon with static HTML would be akin to managing the distribution chain of a major brick and mortar retailer like Walmart with the sticky price tags on each item as the only way of keeping track of inventories. If a price needed to be looked up, you would have to refer to the price tags rather than a database or register in the office, or if you needed to know the quantity of a certain product across all the stores, sales associates would have to count how many items were physically present. Under such a system, the view is the data model, and formatting provides structure for the data not only for the end user (or the shopper, in our example) but also the analyst or the program that needs just the data (or prices) in an abstract way.

Because of such limitations, pure static HTML has been losing ground for over a decade now, and views are typically strictly separated from models through an abstracting controller layer. Bernoff’s evidence that the Web is splintering, namely the proliferation of iPads, Kindles, widgets, and other ways for users to access the web, are all instances of different views, whereas the data those devices are made to access are being made accessible by thoroughly standardized controllers, which are the actual backbone of today’s Internet experience. Facebook, Google, Twitter, and the other major web service providers all have publicly-accessible mechanisms of integrating your device or program with their content, and it is precisely the stability and availability of those interfaces to those websites’ controllers that has allowed so many different views to arise. In other words, the creation of so many devices and ways of accessing the web is a symptom of a new structure for the Internet that unifies large pools of data under common and (relatively) open methods for accessing that data through controllers. This is not to say that the Web is becoming more “unified” overall, but rather that it is easier than ever to access large quantities of online data consistently, a trend that has undoubtedly helped the profit margins of data analysis firms like Bernoff’s employer Forrester by doing the dirty work of extricating usable data from its formatting.

Of course, anyone familiar with web development would probably object to calling Facebook’s or Twitter’s API’s (Application Programming Interface, or the mechanism with which programs interact with the big sites’ controllers to access data like status updates or friends’ twits) “web standards”, but in fact such mechanisms are functionally replacing what used to be regulated by HTML because of the Internet’s wholesale move to MVC, which unlike HTML rigorously separates format (views) from content (models). Due to this fundamental change, Bernoff’s point about the splintered state of views and their lack of standardization is dated by about 15 years when HTML was practically the only standard, governing not only the formatting of content on our screens but also the structure of the content in the web page file itself. Any extreme fracturing in views back then would have indeed implied that the unified nature of the Web was splintering, because the same standard that determined views also helped determine content. Something like that happened during the Internet Explorer/Netscape wars when inconsistent rival implementations of HTML forced web designers to create pages that would load properly in only one browser or that would use a restricted subset of features common to both. It would not have been trivial for Forrester analysts like Bernoff to have combed the web with automated data mining tools then because HTML varied (and continues to vary) so greatly, but it would be comparatively simple to mine Twitter or Facebook today using the public API’s afforded by the MVC model.

It comes as no surprise then that the development of HTML 5, the new version of HTML meant to provide an open standard for not only formatting text but also video, sound, 2D graphics, geolocation, multi-threading, and other features in web pages, has become increasingly irrelevant. In the works for the past six years, it has been mired in the Machiavellian squabbles of industry heavyweights Apple, Opera, Mozilla, Google, and Microsoft, whose representatives comprise the WHATWG (Web Hypertext Application Technology Working Group) organization that is drafting the standard. Many of the new features proposed by HTML 5 have already been implemented through alternatives like Flash and CSS + JavaScript, both of which have reached such high levels of sophistication that HTML will never catch up; indeed, those such as Apple CEO Steve Jobs who have proposed that a solution like Flash could easily be replaced by HTML 5 have been ridiculed.


  1. 2010-04-07 6:08 pm
    • 2010-04-07 6:42 pm
      • 2010-04-07 8:17 pm
        • 2010-04-08 5:28 am
      • 2010-04-07 8:57 pm
        • 2010-04-08 4:41 am
          • 2010-04-08 7:13 am
          • 2010-04-08 4:15 pm
  2. 2010-04-07 6:43 pm
  3. 2010-04-07 7:19 pm
  4. 2010-04-07 7:34 pm
    • 2010-04-07 8:33 pm
      • 2010-04-07 9:06 pm
        • 2010-04-07 11:13 pm
      • 2010-04-07 9:59 pm
        • 2010-04-08 5:35 am
          • 2010-04-08 1:26 pm
          • 2010-04-08 3:48 pm
  5. 2010-04-07 7:58 pm
  6. 2010-04-07 7:59 pm
  7. 2010-04-07 8:10 pm
    • 2010-04-07 8:25 pm
      • 2010-04-07 9:01 pm
        • 2010-04-08 3:48 am
    • 2010-04-07 8:40 pm
      • 2010-04-07 9:34 pm
        • 2010-04-07 10:06 pm
  8. 2010-04-07 8:21 pm
  9. 2010-04-07 9:38 pm
    • 2010-04-08 2:09 am
  10. 2010-04-07 10:01 pm
  11. 2010-04-08 3:42 am
    • 2010-04-08 4:30 am
      • 2010-04-08 7:23 am
        • 2010-04-08 5:03 pm
      • 2010-04-08 8:19 am
  12. 2010-04-08 5:44 am
  13. 2010-04-08 9:22 am
  14. 2010-04-08 9:41 am
    • 2010-04-08 5:11 pm