The evolution of web development: from ARPA to Zepto
You can find numerous articles throughout the Internet comparing and contrasting the various front-end frameworks that currently exist (React, Angular, etc) and why one may or may not be better than the other. What is hard to find is the evolution of front-end development. How did the web go from files hosted on a server to client-side applications? To many, starting a web development career in 2017 is akin to picking up issue 13 of a complex comic book like Omega Kids. To really enjoy issue 13, you need to understand all the issues before it and web development is no different. If you are a web development neophyte, feel free to start from issue one. If you have some experience, hopefully you can find your tech stack below and read on from there.
Issue 1: Let there be communication
Initially known as ARPANET (Advanced Research Projects Agency Network), the Internet was originally invented to make the sharing of research easier between various universities. ARPANET was designed, implemented, and operational in the late 1960’s to 1970’s. Email was created by Ray Tomilson at BBN in 1972, TCP/IP was developed in 1982, and followed by DNS in 1983. ARPANET was a project funded by the United States Government which imposed limitations on the information that could be distributed. In 1990, ARPANET was decommissioned in favor of the Internet.
Issue 2: WWW, HTML, and browsers
The World Wide Web, a.k.a. the “www” in all URLs, was created by CERN (yes, the people with the hadron collider) in 1990. All computers in the decommissioned ARPANET project were moved to the new, and more open Internet. On April 30th 1993, CERN moved all the code they had written for the Internet into the public domain including the HTML protocol and a basic web browser. From here, the Internet exploded.
Mosaic, the first popular web browser, was released in 1993.
In 1994, the World Wide Web Consortium (W3C) was created as a collaboration between MIT, CERN, DARPA, and the European Commission.
In 1995, Netscape was founded and Microsoft built the its first web browser for Windows 95.
In the early years, web development was very static. When a web browser asked for http://www.foo.com/bar.html, the web server at foo.com returned the contents of the actual bar.html file at the root of that server’s file system. Any web page on the Internet was a file on a server.
Issue 3: CGI and dynamic server pages
CGI stands for Common Gateway Interface. CGI was initially created in 1994 and allowed web pages to use command line scripts to generate pages based on the incoming HTTP requests.
With this change, a website gained the ability to generate dynamic HTML responses for each incoming request. Languages like PHP become popular and this change, along with the addition of HTTPS, made e-commerce sites possible.
Issue 4: Google and AJAX change the game
AJAX allowed websites to fetch information from a server after the initial page load. For Google users, this allowed them to archive email and search for directions without having load a new webpage. AJAX made the web interactive but introduced complexity for developers.
Issue 5: Manipulating the DOM
Issue 6: APIs and front-end frameworks
Not to be left out of the fun, Apple also had a pretty heavy hand in shaping the current web development ecosystem. In 2008, Apple opened the iOS App Store to any developer. To build a native application, most shops set up APIs for their iOS apps to communicate with. APIs are specialized web servers that return data in XML or JSON formats instead of HTML.
Native applications became extremely popular and when companies tried to change their websites to match the functionality of their apps some problems arose.
Native applications are extremely stateful and most web applications had not approached the same level of sophistication. To help manage state, DOM updates, and API calls, frameworks like React and Angular entered the scene.
Final Issue: Use the best tool
Each above issue describes a fundamental shift in web development. That is not to say that every new website should be using APIs and a framework like React. The goal is to highlight the different tech stacks that exist and when you may want to evolve your project. Use your judgement and the best tool for your project.