in 10 Days
If you're not familiar with web development, you probably still know that most webpages are made out of HTML. What you might not know is that HTML is not a programming language.
HTML stands for hyper text markup language, a mark-up language being a system of annotation. In other words, HTML is just a fancy way of formatting text and other elements. Like when you format a word document, once it's published you cannot change or reformat the contents of a website consisting solely of HTML -- in this sense it is "static." You can't set an HTML property to a variable, X, and then define X later.
With a programming language, on the other hand, you can assign, define, and manipulate variables. The trick to programming languages, in web development, is to have them interact with HTML. In a programming language designed for the web, you might define a variable X, and then have a program generate HTML with the present value of X as one of the properties.
Server-side scripting languages are programming languages that run on the server. Code written in a server-side language can grab a variable from a user's browser (like a cookie passed with the HTTP request) and then use that data to make more sophisticated or tailored HTML.
But server-side scripting isn't good for truly "responsive" designs. A client-side scripting program runs on the client side. In web terms that means in the browser of the person looking at a website. Client-side programs can change the website based on user behavior. If the user resizes a window, or mouses-over an element, or starts typing a search query, client-side code can change parts of the page in response. In order for this to work the browser needs to be built to run this code.
In 1995, Netscape already had one client-side language: Java. They had built support for applications written in Java -- developed by Sun Microsystems -- into their browser, Navigator. The trouble was in integrating Java applications into an overall web experience. Java apps run in a "sandboxed environment," isolated from the content of the page that hosts them. Netscape could have built support for Java as a scripting language, but they wanted a simpler language instead. This was partially because websites were often built by graphic designers, or amateur developers, with limited programming chops.
They cared about getting this scripting language together, but they also wanted it for their next release. To meet deadlines they gave a recently hired programmer 10 days to come up with an in-browser scripting solution.
That programmer was Brendan Eich. Netscape had lured Eich in on the promise
of "do[ing] Scheme" (a programming language with a bit of a cult following) in
the browser. Those dreams ended up not working out -- in fact, Eich quickly
discovered he would have to invent a whole new language for Netscape.
As he's written, "The diktat from upper engineering management was that the language must ‘look like Java.' That ruled out Perl, Python, and Tcl, along with Scheme." He's also said, "I was under marketing orders to make it look like Java but not make it too big for its britches ... [it] needed to be a silly little brother language."
Pop-up ad (Edcollins)
This kind of standardization was the most significant revision the language itself was ever going to get. As it was put in an article by the IEEE Computer Society, "Nothing built in 10 days is perfect, but once something is released into the wild, bugs or imperfections quickly become essential features and are nearly impossible to change."