The Javascript Trap
|
|
|
Comments (54)
34 earlier comments in the full thread.
uncompiled code is source code, no matter how you massage the definition of it. Obfuscated code is just that, plain uncompiled code that is meant to run lean and mean. Doesnt mean you cant edit it, just means that it wont be painfully obvious and that you will have to work for your living.
Consider the two scenarios:
1. You start out with some simple code, you run it through a one-time transformation with "sed" and "awk" to find and clean up some screw-ups, and "cb" to make the indentation more consistent.
2. In preparation for a release, you run your code through a transformation as part of the build process.
In the first case, you are still left with "source code," because the result of the transformation is what you continue using in your project development.
In the second case, the result of the transformation does not meet the GPLv[123] definition of "source code", because your development efforts are still focused on the untransformed version. You are required to grant other users access to the pre-build code.
Your preferences regarding other parties are immaterial. No amount of wishful thinking on your part will change that. If you don't think you can live with those requirements, then choose a different license.
1. You start out with some simple code, you run it through a one-time transformation with "sed" and "awk" to find and clean up some screw-ups, and "cb" to make the indentation more consistent.
2. In preparation for a release, you run your code through a transformation as part of the build process.
In the first case, you are still left with "source code," because the result of the transformation is what you continue using in your project development.
In the second case, the result of the transformation does not meet the GPLv[123] definition of "source code", because your development efforts are still focused on the untransformed version. You are required to grant other users access to the pre-build code.
Your preferences regarding other parties are immaterial. No amount of wishful thinking on your part will change that. If you don't think you can live with those requirements, then choose a different license.
consider this, in all cases mentioned the code is human readable and editable ... your points 1 through 100 just failed on a simple logic test.
azerthoth, that doesn't matter. The developer has to distribute what he himself works on. The GPL is worded specifically to that effect.
Neither 2 nor 3 lays it out with specificity, truth be told from the way it is stated ... if someone does their work in assembly without an interpreter then that is the source code. Point of fact Linus original kernel was done that way.
azerthoth: They do. Gus3 quoted them above. The kicker is in the word "preferred".
azerthoth: Only if assembly code is the original, human-created and -edited form, does it become the "preferred" form for editing. As you state, "without an interpreter." If the assembly code is the output of "gcc -S file.c", it is not the "preferred" form, because it has been interpreted/translated from some other original form. Human readability of the translated result does not matter, and in no way figures into the GPL requirements.
The same restriction applies to original vs. obfuscated JavaScript.
Either you're grasping at straws, or you're trolling. I'm starting to wonder which.
The same restriction applies to original vs. obfuscated JavaScript.
Either you're grasping at straws, or you're trolling. I'm starting to wonder which.
Neither, in the case of the GPL, it does not clearly define preferred. Without that specificity it is nearly a meaningless phrase, and only wishful thinking will take it past human readable and editable. Neither license states definitively that it must be human readable or human editable, I am however willing to grant those points at the minimum.
They state that there is source code and that there is object code, they infer (not state) that the source code is the fashion in which the programmer wrote it, and that object code is the executable form of that code. Depending on language used those can be one and the same. Nowhere do they state specifically that the code in question can not be cleaned up to meet the authors needs, and if those needs happen to be tight fast and lean then so be it. You are allowed, under the GPL the publicly released code to make it work ... nowhere are you granted rights to the authors development notes.
Are either of you tracking yet? It may suck, but one of the things I learned a long time ago, if it doesn't say it specifically, it doesn't say it at all. Don't read what you think it says ... read what it actually says. Your arguments so far on this have been based on reading between the lines, when there is nothing there to read.
They state that there is source code and that there is object code, they infer (not state) that the source code is the fashion in which the programmer wrote it, and that object code is the executable form of that code. Depending on language used those can be one and the same. Nowhere do they state specifically that the code in question can not be cleaned up to meet the authors needs, and if those needs happen to be tight fast and lean then so be it. You are allowed, under the GPL the publicly released code to make it work ... nowhere are you granted rights to the authors development notes.
Are either of you tracking yet? It may suck, but one of the things I learned a long time ago, if it doesn't say it specifically, it doesn't say it at all. Don't read what you think it says ... read what it actually says. Your arguments so far on this have been based on reading between the lines, when there is nothing there to read.
az:
Actually, had you read my comment above, the GPLv3 does define the relationship of object code to source code. As to the GPLv{ANY}, the source code is still defined as "the preferred form" for editing, so if that's what you're editing (including your embedded comments), then you have to give that form (untranslated, uninterpreted, unobfuscated) to any user requesting it. Anything else is a violation of the license.
Actually, had you read my comment above, the GPLv3 does define the relationship of object code to source code. As to the GPLv{ANY}, the source code is still defined as "the preferred form" for editing, so if that's what you're editing (including your embedded comments), then you have to give that form (untranslated, uninterpreted, unobfuscated) to any user requesting it. Anything else is a violation of the license.
I did read your comments, and then went to the licenses again. You are putting your own interpenetration on preferred, it is vague enough to be meaningless in any context. Preferred by whom? It doesn't say. One can infer either the author or recipient.
As to what is GPL'd, only the released published code is. Anything prior to the release, i.e, development notes, failed glitches, and dead ends, prior to publishing are the authors own works, and being prior to release are not under the GPL, but rather any form of copyright that the author chooses to hold them under. Remember only published and distributed code can fall under the mandatory rules for production of code on request under either GPL. If it isn't transmitted or conveyed it is not and does not have to be included or produced.
As to what is GPL'd, only the released published code is. Anything prior to the release, i.e, development notes, failed glitches, and dead ends, prior to publishing are the authors own works, and being prior to release are not under the GPL, but rather any form of copyright that the author chooses to hold them under. Remember only published and distributed code can fall under the mandatory rules for production of code on request under either GPL. If it isn't transmitted or conveyed it is not and does not have to be included or produced.
When another user receives the program/code, assuming you gave it to them voluntarily, then it's released.
As for "preferred by whom," when you are editing your original code, then obviously that's the form you prefer to edit, independently of what you prefer to give away. Asked and answered.
And if it's "vague enough to be meaningless," how have so many corporate lawyers not seen what your brilliant mind and sharp eyes have so astutely observed? If you really believe that, I suggest a trip to Groklaw.net.
As for "preferred by whom," when you are editing your original code, then obviously that's the form you prefer to edit, independently of what you prefer to give away. Asked and answered.
And if it's "vague enough to be meaningless," how have so many corporate lawyers not seen what your brilliant mind and sharp eyes have so astutely observed? If you really believe that, I suggest a trip to Groklaw.net.
An additional point: In order to satisfy the recipient's preferences for "original" or "obfuscated", by your definition, you must make your own original source code available. Only then can the recipient decide which form he/she prefers.
original published source code ... you keep missing that little tidbit. In this case as source code and object code are the same thing, the obfuscated meets the letter of the license.
It is time however to remove myself from this conversation as you have decided not only to maintain a steadfast refusal to use logic, but have now taken to maligning my intelligence because I have failed to cede to a wholly unsubstantiated position. For the record though, that part of the GPL has never faced a challenge in the court room, only that the code wasn't provided as it is detailed that it must be. Not that it has been provided in an unacceptable form.
It is time however to remove myself from this conversation as you have decided not only to maintain a steadfast refusal to use logic, but have now taken to maligning my intelligence because I have failed to cede to a wholly unsubstantiated position. For the record though, that part of the GPL has never faced a challenge in the court room, only that the code wasn't provided as it is detailed that it must be. Not that it has been provided in an unacceptable form.
"Published"? Where does any form of the GPL say anything about "publishing" w.r.t. "preferred"?
Publication, as in making a work available to the public, is optional; the only term appearing in the GPL regarding users receiving the work is "distribute or publish", as in many self-selected recipients, or pertaining to two-party transactions. It's in v1 and v2 of the License. All other occurrences of "publish" concern the License itself, not the work licensed.
In no case does the meaning of "preferred" change upon "publishing" a work.
Get over yourself. You're obfuscating your own words and moving goal-posts, rather than admit you don't have a leg to stand on.
Publication, as in making a work available to the public, is optional; the only term appearing in the GPL regarding users receiving the work is "distribute or publish", as in many self-selected recipients, or pertaining to two-party transactions. It's in v1 and v2 of the License. All other occurrences of "publish" concern the License itself, not the work licensed.
In no case does the meaning of "preferred" change upon "publishing" a work.
Get over yourself. You're obfuscating your own words and moving goal-posts, rather than admit you don't have a leg to stand on.
azerthoth's point is very similar to the point I was trying to make above until I gave up caring.
The problem with the way the GPL is worded (and I concede that Sander et all are likely right in what the spirit of those statements are meant to infer) is that all anyone has to do (if dragged to court, for example) is say that his preferred source code for editing is the obfuscated code and since no one will be able to prove him wrong, he wins the court battle end of story.
As we saw with Tivoization and the Microsoft-Novell deal, if it's not worded explicitly, it isn't there at all (just as azerthoth said).
There's no such thing (to a room full of bloodsucking lawyers) as "spirit of the license".
What the FSF needs to do is clarify that "Object code" can also simply be the obfuscated form of the original source code and it would likely be better protection (I'm not a lawyer, so it might need even more clarification than that, I don't know).
The problem with the way the GPL is worded (and I concede that Sander et all are likely right in what the spirit of those statements are meant to infer) is that all anyone has to do (if dragged to court, for example) is say that his preferred source code for editing is the obfuscated code and since no one will be able to prove him wrong, he wins the court battle end of story.
As we saw with Tivoization and the Microsoft-Novell deal, if it's not worded explicitly, it isn't there at all (just as azerthoth said).
There's no such thing (to a room full of bloodsucking lawyers) as "spirit of the license".
What the FSF needs to do is clarify that "Object code" can also simply be the obfuscated form of the original source code and it would likely be better protection (I'm not a lawyer, so it might need even more clarification than that, I don't know).
Oh, and you'd need to define what obfuscated means, since some people write really horrendous code to begin with that I would consider to be "obfuscated" :-)
Sigh...
Find any programmer who prefers to read and edit obfuscated code, not merely as an academic exercise, and I might concede your point. But if code obfuscation is part of the build-release process, then by the definitions above, the resulting obfuscated code is not "source code."
Find any programmer who prefers to read and edit obfuscated code, not merely as an academic exercise, and I might concede your point. But if code obfuscation is part of the build-release process, then by the definitions above, the resulting obfuscated code is not "source code."
gus3: I think you misunderstand what I'm saying.
I'm not saying that any developer actually prefers editing obfuscated javascript. I'm saying that if ever someone should accuse a web developer of not distributing the "preferred source for editing" that it would boil down to his word against the developer's, and the legal system will favor the developer simply because the accuser cannot prove that the obfuscated source isn't the preferred source code.
I'm not saying that any developer actually prefers editing obfuscated javascript. I'm saying that if ever someone should accuse a web developer of not distributing the "preferred source for editing" that it would boil down to his word against the developer's, and the legal system will favor the developer simply because the accuser cannot prove that the obfuscated source isn't the preferred source code.
@KS
I don't know anything about the details of this part of the GPL. Nonetheless, in my experience, it is difficult to predict what the ruling would be. A court would (my guess) ask whether a typical programmer would prefer the obfuscated source. You could have a computer science professor and a few experienced programmers explain why one version is better, and make a strong case that one version is preferred. I don't think it would be as difficult as having to disprove claims made by the programmer about his own preferences.
I don't know anything about the details of this part of the GPL. Nonetheless, in my experience, it is difficult to predict what the ruling would be. A court would (my guess) ask whether a typical programmer would prefer the obfuscated source. You could have a computer science professor and a few experienced programmers explain why one version is better, and make a strong case that one version is preferred. I don't think it would be as difficult as having to disprove claims made by the programmer about his own preferences.
@KernelShepard: A couple of things.
We were talking about e.g. using third party libraries on your website. jQuery is an excellent example because it's licensed GPL (and MIT, but let's stick with GPL in this duscussion). The people who create jQuery work on the unobfuscated code, so that's the code that you on your website should distribute (or point to with a header).
As for obfuscated code being "object code" I suggest you read this article by Joel Spolsky on compiling ASP/VBScript to PHP. He has a great explanation on why this is "compiling" and why PHP is "object code" even though it's fully readable (albeit ugly. Just like obfuscated JavaScript!)
http://www.joelonsoftware.com/articles/FogBugzIII.html
We were talking about e.g. using third party libraries on your website. jQuery is an excellent example because it's licensed GPL (and MIT, but let's stick with GPL in this duscussion). The people who create jQuery work on the unobfuscated code, so that's the code that you on your website should distribute (or point to with a header).
As for obfuscated code being "object code" I suggest you read this article by Joel Spolsky on compiling ASP/VBScript to PHP. He has a great explanation on why this is "compiling" and why PHP is "object code" even though it's fully readable (albeit ugly. Just like obfuscated JavaScript!)
http://www.joelonsoftware.com/articles/FogBugzIII.html
Post a comment
A free account is needed to post. Write your comment here first: your text is kept in this browser while you sign up or log in, and is waiting for you when you come back.
Your message:Markdown: **bold**, *italic*, [text](https://link), - lists, > quotes, $x^2$ for math. Formatting help
Sign up and post (it is free) or Log in and post
