Stallman: the JavaScript trap
Stallman: the JavaScript trap
Posted Mar 23, 2009 9:49 UTC (Mon) by ledow (guest, #11753)Parent article: Stallman: the JavaScript trap
The point of a web browser is not to render a webpage written in Javascript, it really isn't. It is to provide a virtual machine that the webpage can use to display itself. Whether the "tags" in that virtual machine are of the form "<body>" or "<script=>" doesn't matter. By its very nature, each non-free Javascript is necessary for the site to render and virtually impossible to replicate or replace without being the site's owner. If you *want* to do that, you already can... proxies, Javalets, etc. in certain browsers allow you to do that. But you are giving the owner of that website a virtual machine in which to display their website, NOT letting them run arbitrary code.
It just seems to me that this is a "Freedom" too far. The OS is Free, the browser is Free, even the protocols and language are Free. But the Javascript itself is part of the *content* of the website. Removing it or changing it removes and/or breaks the content. Asking the owner to replace it is the same as asking the owner to re-license their content as Free - they can, or they cannot, but you're not going to get anywhere by telling them they must, and do it now. And if they have Free content, they will already have Free Javascript, and be avoiding other similar technologies.
You're asking site owners to re-license their content. That's a BIG problem. Sure, a Free, Open web would be marvellous. We have bits and pieces of it, sure we do, but it's naive to assume that you're going to turn it into a giant, intellectual exercise in "Freedom", or even a small part of it.
This is the only problem I've ever had with the FS movement - there comes a point where you just have to say... whoa, no, hold on a moment. You can go too far. "Open" OS. Wonderful. "Open" apps. Brilliant. "Open" BIOS/firmware even. No problem there, no problem at all. "Open" data (GIS, etc.). Fantastic. "Open" text (e-books, GFDL documentation etc.). Wonderful. But "Open" webpage Javascript? You've strayed into the wrong territory, thinking that the world wants to be Free.
Yes, in some cases the Javascript is a necessary part of the website, because it *is* the content. But you're not going to do much more than have a handful of GPL / BSD / public-domain etc. Javascript libraries from the people who are already giving them away. There's tons of them - you can get thousands of things that will do the job... I've never paid for a Javascript yet, I'd much rather write one and give it away. But to suggest that using a non-free Javascript as a user is somehow evil and damaging and to restrict the browsers experience to only-Free code? It's like saying I want to write an OS that will only run GPL programs. Of course I can do that. Of course, nobody has to run it. But that's NOT a Free OS. You have gone too far.
It's like the people who curse the WINE project - it is Free, but it allows you to run proprietry code *if you want*. More importantly, they don't expect or provide the option to "Only run Free Windows programs". That's a *good* thing. This is one of the reasons that I stay away from "purist" distributions - I want the choice (the Freedom, if you will) of using programs that I want to, not of having to find an OS equivalent of EVERYTHING. This is why there are many more "non-purist" distributions than "purist" ones. People don't want Freedom of software, necessarily, they want Freedom of choice. If they have to pick between two evils, they want the choice to pick, not be told that they "can't" use the proprietry software and must use a limited OS equivalent.
And I don't WANT to run a modified version of Javascripts on a website, any website. If the Javascript is really that broken that I need to modify it, then it is up to the author of that website to fix it... I'll just stop using the website and/or complain until it is fixed. Sure, if the code is open, I can fix the Javascript, but even where it IS open and I *can* fix it, the only thing I will ever do is email the author and tell them how to fix it. They need to attract my visits, I don't need to look at their website. If the website dies because the author dies and takes his code with him, so be it.
At worst, I would seek out and/or create an Open equivalent of their content if it was really that necessary. Running home-brew "equivalents" will cause nothing but problems and the creators of the content will not care about them. In fact, by doing so you are hiding the problem - like the browsers that let you "fake" User-Agents. It lets you get at the content, sure, but you're not fixing the underlying problem of a broken website. The user is free to choose to do that, but I've been in no-end of meetings where things are said like "Yes, but we don't get any Opera visitors to our website at all!"... that's because the site is BROKEN for Opera visitors and/or they have to masquerade as a different browser to get it to work. Masquerading actually fixes one user's problem temporarily, and masks the real problem of a crappily designed website. This is no different - Javascript replacement will fix one user's problem temporarily but the site will STILL be broken.
If you are viewing a webpage, you are viewing content produced by other people. Some of them will Open their content, some of them won't. You are just using a well described, open source implementation of a virtual machine to display it. You can't then try to sensibly enforce that licensing down to the content you are trying to view and expect people (especially content-producers) to follow.
Encourage Open Source. Encourage freedom of content. Encourage relicensing of content to Open licenses. But to "enforce" it, or to somehow suggest that Javascript is any different or deserves any more attention that any other content on the website? That's ludicrous. As the article itself indicates, if it's not Javascript, it's Flash. If it's not Flash, it's Silverlight. If it's not Silverlight, it's Java. If it's not Java, it's Real streams. If it's not that, it's other encumbered codecs. They are all *content*.
I would kill for decent, open-source content *interpreters* for all of the above - why? Because it's plainly obvious that the people using non-free content in the first place don't care about free content and are not going to change, so a content "player" is the only way to effectively view that content if you decide it is vital. If the authors cared, they'd already be producing it in some other language or releasing the source to their Flash files etc. The point of free interpreters is that it will play non-free content. It is *not* so that you can then force or even encourage that content to be free - in fact, it works against you and should only be used as a last resort. You use a Free interpreter when there are no other options to let you progress further. Free interpreters exist for Javascript. That's the best you'll do. Everyone who wants to have Free content has already got it. The message is out, but the people you want to hear it aren't listening. "Shutting them out" is an option that they don't care about and which won't help.
This is just a sneaky way to introduce an automated "verification" of a license, something which is dangerous in my opinion, and use it as a stepping stone to having every webpage, every text file, every video stream, every executable tagged with a license. Although noble, it doesn't solve any problem we currently have, and creates the problems of people somehow "altering" commercial content to pretend it is Free and then causing tons of hassle when automated systems then propogate that worldwide as "Free" source code. Licensing is not a "tick-the-box" choice... it is a legally binding agreement that varies depending on the jurisdiction and should be checked carefully.
And Javascript is *content*. Be grateful that we can even run it, or 75% of website would not perform as well as they do. Asking those 75% of website to re-license is stupid, because if they wanted to, they wouldn't be using that code in the first place.
