A Brief History of JavaScript

It’s good to be back. I let the old blog field lie fallow in order to focus on work in Ecma TC39 (JS standards), Firefox 3.5, 3.6 and 4; and recently on a new project that I’ll blog about soon.

In the mean time [UPDATE and in case the embedded video fails], here’s the video link from my JSConf 2010 surprise keynote in April. Highlights include:

  • What would happen in a battle between Chuck Norris and Bruce Campbell
  • Clips from Netsca^H^H^H^H^H^HEvil Dead 2 and Army of Darkness
  • Discussion of where JS has been and what lies in its immediate future

True facts:

  • I did meet John McCarthy of LISP fame in 1977
  • My haircut was influenced by Morrissey’s (hey, it was the late ’80s)
  • JS’s function keyword did come from AWK

/be

19 Replies to “A Brief History of JavaScript”

  1. Thanks for the video, Brendan.

    Would you please post the slides?

    i would appreciate it, thank you very much.

  2. James: wp update coming today thanks to @oremj.

    Orlando: will do, check under Presentations in a bit. Thanks,

    /be

  3. It’s good to have you back! This is a great talk. The JS world needs more than one voice that can speak with the same authority as Crockford. I don’t dislike Crockford, but we have suffered because he has been allowed to keep a monopoly on opinions about the language. Keep posting and stay vocal!

  4. If parts of harmony are rolled out piecemeal how will the versioning be handled?

    Also you mentioned types re Actionscript. Given the per function compilation strategies would type annotations – purely on function parameters – be useful:
    function add(a Number, b Number) { … }
    Surely the compiler could use the extra info – parameter ‘a’ is a Number and it’s not a string. Dev’s would find it useful – it’s additional documentation.

    The ability to type annotate for ‘pure’ math functions would be useful for math heavy WebGL code. How about a syntax for pure-ish math functions:
    function add(a Number, b Number) = a + b;
    // similar to the proposed: function add(a,b) (a + b)
    // but looks more math-y.

  5. JC: the parts rolled out in Firefox will be API additions such as Proxy, so object-detectable.

    Work on Simple Modules is starting in Narcissus (this is the Summer of Narcissus — it is getting major love from our awesome interns, see https://hg.mozilla.org/tracemonkey/js/src/narcisuss/), and will move to SpiderMonkey for a post-Firefox-4 debut.

    Modules add new syntax and require a new RFC4329-conformant script-type version parameter or better.

    The good news is that with modules we believe we can avoid adding new API names as global object properties. The module consumer gets to name the binding(s), as discussed in my talk.

    /be

  6. Hey Dude,

    There are many people like me who still use a single core low cache Pentium 4

    I wish you won’t increase the system requirement like Microsoft and buy new Hardware

    And, the recent hourly of Firefox 4 when I tested on this old rig was very resource hogging

    Regards and God Bless!
    Chris

  7. “will do, check under Presentations in a bit. Thanks,”

    brendan, sorry , i was thinking in a PDF ( or similar ) document … when i asked

  8. Brendan, may I ask what happened to the “Mozilla 2” project?
    There was supposed to be a major platform rewrite and cleanup, but you never posted any update on that in the last couple of years. All I found is this wiki page, but it does not say much about the current status either (and the roadmap reported on this page is clearly not updated): https://wiki.mozilla.org/Mozilla_2
    Thank you.

  9. Paul: parts of Mozilla 2 happened and are awesome (we just switched to 2.0 for the Gecko rv: to match Firefox 4; we have great static analysis tools; we have at least nanojit shared with Adobe’s Tamarin and TraceMonkey). Other parts of Mozilla 2 didn’t work out (XPCOMGC, the whole of Tamarin, which was lapped by JS VMs two years ago).

    So we’re in the Mozilla 2.0 milestone now. Who knew?

    /be

  10. Thank you for your reply.
    And what about the following two goals (as reported on that wiki page)?

    1) “Clean up our APIs to be fewer, better, and “on the outside” of Gecko, with symbol visibility strictly limited to public APIs”

    2) “Simplify the Mozilla codebase to make it smaller, faster, and easier to approach and maintain”

  11. Paul: both of those are ongoing work items, and we have made a lot of progress since I wrote that post, with more to come (and greater freedom now thanks to unfrozen APIs).

    But neither of those goods is a separable concern of the kind that, once “done”, we could declare final victory. I erred in implying they were anything of the “bug fixed, code complete” kind.

    The static analysis work has helped both of those goals, and more static analysis remains to be done on several fronts (see https://sixgill.org which we are rehosting, IIRC).

    A pressing issue for us is how add-ons use our APIs, which so far has required lots of user testing and feedback just to deal with effects and attempt to work back to causes.

    Jetpack will help, but legacy add-ons will endure; static analysis could help a great deal in taming the wild beasts lurking in that tall grass. More on this later.

    /be

  12. Brendan: A company called Parallel Networks is suing about 60 defendants for infringement of USPatent 6,446,111. (See https://www.google.com/patents/about?id=wmR9AAAAEBAJ&dq=6446111 if you’d lioke a copy of the patent.) The patent claims a system comprising a server, a communications link, an “executable applet dynamically generated,” and two constituent systems (data and a data interface). I’m so sure that this idea was not novel at the time of the patent application, Jun 18, 1999, but would love your help in proving it. Would you be so kind as to give me two minutes of your time to point me in the right direction? In particular, am looking for proof that software having these elements already existed at that time. I hate to see these trolls getting away with taking settlements for claims of infringement of invalid patents. (703) 851-3366 any time of day or night. Many thanks for your time. CKL

Leave a Reply to Brendan Eich Cancel reply

Your email address will not be published. Required fields are marked *