I’m Allen Wirfs-Brock, I am a research fellow in Mozilla Research and a member of ECMAScript standards committee for JavaScript. I’m actually the editor of the ECMAScript Language Standard. I’ve spent many years in the industry working with programming languages, many years working with Smalltalk before I was involved with JavaScript and JavaScript is my primary focus these days.
Sure, I think we are seeing today really a major transition in the nature of computing, a transition that is as significant as the transition from mainframe computing to personal computing we saw about thirty years ago and we are moving into an era that is not focused on single powerful machines that people go to, to perform specific tasks, and we are moving to that to an era where the whole environment we lived within is augmented with hundreds of computing devices and such, that really impact all aspects of our life. And we may think of it primarily today as mobile devices, mobile phones and stuff, but it really goes much beyond that to mini-devices, a thermostat, our cars, our televisions, these are all computing devices.
As this transition occurs, the technical ecosystem that dominated the personal computing era, which was pretty much the Windows PC platform, doesn’t really have the role it had in the past, I think there is emerging a new platform that can be common among in all these devices and I think that’s the Web platform. It’s the Web technology that was originally developed to run on browsers, but now increasingly it does not require the skin of a browser around that application platform, it can be essentially a standalone application on the device, but it’s using the same development technologies that Web browsers uses.
That is right, those are both examples of implementations of that model of technology, where you strip away many of the intermediate layers that exist on personal computers and all you have is a basic operating system kernel, typically a Linux kernel, and then right on top of that you have the web application browser, the HTML engine and the JavaScript execution engine and that is all you need.
It is really different for each of them, because each company or each organization that builds a browser has different business interests. So Microsoft is obviously very concerned about maintaining their Windows Base Software revenue model and stuff, and change away from Windows probably won’t be good for Microsoft unless they can adept to this new model and you see in what Microsoft has announced with Windows 8 that they are in fact embracing much of the web technology. Mozilla is an organization who is really devoted to nothing but the web and to the benefit of the users of the web.
Mozilla is a nonprofit organization, we don’t have shareholders, so who we answer to is really our users, so we want to make sure that as we move into this new computing era that we continue to have a platform that is built for the benefit of the people who use it, and it’s controlled from them. The other side of that, which to some degree we have to work to offset, is there are a lot of financial motives for organizations to simply try to monetize the user to gain access to the users’ information and use that to generate revenue and stuff. So we want to make sure as we move in this new era that we have a technical rich environment but one in which the user really remains in control.
About twenty years ago 1 one of the designers of Common Lisp wrote a series of papers around the concept "worse is better" and the basic idea being that technology only needs to be good enough to fill an ecological niche. It doesn’t have to be the best possible technology, but once a niche is filled by technology that is good enough, it’s very difficult to displace that technology with something even if that new thing is better in some abstracts sense. Being there is better than being better, so in the web application technology stack for niches of it that are already filled, so as an execution environment, JavaScript is already there, for display mark-up HTML is already there, CSS is already there for styling.
For any of those you can imagine better ways to do the things they do, but to bring in a better solution you have to be able to displace what is already there and that is very difficult to do for something that is completely not there at all, like for 2D Graphics when Canvas was introduced, there was not a good solution for 2D Graphics, so was easy for Canvas to come in and fill that niche. Right now it will be very difficult to displace Canvas with a better 2D Graphics model similarly with JavaScript and you can imagine better programming languages, you can imagine something like a generic virtual machine that can work pretty much with any programming language.
But it’s not clear how a technology like that could actually establish itself particularly since the web platform is a multi-vendor implementation it is not just one vendor who builds it could make a decision "I’m going to replace this piece", over a relatively short period of time, you have to convince all the browser vendors, essentially all the web application platform vendors to adopt this new technology and deliver it and make it available, and it is really difficult to see how that can happen for already established technologies like JavaScript.
Some people would like to see that emerge but again it’s hard to reach any sort of consensus on a particular technology to choose and get that adopted and actually it is much easier for people who have different languages they want to implement, to simply use JavaScript as a virtual machine and compile their favorite programming language in the JavaScript, so again use what is there as opposed to try to displace what is there with something new. It’s also the case that the dream of the universal virtual machine has never really been realized all that well. The JVM is still best for Java and it does support other languages the closer these other languages are to Java the better, similarly for the CLR, the .Net virtual machine, the more similar .Net languages, the C# better works. So a truly universal VM is, the Intel instruction center - any processor architecture on one sense those are the universals VMs.
7. You wouldn’t like to spend every day programming in that.
I spent many days programming in assembly language on those and other architectures.
All the major browser implementations now actually support ES5 pretty much in its entirety with a few minor variations and those are being fixed pretty rapidly but it’s still only about fifty percent of the browsers that are used in the world actually and support ES5, because it takes quite a while, particularly in some environments, in some browsers for them for people to switch to latest versions. In my talk I mentioned, it’s probably late 2013 before a web developer could safely assume that their users have ES5 available, which is about the same time we expect the actual specification for ES6, the next version of ECMAScript to be done. It takes about five years from the time we release a new specification to when it’s actually widely usable by web application developers.
The fact that takes long times though does not mean we should go any slower because the longer we wait to produce it even further out it gets. Like I said in my talk today, web developers should not be looking to the ECMAScript committee for solutions, for today’s problems, today, I mean that is the job for framework developers and library developers, they can provide immediate solutions. Our job is really looking for the long term and saying "What are people really going to need five years, six years from now in terms of what they are developing on the web?"
9. With respect to backwards compatibility, how has the ES5 experience been?
There has been, from what I’ve seen with the various implementations, very few problems with backwards compatibility. One of our major focuses in designing new versions of ECMAScript is maintaining backwards compatibility, so we are very reluctant to make any changes at all that would impact any existing code. We do make some subtle changes in very kind of dark, obscure corners of the language that we really have a lot of confidence that nobody actually runs into those issues, and sometimes even there we get surprised. For ES5 specifically probably the biggest impact we had with that was at the early roll-out of the ES5, one of the things ES5 added was JSON support and added a global object named JSON, and that actually had conflicts with some libraries that people had written, that had used that same name for the global but had a different API for it. Those were pretty quickly fixed, but for the most part backwards compatibility is pretty excellent.
10. Isn’t the ES6 supposed to only support strict mode, am I correct? Won’t that create issues?
That was being discussed for a while, and this was compatibility reasons, the thought was that for any of the new syntactic features in ES6 that it would have to be some of sort of explicit opt-in from users they have to one way or another say in their code that this is ES6 code they might do that in the script tag or with the main type of the file, the script file, or something. Once they are opted in, there is new features with there, and the assumption was that implicit in that would be a strict mode opt-in. Just on our last meeting based upon feedback from developers and such, we came to the conclusion that that sort of opt-in many developers felt that is going to be too much of a burden and they simply wanted to continue just write script files and have them work and be able to incrementally start using new features.
Internally we talked about "One JavaScript", that is only "One mode of JavaScript", strict mode is still there as it’s variation, but nothing beyond that, so when we had new declarations for example, or new statements all those will work in any mode of JavaScript and you would not have to opt-in to those.
That is the big question, it’s relevant. Certainly the big issue is Microsoft, I think from about 2001 through 2007, they were just not paying a lot of attention to the browser, they had IE6, and at the beginning of that period IE6 had dominant market share and Microsoft was worried about other matters, they just weren’t working on Internet Explorer anymore. So people forget that at the beginning of that period IE6 was probably the best browser around, it was simply the fact that it was not maintained and kept up the current standards over that period but with IE9 and what they have previewed with IE10, it’s a first-class standards-compliant browser.
Nobody has to going forward think about, it appears from this point going forward you really have to worry about whether you are running on a version of Internet Explorer or any other browser. There is still an issue and there is still a really significant legacy of pre-IE9 versions of browsers out there, there is still a problem. Anything Microsoft can do to get people to move forward faster will be appreciated by everybody but it’s a challenge even for them. The real question, I think, going forward is as we move in this new era of computing that we talk about, it’s how irrelevant is going to be, we don’t know. Obviously Windows 8 is part of Microsoft strategy that try to remain relevant and expand from the desktop environment to other sort of devices. We will see how it goes.