Ext JS Licensing

With the release of Ext JS 2.1 a few days ago the license terms for non-commercial use changed from the LGPLv3 to GPLv3.

And everyone freaked out.

There are several discussions on the Ext Forums, the longest being 35 pages long (and growing). The discussion has spread from the announcement blog post to Slashdot, the Wikipedia Talk Page and Ajaxian.

Ext JS is a JavaScript library that facilitates the development of rich web interfaces, and the GPL FAQ has a nice illustration of how that affects your code and licensing.

Essentially if you're using Ext under the GPLv3 license, you're required to release the source of your application. Say I wanted to pop up an alert every time someone loaded my page, and I use the following JavaScript code, output by a PHP function called generate_alert.

Ext.onReady(function(){
 Ext.MessageBox.alert('Welcome', 'Hello Corey.')
});

Assume I have have two files:

  • index.php - includes alert.php, and calls generate_alert($first_name) which is defined in alert.php.
  • alert.php - defines the generate_alert() function

I'd be required to release alert.php under the GPL because it's essentially linked to Ext, and Ext is licensed under the GPL. And since index.php includes alert.php, it also has to be released under the GPL.

Again from the GPL FAQ:

If a library is released under the GPL (not the LGPL), does that mean that any program which uses it has to be under the GPL?

Yes, because the program as it is actually run includes the library

Licensing Options

If you're not developing an application that will be open source Ext offers a commercial license. They refer to their dual licensing as quid pro quo.

Quid Pro Quo

Dual Licensing is based on the principle of Quid Pro Quo - "something for something". In return for the advantages you realize from using an Ext product to create your application, we require that you do one of the following:

  • Contribute to the continued development of the product by purchasing commercial licenses from Ext. This option secures you the right to distribute your application under the license terms of your choice.
  • Contribute to the Open Source community by placing your application under an Open Source license (e.g. GPL v3). This option secures all users the rights to obtain the application's full source code, modify it, and redistribute it.

Naturally many people on the forum thread (most newly registered) balked at the idea of paying for the software, but there is still quite a bit of confusion surrounding exactly how it affects developers. The real questions seem to be if using a JavaScript library is a close binding with your backend application, or if hosting an application on a website counts as distribution - both of which would require you to open source your application and under the terms of the GPL.

I am most definitely not a lawyer and my interpretation of the situation may be incorrect. Does anyone have a more informed opinion? Or have you run into similar issues using GPLd libraries?

Ext JS 2.1 and Ext GWT 1.0 released, preview of Ext JS 3.0

Ext JS has announced an upgrade of Ext JS is available, as well as a new product, Ext GWT. There's also a preview of Ext JS 3.0 which adds further refinements to the powerful UI toolkit.

Those of you that continue to shun Ext JS should check out the slick new examples page.

Some of the features added in 2.1 are full REST support, a status bar and a slider control.

Dear T-Mobile…

This is annoying as hell.

var bLogMeOut = false;
 
function UnloadHandler()
{
 
  /* Unless the user really wants to log out, open me back up. */
  if (bLogMeOut == false) {
    open("logoffPopup.jsp", name + "_","width=200,height=240");
  }
  else {
    redirectHome();
  }
 
  return true;
}
<body onLoad="makeMeSmall();" onUnload="UnloadHandler();" bgcolor="#FFFFFF" 
  text="#000000" leftmargin="0" topmargin="25" marginwidth="0" marginheight="0">

Ext JS 2.0 Released

Aside from Frontier Airlines, I don't think there has been much I've gushed about more in the past year than Ext JS. I started using it when it was still called yui-ext, and even then it was going above and beyond what any of the other JavaScript libraries were doing. And it looked good. Really good.

What would you rather show a client, Dojo or Ext?

Dojo Toolkit Sample
Dojo

Ext JS Sample
Ext

You like tabs? Sure, who doesn't. Well Ext has scrolling tabs. One of the biggest complaints I've seen has been about the documentation, and the Ext team has listened and produced some great API documentation with an API browser that puts all of the other toolkits to shame. Seriously, if you're trying to sell a sexy UI toolkit, ugly, barebones HTML is not the way to go.

I've been showing Alex some of the ways I'm using Ext and while he likes it, he described it as almost being it's own language. In a way that's true, but I think that Ext 2.0 addresses quite a few of the complaints people had with 1.0 and 1.1. There's more consistency between components, and for the most part everything just makes more sense. Vague, I know, but if there really is less work and head-scratching with 2.0 to produce anything. Creating a Grid is no longer confusing and frustrating, the library of community-contributed extensions and themes is growing and the UI objects are all Components that support plug-ins. It still can extend YUI, Prototype/Scriptaculous, and jQuery, or you can use the native Ext library. In fact, what I really want to see next is a Jobs/Gigs board to make it easier to find Ext developers looking for contract work.

Read the Introduction, the Overview, browse the API and check out the rest of the Ext demos.