Google’s Dart language is not supported by any Web Browsers other than a special build of Chromium known as Dartium. To use Dart for production code you need to run it through a Dart->JavaScript compiler/translator and then use the outputted JavaScript in your web application.
Because JavaScript is an interpreted language everyone who receives the “binary”(Aka, the .js file) has also received the source code.
Now, the GNU General Public License v3.0 states that:
“The “source code” for a work means the preferred form of the work for making modifications to it.”
Which would imply that the original Dart code in addition to the JavaScript code must also be provided to the end user. Does this mean that any web applications written in Dart must also provide the original Dart code to all visitors of their website even though a copy of the source code has already been provided in a human readable/writable/modifiable form?
5
Yes, if the code is under the GPL and you deliver the outputted JavaScript, you must also provide the original Dart code. This would typically be done with a link to download the source code from your site but you could also embed it in a comment or something like that.
I think the easiest way to comply with the GPL in this case is to use option d for distributing the source
d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
Essentially you do this when you include the JS file in your page
<script src="file.js" /><!-- source at http://example.com/path/to/modified/source/file.dart -->
10
First of all we are talking about GPL, not AGPL.
If you do not distribute a GPL’d the application, if you run it on a server, you don’t have to provide the source code. There is AGPL for that. GPL is all about distribution.
From Drupal FAQ:
Do I have to give the code for my web site to anyone who visits it?
No. The GPL does not consider viewing a web site to count as
“distributing”, so you are not required to share the code running on
your server.http://drupal.org/licensing/faq/#q6
Please note that Drupal is licensed under GPL and contains js files (a lot).
From GNU:
The purpose of the GNU Affero GPL is to prevent a problem that affects
developers of free programs that are often used on servers.Suppose you develop and release a free program under the ordinary GNU
GPL. If developer D modifies the program and releases it, the GPL
requires him to distribute his version under the GPL too. Thus, if you
get a copy of his version, you are free to incorporate some or all of
his changes into your own version.But suppose the program is mainly useful on servers. When D modifies
the program, he might very likely run it on his own server and never
release copies. Then you would never get a copy of the source code of
his version, so you would never have the chance to include his changes
in your version. You may not like that outcome.Using the GNU Affero GPL avoids that outcome. If D runs his version on
a server that everyone can use, you too can use it. Assuming he has
followed the license requirement to let the server’s users download
the source code of his version, you can do so, and then you can
incorporate his changes into your version. (If he hasn’t followed it,
you have your lawyer complain to him.)
Source: http://www.gnu.org/licenses/why-affero-gpl.html
13
In general, it really depends on the license. In your case, Dart is a bad example since it’s BSD, and it seems GNU 3.0 covers the case you are talking about. As a non-lawyer I would interpret that quote as “The generated code isn’t specifically covered”
Dart Home Page Refers to this: BSD License
So you question about GPL is moot
Also: GNU 3.0 License
Is there some way that I can GPL the output people get from use of my program? For example, if my program is used to develop hardware designs, can I require that these designs must be free? (#GPLOutput)
In general this is legally impossible; copyright law does not give you any say in the use of the output people make from their data using your program. If the user uses your program to enter or convert his own data, the copyright on the output belongs to him, not you. More generally, when a program translates its input into some other form,> the copyright status of the output inherits that of the input it was generated from.
So the only way you have a say in the use of the output is if substantial parts of the output are copied (more or less) from text in your program. For instance, part of the output of Bison (see above) would be covered by the GNU GPL, if we had not made an exception in this specific case.
You could artificially make a program copy certain text into its output even if there is no technical reason to do so. But if that copied text serves no practical purpose, the user could simply deletethat text from the output and use only the rest. Then he would not have to obey the conditions on redistribution of the copied text.
14
The basic question is:
Does including javascript on web page (e.g. referencing via a script tag) count as “Conveying” the GPLed work?
If it does, you must make the source available in the preferred form for modifying the code, if not you don’t. In this case the preferred form is the original Dart source code used to generate the javascript.
I can’t find an explicit answer to this question on the FSF site but Stallman’s essay “The Javascript Trap” seems to indicate that he does consider it Conveying and as such you would have to make the original Dart source code available. See his note about allowing minified versions that do not include the text of the license but are still covered by the license.
See also this FAQ about javascript and templates for an exception that would allow templates to use GPLed javascript without being GPLed.
The absolute best way to know if what you want to do is compliant with the license is to ask the Copyright holder of the code, because only they have the right to enforce the license. They may have interpreted the license differently and be willing to add an exception to make their interpretation explicit.
2