JS is 22 years old today.
I joined Netscape on 4 April 1995, lured by jg&mtoy to "do scheme in the browser". Upon joining I found (1) headcount wars in pre-IPO NSCP left the client group unable to hire me as planned, so I joined the server team; (2) Sun was doing the Java deal with Netscape. Sun viewed Netscape as the vector for its Java virus, didn't care about integration with HTML -- but Bill Joy "got it" and along with Marc Anddressen supported me doing "Mocha". After a month on server side
I had designs on ebina's layout code, but it parsed very quickly (modems!) into a flat display-list-like structure - no hierarchy.
I reckoned based on Butler Lampson papers that I needed a pricipal identifer: scheme:host:port
The "same-origin policy" was born. My aim was to restrict access via reference (JS strong ref in GC heap, equivalent to Object Capability Security "capability") to same-origin objects, plus a few exceptions such as another frame or window whose location object one could navigate. I wanted to enable origins to implement JS apps whose subframes could load content from distinct origins, but still control the navigation from the top level. This worked to a greater extent than I expected; also, XSS!
(correction: s/tables/images/ -- tables were not reified in the early DOM but their image/form/link/anchor contents were. fun bug where ebina's 2^n table layout nesting depth n created n instances from one markup element, which combined with radio-button-inspired auto-arraying of multiple same-name= attribute value element objects. last one pushed was the real one!)
@BrendanEich I still remember how I was amazed seeing Netscape Enterprise Server 2.0 or maybe 3.0 cool JS interface
Server run by the main developers of the project It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!