Time to Fork Ext JS and MyGWT

Bad news but not really unexpected for me, Ext JS and MyGWT (a.k.a. Ext GWT) have just changed from LGPL to GPL today. In a nutshell, Ext JS and MyGWT are now useless for free commercial use. If you have already based your projects on these libraries, my general recommendation is to continue using Ext JS 2.0.2 until a fork is available or you can transition off Ext JS.

Ext JS claims that it is a foundation you can build on. Well, I disagree when the license keeps changing to be far more restrictive around every major revision (i.e., BSD to LGPL to GPL). Even though LGPL is open to the library creator’s clarification as to whether the LGPL license extends to your JavaScript code, GPL seems pretty clear that all your JavaScript code will be affected by GPL as well. In comparison, even JBoss and MySQL – two highly controversial open source projects - never tried anything close to this to my knowledge.

If you are a manager, you might be tempted to just pay for a commercial license since the license fee may not seem large for you. Be aware that you will be committing your project to vendor lock-in. The logical next step for Ext the company is to take Ext JS completely commercial with an increase in license fees to feed its expansion.

If you are still on the fence about choosing between GWT-Ext and MyGWT, I believe GWT-Ext is now the clear choice. The author of GWT-Ext was the first to add the clarification that GWT-Ext can be used in commercial projects without worrying about the LGPL contamination. This pressured MyGWT to add a similar clarification after a week or so, but may ultimately have accelerated the MyGWT license change to GPL due to the potential profitability impact to Ext the company. Unfortunately, both libraries depend on Ext JS, and their futures may be somewhat murky now.

34 Responses to “Time to Fork Ext JS and MyGWT”

  1. Michael Wharton Says:

    I think forking Ext 2.0.2 is inevitable. Jack may think that he can convince users that its not permissible and even use strong language but anyone who knows software law and has read his license can quickly tell that anyone can fork ExtJS as long as its LGPL. LGPL is a copyleft license and ExtJS cannot change this. PS : I am a lawyer.

  2. admin Says:

    @Michael

    Good to get a perspective from a lawyer.

    From the ajaxian.com discussion thread, I found this link on the legal status of Ext JS.

    http://en.wikipedia.org/wiki/Talk:Ext_(javascript_library);

    The two default Ext JS themes cannot be used since those are covered by a proprietary license and not by LGPL.

  3. Michael Wharton Says:

    You might have also read this thread where a user redistributes Ext under LGPL, and completely within his rights per the Ext 2.0.2 license.

    http://mjg59.livejournal.com/84586.html

    I feel this was what prompted just a hasty and rather sudden move from the Ext folks into changing to a GPL license. The fear of losing your house might cause you to change the terms of your mortgage…. oh, right, you can’t do that without the agreement of the bank.

    Think before you grant rights - you can’t undo the permissions you’ve granted no matter how much you yell saying, “no, no, you cant do that as thats not what I really meant”. He talks about having excellent IP counsel, but I strongly suspect they don’t exist. And if they do, I’ll be happy to respond to them if they make any claim directly on the ExtJS forums.

    The fact that ExtJS was originally licensed under LGPL terms was a deliberate move to gain a large user base, and fortunately such bait-and-switch just doesn’t fly when it comes to the law.

  4. admin Says:

    @Michael

    I read the link that you provided.

    I agree that Ext wants to have its cake and eat it too. It craves the goodwill and increased popularity from an open source project, but wishes to be free from any actual open source obligation. In an efficient market, this kind of business practice should not be rewarded.

  5. admin Says:

    You can download Ext JS 2.0.2, the last version with LGPL, here:

    http://yogurtearl.com/ext-2.0.2.zip

    I also put my local copy on this Web server for now. I did a diff against the copy from yogurtearl.com and they match.

    http://abotar.com/ext-2.0.2.zip

  6. admin Says:

    Since mygwt.net has been taken down, I will put my local copy of MyGWT 0.5.2 on my Web server for now. 0.5.2 is the last version of MyGWT with LGPL.

    http://abotar.com/mygwt-0.5.2.zip

  7. admin Says:

    This blog entry is on the front page of ongwt.com.

    http://www.ongwt.com/post/2008/04/22/Time-to-Fork-Ext-JS-and-MyGWT

  8. Mark Murphy Says:

    “GPL seems pretty clear that all your JavaScript code will be affected by GPL as well”

    I don’t know about “pretty clear”, as the GPL has historically been written more with an eye towards compiled languages, but you’re probably right that this is Ext’s intent.

    In the case of Ext JS, this would involve any Javascript you write or explicitly arrange to use on your page (vs. implicitly, e.g., by loading a user-selected OpenSocial gadget). This would not carry over into any server side logic. Since, license or no, anyone can copy this Javascript code (albeit illegally if you haven’t licensed it for reuse), you should not be relying on such Javascript code as a significant barrier to entry for any competition for your commercial product. Hence, the fact that you have to make your Javascript available on GPL terms shouldn’t really be a big deal.

    Now, Ext GWT is another kettle of fish. Since it involves linking on the server side, your entire Java code base would be subject to the GPL terms…if you distribute it. If you’re operating a Web application that you are solely hosting, you aren’t going to be distributing it, and therefore the GPL won’t apply. If you are operating a Web application with an eye towards customers purchasing your server component to run on their own servers, though, then the GPL will apply.

    “Well, I disagree when the license keeps changing to be far more restrictive around every major revision (i.e., BSD to LGPL to GPL)”

    I would definitely recommend no more than one license change per decade…

    “The logical next step for Ext the company is to take Ext JS completely commercial with an increase in license fees to feed its expansion.”

    This isn’t unique to Ext, though — MySQL and JBoss, to use your examples, could do the same thing. Done right, your code should be no more dependent upon Ext’s code than it is on MySQL or JBoss.

  9. admin Says:

    @Mark

    See the response from Jack of Ext. Jack has confirmed that both the client and server code referencing Ext JS will have to be GPL.

    http://extjs.com/forum/showthread.php?p=156236#post156236

    Based on what I have read in the past regarding GPL and JavaScript, the non-lawyer consensus appears to be that a GPL JavaScript library will contaminate private JavaScript source code that uses it. This seems to be the general agreement of the Ext users in the above thread as well. I personally would not have given Ext JS a second look had I been certain from the beginning that it will eventually change to GPL.

    In response to your third point, JBoss and MySQL are controversial products with huge followings that have been around for many years now but are still available for free commercial use. If they ever tried to go commercial only, it is pretty much 100% guaranteed that there will be successful forks of those projects. Also, there are mostly interchangeable open source products with more business-friendly licenses available.

    As popular as Ext JS is in the Ajax world, it does not have nearly the number of users of those two projects. The only remotely comparable Ajax libraries are YUI and Dojo, and they are not quite there yet in my opinion. Therefore, Ext JS has a captive audience. In the span of less than two years, Ext JS has had two major license changes. Assuming that Ext continues to behave like a short term profit-maximizing company, it seems reasonable to assume that eventually Ext will either go all commercial, add additional restrictions on top of GPL, or increase the overall licensing fee at will. Ext will because it can.

    Granted, JBoss is on the business tier, and MySQL is on the persistence tier, so they may not be directly comparable to Ext JS and MyGWT on the presentation tier

  10. Stephan Schmidt Says:

    This looks as planned this way from the beginning. What bad taste.

    Peace
    -stephan

  11. Ext GWT 1.0 Beta released | GWT Site Says:

    [...] for Ext JS and Ext GWT is causing quite a bit of discussion. License discussion on Ext-JS forum A call to fork Ext JS and MyGWT Darrell confirms that old MyGWT forums will no longer be [...]

  12. admin Says:

    @Stephan

    I agree that the whole thing is disconcerting. I hope this type of business practice does not become the norm for all successful open source companies. All the old mygwt.net forum posts are apparently gone for good too, possibly to boost Ext GWT support subscriptions?

    http://extjs.com/forum/showthread.php?t=33290

  13. admin Says:

    To answer questions that a couple of people had:

    #1

    Ext acquired MyGWT shortly after controversy as to whether MyGWT violated the Ext JS’s proprietary images license. MyGWT used to be BSD and switched to LGPL after the acquisition. I assumed that Ext gave MyGWT an ultimatum to join the organization or be shut down.

    #2

    GWT-Ext will continue to be licensed under LGPL according to this thread

    http://gwt-ext.com/forum/viewtopic.php?f=5&t=995

  14. jd Says:

    ext 2.1 and ext gwt 1.0beta1 are NOT distributed under the GPL. I repeat they are not distributed under the GPL. Just look at the license file and the source code as I have. There are additional restrictions over and above the GPL.

  15. admin Says:

    @jd

    Here is the license page:

    http://extjs.com/products/license.php

    Like the LGPL-covered Ext JS, they have the dual licensing plus some additional ambiguous paragraphs to try to nudge the users to buy a commercial license. However, it is my belief that the libraries can be redistributed with only the LGPL or GPL licenses and no additional baggage. See this thread for details:

    http://extjs.com/forum/showthread.php?t=33192

    I did not bother downloading the GPL-licensed archives since I am done with Ext until hopefully a fork happens. Please let me know if the included text is significantly different from the license Web page.

  16. kellys Says:

    I also thought about a fork, but it’s not that easy. Even if we do find a way to bypass the 2.0.2 license restrictions, there is the problem that the “Assets” (images and CSS) for Ext are under a separate license that prevents derivative works:

    Quote:
    License of CSS and Graphics (”Assets”)
    ——————————————————————————————
    The Assets distributed with Ext are licensed for use ONLY
    with their associated Ext JavaScript component (”Component”). Use of the Assets in
    any way that does not also include the Component is prohibited without explicit
    permission from Ext JS, LLC. Deriving images and CSS from the Assets in an effort
    to bypass this license is also prohibited.

    Since the library is pretty much useless without the CSS, this will hinder any effort to fork. It would be a lot of effort (if not impossible) to create completely unique CSS that is not based on the original CSS.

  17. julia Says:

    could somone please explain to me/correct me: if i write an ext gwt web application, using the ext gwt jar, i have to publish the java sources of my web app under the gpl (if i distribute my web app). i am the author of that webapp (correct?). what about if i use snipplets of the sample codes? i can link my webapp with other commercial java jars, if i put an exception in the my licence?! thank you

  18. sakuraba Says:

    Ext is now the bad boy of open source. They shall never be trusted again for this egomaniac stunt.

  19. admin Says:

    @kellys

    One option for a fork of Ext JS and MyGWT right now is to start with the Slate theme, which is a high-quality, original images and CSS theme pack from a third-party developer. It will be great if the author of that theme pack is willing to explicitly put it under a business-friendly open source license. The fork can prominently credit all contributing theme pack authors and maybe any grateful company can donate or pay money to the theme pack authors instead of buying an Ext JS license.

    http://extjs.com/forum/showthread.php?t=15989

    Initially, the fork should focus on bug fixes, but eventually it will have to worry about upcoming browsers like Firefox 3 and Internet Explorer 8. A written guarantee that the fork of Ext JS and MyGWT will not change to be more restrictive than LGPL in the future can drive a large portion of the Ext JS community over to help. There should be a meritocracy as far as committers go, and there should be committers from multiple companies. Also, I think it is important for the authors of Ext JS plugins and themes that disagree with the GPL change to refuse the license change to GPL for their contributions.

  20. admin Says:

    Looks like someone added a link to this blog entry from dzone.

    http://www.dzone.com/links/time_to_fork_ext_js_and_mygwt.html

  21. admin Says:

    The old MyGWT forum is back up in read-only capacity. However, it is still not linked from the front page of mygwt.net.

    http://mygwt.net/forum

    See this thread for the announcement:

    http://extjs.com/forum/showthread.php?t=33380

  22. admin Says:

    @julia

    According to Ext’s interpretation of GPL, your code will most likely need to be under GPL as well. See this thread and others for details:

    http://extjs.com/forum/showthread.php?t=33334

    I am not sure about using parts of sample code or linking with other commercial JAR files.

  23. admin Says:

    @sakuraba

    There are Ext forum posters that grudgingly plan to buy commercial licenses to accommodate this GPL change, while others stated that Ext lost their business. Overall, Ext certainly lost a lot of goodwill and evangelists.

  24. kellys Says:

    @admin

    The slate theme entends the the default ext css (as all themes do). That default CSS is required for Ext components to function as expected. I don’t think original css that is not based on the ext css will even work as all the components will break.

  25. admin Says:

    @kellys

    I assume that you mean the CSS files under resources/css. You make a good point.

    However, reading LICENSE.txt in the Ext JS 2.0.2 package, the “also” term right after the section for license of CSS and graphics can be interpreted as meaning the images and CSS are part of Ext and are also licensed under LGPL. In my non-lawyer opinion, an ambiguous license like this will probably not hold up in court and will probably not favor the copyright holder. IANAL.

    From LICENSE.txt:

    {cut}

    License of CSS and Graphics (”Assets”)

    {cut}

    Open Source License

    Ext is _also_ licensed under the terms of the Open Source LGPL 3.0 license.

    {cut}

    Therefore, one interpretation is that there are four mutually exclusive licenses and you have to choose one:

    #1 License of CSS and Graphics (”Assets”)
    #2 Open Source License
    #3 Commercial License
    #4 OEM / Reseller License

    If someone decides to choose #2, then he/she may legally ignore #1, #3, and #4. IANAL.

  26. kellys Says:

    That’s definitely an imaginative way of looking at it. ;)

    The also is definitely confusing, however I think the first line of “Assets” section provides enough clarification:

    “The Assets distributed with Ext …”

    Whereas the subsequent section defines terms for Ext itself:

    “Ext is also licensed under the terms…”

    “In my non-lawyer opinion, an ambiguous license like this will probably not hold up in court and will probably not favor the copyright holder.”

    The default is to favor the copyright holder, not the user. Remember, we have no rights unless they grant them to us. If there is a reason to cause that the grant may not be valid, we could have no rights. That’s why my corp legal won’t allow me to use Ext JS under 2.0.2 and we have to purchase commercial license now.

  27. admin Says:

    @kellys

    Ext JS library is distributed with JavaScript, CSS, and images. Without any one of the three, the library will essentially not work. The first license never states that CSS and images are not considered part of Ext JS. Also, the first license could be interpreted as meaning that there are no restrictions on JavaScript code. Therefore, someone can potentially transfer the JavaScript code to public domain by accepting the first license. IANAL.

    I am not sure if I would agree with your statement that the default is to favor the copyright holder.

    I did a google search on this term: ambiguous license.

    According to the first link, “the general rule in most jurisdictions is that ambiguities in software license agreements will be construed against the drafter.”

    http://blawg.scottandscottllp.com/softwareaudits/2008/01/license_ambiguities_in_softwar.html

  28. Mike Houston Says:

    I started a Google Code project a couple of weeks ago:
    http://extjs-public.googlecode.com

    The original idea was just to allow svn:externals properties to pull in the extjs libraries on demand in a few projects I’m working on.

    The original LGPL3 2.0.2 release of ExtJS is in the repo, tagged under:
    http://extjs-public.googlecode.com/svn/tags/ext-2.0.2/release/

  29. Michael Wharton Says:

    Users should simply complain to FSF about the Ext license. The additional restrictions over LGPL are invalid and FSF takes these matters very seriously (once they get on a case). If enough users complain to FSF, the will take notice and come down strong.

    http://www.fsf.org/about/contact.html

    http://www.fsf.org/licensing/licenses/gpl-violation.html

  30. Michael Wharton Says:

    From http://www.fsf.org/licensing/licenses/gpl-violation.html :

    “Does it say anything misleading, perhaps giving the impression that something is covered by the License when in fact it is not?”

    Seem familiar?

  31. admin Says:

    @Michael W, Mike H

    Someone has started a fork of Ext JS 2.0.2 as discussed in the thread below.

    http://gwt-ext.com/forum/viewtopic.php?f=5&t=1061

    Here is the justification for the fork with the CSS and images intact:

    http://openext.svn.sourceforge.net/viewvc/openext/trunk/LICENSE.txt?view=markup

    Direct link to the project:

    http://sourceforge.net/projects/openext/

    Also, according to a post in the huge “License Change?” thread extjs.com, someone from InfoQ may have started or is thinking about starting a fork of Ext JS. If anyone knows more about this, please let me know.

  32. admin Says:

    There is a backlash against the Ext license change by a couple of open source projects that I respect.

    GWT-Ext creator slammed Ext:

    http://www.jroller.com/sjivan/entry/my_response_to_jack_slocum

    The CTO in charge of Groovy/Grails also responded negatively to Ext:

    http://graemerocher.blogspot.com/2008/04/choosing-and-oss-license-and-ext-js.html

  33. Sergio Says:

    http://www.opensource.org/docs/definition.php

    According to that definition, ext-js team really don’t have a clue about what open source means.
    There are at least a couple of points where the ‘additional restrictions’ on ext-js go against the Open Source Definition:

    1. Free Redistribution
    3. Derived Works
    5. No Discrimination Against Persons or Groups
    6. No Discrimination Against Fields of Endeavor

  34. admin Says:

    @Sergio

    I agree that either Ext has no idea what open source is, or it does and is trying to introduce uncertainty against open source to increase sales. The creator of Ext claimed that Ext is not an “evil empire”. At the rate that the negative publicity is piling up, maybe the claim will become true because the second word will no longer be applicable.