There has been quite a bit of chatter lately on the change to Ext JS licensing. Working for a Ajax library/framework/platform vendor myself, I thought I would review the GPL and see how it would relate to an Ajax library. The GPL license was interesting and long. One thing with all licenses is that depending on what you are doing they apply differently.� GPL makes sense for lots of software, MySQL uses the license, the Java source is also GPL. Ajax is slightly different than either of those two products because of how the user interacts with the application.

Open Source licenses are definitely not my Bailiwick. This entry is more to understand and to prompt discussion.

I have updated the blog after more thought and some more reading.

Open source licensing

One thing that people have come to believe is that open source makes peoples life easier, but for me it doesn’t, the licenses are confusing, theres lots of them, they are multiple versions and they vary greatly in what you can do and understanding them all takes quite a bit of time. This gets even more confusing because depending on what you’re creating, client-side software, software as a service or a platform/framework, they seem to apply differently.

Types of Licenses

So as an Ajax library which is the best type of license for you? From what I have seen or used there are Five(I originally started with 3 than as writing I needed to add two more) categories, which licenses fall into

  1. CopyLeft LicensesGPL is a classic example of this, it is designed to ensure the code that is created using the GPL product is also GPL under certain circumstances. Those circumstances are key and looked into more below.
  2. Liberal Licenses – Allow entities (people or companies) to use the software without any requirement carry forward that license on the software they build.

    * MIT
    * Apache 2.0
    * BSD
    * Eclipse Public License
    * Academic Free License

  3. Others - LGPL seems like a less stringent license than GPL. Mozilla Public License (MPL) is confusing because it is a tri license.

    “Core Mozilla project source code is licensed under a disjunctive tri-license giving you the choice of one of the three following sets of free software/open source licensing terms:
    * Mozilla Public License, version 1.1 or later
    * GNU General Public License, version 2.0 or later
    * GNU Lesser General Public License, version 2.1 or later” – Source MPL

  4. The flavors of above licenses – These are licenses which change slightly the any of the above.
  5. Dual license – The software can be used under a commercial license or under an Open Source license, typically a CopyLeft license like GPL.

A good source for all things Licensing. Open Source Initiative OSI.

Is the GPL license the best choice of the an Ajax library?

CopyLeft and Ajax

In the case of a Ext JS, they chose to move to a dual licensing scenario where you can use a commercial license or a GPL license.

After Looking through the GPL license, I’m more confused than when I started reading it about how it affects Ajax applications. Again, I am not a lawyer nor didn’t I stay at a Holiday Inn Express, but I have seen Boston Legal(I am more a Denny Crane type).

Would I need to CopyLeft the license and how?

One of the things that differ between Ajax and a Software as a Service like searching for something on Google is that the code for the application is actually transmitted to the a user’s computer. In the GPL license they have the term “To convey”

“To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.”

In the case of Ajax, the code is received by other parties – it’s transmitted via HTTP to the user’s computer. Is this enough to trigger a GPL CopyLeft? People have received the code as part of application.

The license does outline that “Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.” That means if the JavaScript code was run on the server-side, the application would not have been coveyed allowing my application service to retain any license I want.

This is the biggest factor in the question, “Does GPL make sense for Ajax libraries?” If the transmitting of the Ajax code to the browser is conveying the non source form, than you would be crazy to use the library under those terms for anything more than to hack around.� Why do I say that? Reading the rest of the license, I found that the requirements to meet the GPL license even for internal application would be more of a burden than a typically organization would taken on.

Part two: for those how like to read :)

For the rest of this discussion, I will assume that using the GPL version of Ext JS or any Ajax library in my “application” will cause my application to be GPL. If you have other opinions or knowledge do share please do so. It would be cool if you could add comments inside the body.

Now I have even more questions:

Who do I need to provide the “code” to?

I am not sure of this, I didn’t see anywhere in the license that says certain people can use the application without needing to carry forward the license.

Update: After reading the license again and thinking about this some more; the license would be applied to a corporation not an individual or department. Meaning you would not be “conveying” the product to internal users because they would be part of the licensed users.  But if this was a product that was used by external users than you would not be able to restricted their rights to the “code”

This doesn’t make sense if the above update is true:

If my application was internal, do I need to give anyone who ever used my application a copy of the “code” (I try to define code later). What if they switch jobs can they take the application with them? Section 10 says:

“You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.”

This probably means I can’t have employment restrictions or agreements that invalidate or forfeit the license for them in anyway.

How do I need to give them access?

Reading the last paragraph of the Section 0.-

“An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.”

Because the application is “An interactive user interface” the application will need to display “Appropriate Legal Notices”. So for my application, I will need to provide this information or I will be out of compliance.

What do I need to give to them?

What part of my application needs to be GPL’d? All code that is used to create the application? Meaning all JavaScript, images, HTML, CSS, server-side code Java or PHP and other.

Being that Ajax is “Source Code” and the event was trigger by transporting the code to client. Does having my Ajax “Source code” transmitted as well cover me?

Reading what “Source code” means in the License under Section 1.

“The ’source code’ for a work means the preferred form of the work for making modifications to it.”

The compressed JavaScript that I sent to the client is not the preferred means of making modifications, so I will need to do more. My application would be conveying Ext JS in Non-source form. Section 6. of the GPL license states.

“You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:”

“Corresponding Source” is described in Section 1.

“The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work’s System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.”

The Corresponding Source for a work in source code form is that same work.

So I will need to supply all the things that are needed to build and execute the application other than System Libraries and general purpose tools (Ant). Section

Update:  There seems to be two thoughts on this; 1.) The back end resources are a tool used to create the application therefore it doesn’t need to be GPL 2.) The back end resources are part of the application.  For the first one, I don’t think it matters if it is a “tool used to create the application” the license says that all those things needed to generate the application are part of the Corresponding Source.

Patents?

There is a big section under the GPL that talks about patents Section 11. One of the paragraphs that stands out is the following:

“Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor’s essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.”

Open Source Software and Valuation

Software vendors are in business to make money, which keeps software engineers employed and investors happy. Nothing sadder than homeless software engineers. Don’t believe me, go to San Fransisco and give the guy who knows binary number expression and JavaScript a few dollars (No seriously I have). I know I like my paycheck, my wife would be mad if I didn’t get one, and the kids are all want-want-want, need-need-need, get-get-get.

That why thats why we need licenses, they help coerce, guide people into a Quid Pro Quo – “something for something” relationship. The other things a license provides are: protection against Liability, theft either intentional or otherwise and/or opportunity. I wouldn’t want to create something that someone else could take, apply resources to and profit from without that Quid Pro Quo thing, or would I? This gets into a larger discussion about what is the best best Business Model/License Strategy for a software vendor? I will leave this one alone for today, but it is something that is critical to know before picking a license.

Summary

Licensing is one of the trickiest parts of a software project and getting the right balance of freedom, preservation of revenue and long term value is essential to everyone in the ecosphere. Ext JS definitely made things more simpler for the everyone involved by changing the license, even though they made the open source portion of the license more restrictive by making it GPL.

By using GPL for client-side Ajax applications it seems my entire application will need to be GPL if I go that route. One thing that I am still not sure of regarding a web application – is it the page of the application website or the entire website that needs to be GPL?

If by choosing a dual license where no one (or a tiny percentage) would ever choose the GPL route – is the project really open source? The old tree in the woods falling thing.

Licensing experts that want to comment or add your opinion, please do so or point everyone to a source that people can use to understand this better.

Bob (Buffone)