diff options
author | Paul Duncan <pabs@pablotron.org> | 2021-10-14 12:47:50 -0400 |
---|---|---|
committer | Paul Duncan <pabs@pablotron.org> | 2021-10-14 12:47:50 -0400 |
commit | 4b6c0e31385f5f27a151088c0a2b614495c4e589 (patch) | |
tree | 12243cdcd00704bc1a9d94ac9cc128459417370c /content/posts/2008-05-15-don-t-use-extjs.html | |
download | pablotron.org-4b6c0e31385f5f27a151088c0a2b614495c4e589.tar.bz2 pablotron.org-4b6c0e31385f5f27a151088c0a2b614495c4e589.zip |
initial commit, including theme
Diffstat (limited to 'content/posts/2008-05-15-don-t-use-extjs.html')
-rw-r--r-- | content/posts/2008-05-15-don-t-use-extjs.html | 408 |
1 files changed, 408 insertions, 0 deletions
diff --git a/content/posts/2008-05-15-don-t-use-extjs.html b/content/posts/2008-05-15-don-t-use-extjs.html new file mode 100644 index 0000000..80ad15f --- /dev/null +++ b/content/posts/2008-05-15-don-t-use-extjs.html @@ -0,0 +1,408 @@ +--- +date: "2008-05-15T07:26:16Z" +title: Don't Use ExtJS +--- + +<p><style type='text/css'> + blockquote.quote { + font-family: arial, verdana, helvetica, sans-serif; + border-left: 2px solid #09d; + padding: 10px; + background-color: #efefef; + } +</style> +A couple of years ago I <a href="http://pablotron.org/?cid=1512">recommended</a> <a href="http://developer.yahoo.com/yui/">YUI</a> and <a href="http://extjs.com/">Ext</a> (formerly +YUI-Ext). I've changed my mind. Don't use Ext at all. The Ext license +has changed four times since its inception, and each time the license +has become more restrictive. </p> + +<h2>History</h2> + +<p>Ext was originally created as an extension to YUI. It was +<a href="http://www.opensource.org/licenses/bsd-license.php">BSD</a>-licensed, just like YUI. YUI-Ext added several sorely-needed +features to YUI. The most notable additions were a layout system, a +<a href="http://en.wikipedia.org/wiki/Tree_view">Tree View</a> widget and a <a href="http://en.wikipedia.org/wiki/Grid_view">Data Grid</a> widget (YUI has since added +each of these, although the YUI widgets are still less flexible than +their Ext counterparts). Eventually support was added for <a href="http://jquery.com/">jQuery</a> +and <a href="http://www.prototypejs.org/">Prototype</a> as well. The team dropped the "YUI-" prefix, and +YUI-Ext became Ext. </p> + +<p>Ext 1.0 was relicensed under the <a href="http://www.opensource.org/licenses/lgpl-2.1.php">LGPL</a>. Although switching from the +BSD license to the LGPL is relatively innocuous, it is still significant +because the LGPL is more restrictive than the BSD license. </p> + +<p>Eventually the Ext team changed the license again. The new license was +a custom license that granted conditional LGPL <em>usage</em> rights. Basically +the LGPL usage clauses applied, but only if you weren't trying to +develop a library or an Ext clone. </p> + +<p>Confused? Yeah, me too. Here's the text from the old Ext "Open Source +License":</p> + +<blockquote class="quote"> + Ext is also licensed under the terms of the Open Source LGPL 3.0 license. You + may use our open source license if you: + <ul> + <li>Want to use Ext in an open source project that precludes using non-open source software</li> + <li>Plan to use Ext in a personal, educational or non-profit manner</li> + <li>Are using Ext in a commercial application that is not a software + development library or toolkit, you will meet LGPL requirements and you do not + wish to support the project</li> + </ul> +</blockquote> + +<p>A lot of open source developers were <a href="http://en.wikipedia.org/wiki/Talk:Ext_(javascript_library)">understandably confused</a> +by this hybrid license. The biggest problem was that it wasn't clear +whether this license was compatible with other Open Source licenses. It +also wasn't clear whether Ext could be legally distributed with Open +Source software, since the license only granted LGPL <em>usage</em> rights, and +not LGPL <em>distribution</em> rights.</p> + +<p>To address these complaints, the Ext team changed the license again: +the latest version of Ext is licensed under the <a href="http://en.wikipedia.org/wiki/GNU_General_Public_License">GPLv3</a>. This latest +change complicates things quite a bit for many users, as we'll see in +the next section.</p> + +<h2>Problems</h2> + +<p>The GPL is far more restrictive than the BSD license and LGPL. It is +rarely used for libraries, because the viral clause would effectively +the library from being used for any non-GPL software. In fact, these +problem were <a href="http://en.wikipedia.org/wiki/GNU_General_Public_License#Version_2" title="GPLv2 and the LGPLv2.">addressed over 16 years ago</a> by creating the LGPL:</p> + +<blockquote class="quote"> + By 1990, it was becoming apparent that a less restrictive license + would be strategically useful for some software libraries; when + version 2 of the GPL (GPLv2) was released in June 1991, therefore, a + second license - the Library General Public License (LGPL) was + introduced at the same time and numbered with version 2 to show that + both were complementary. The version numbers diverged in 1999 when + version 2.1 of the LGPL was released, which renamed it the GNU Lesser + General Public License to reflect its place in the GNU philosophy. +</blockquote> + +<p>Who is affected by this change? In no particular order:</p> + +<ul> +<li>Extension Authors: Older Ext user extensions could be licensed as +the author saw fit. This is no longer true for the latest version +of Ext; new user extensions must be GPL-licensed, because the viral +clause prohibits using Ext with non-GPL licenses.</li> +<li>Commercial Users: The previous licenses, even the questionable +custom license, allowed Ext to be used in closed source commercial +applications. This is no longer true for the latest version of Ext, +because the viral clause prohibits using Ext with non-GPL commercial +licenses.</li> +<li>Non-GPL Open Source Developers: The BSD and LGPL-licensed versions +of Ext could be used with other non-GPL software. This is no longer +true for the latest version of Ext, because the viral clause +prohibits using Ext with non-GPL licenses.</li> +</ul> + +<p>Things get even murkier when you consider linking and distribution. +Does generating a dynamic page count as linking to Ext? Does any public +web application automatically count as distribution? What about +applications which use Ext to and access a common APi, such as a SOAP +endpoint or RSS feed?</p> + +<p>These questions were posted in a +<a href="http://extjs.com/forum/showthread.php?t=33096">thread about the license change on the ExtJS forums</a>.<br/> +Here's how <a href="http://jackslocum.com/blog/">Jack Slocum</a>, the primary Ext developer, <a href="http://extjs.com/forum/showthread.php?p=156236#post156236">responded</a>:</p> + +<blockquote class="quote"> + <p> + If you are generating any markup or javascript code via the server in a + page SPECIFICALLY designed for Ext, then that server code will have to + be GPL as well. + </p> + + <p> + For example: + </p> + + <ul> + <li> + Suppose you have an index.php that includes Ext JS. According to the + FSF, in that case index.php would be also under GPL since it is using + ext. Since it must be GPL, it's source must be distributed. Since it + is GPL, the "viral" effect of GPL is now in effect and any thing that + uses index.php (if anything) on the serverside would also fall under + the GPL. (Note: Note this is a pretty gray area) + </li> + + <li> + Suppose you are using server-side code to generate javascript that + interacts with Ext JS. That code must also be GPL. + </li> + </ul> + + <p> + Like MySql and other GPL software the way to use GPL code without + having to license under GPL is to not bundle or distribute the GPL + code with your application. If you instead have the end user + (developer?) download and install ext js on their own, they are then + bound to the license and not you or your software. + </p> + + <p> + For those seeking an FAQ, we have defined and explained some of the + reasoning and license implications under these 2 pages: + </p> + + <p> + <a href='http://extjs.com/products/license.php'>http://extjs.com/products/license.php</a> + </p> + + <p> + <a href='http://extjs.com/company/dual.php'>http://extjs.com/company/dual.php</a> + </p> + + <p> + It's worth noting that the examples given at the beginning of this + post are just my opinion and it is impossible for us to analyze + everyone's usage and say whether or not someone "complies" with the + GPL. That really is a task for an attorney or even someone with + better knowledge of your application and how Ext JS is used. + </p> + + <p> + In the end, we want Ext JS to be open source friendly and still have + a good business model in place to grow. The old Ext License was not + open source friendly and pretty much killed all options for use in + open source projects. That wasn't our goal so we had to address it. + </p> +</blockquote> + +<p>There are several problems with the statements above. The biggest one +is that the original BSD license and subsequent LGPL license had none of +this ambiguity. </p> + +<p>In other words, the problem the Ext team is trying to fix is one they +created themselves. If that wasn't bad enough, the solution actually +hurts many Open Source developers far more than it helps.</p> + +<p>In an attempt to clarify the situation for non-GPL Open Source +developers, I posted several questions in the Ext license thread. I +also created a post on <a href="http://reddit.com/">Reddit</a> about the license change and +summarized my questions there:</p> + +<blockquote class="quote"> + <p> + As of page 8 of the thread on the license change I have yet to receive a + response, simple or otherwise, to any of my comments: + </p> + + <p> + There's <a href='http://extjs.com/forum/showthread.php?p=156337#post156337'>this comment</a>: + </p> + + <blockquote class="quote"> + The new license prevents Open Source software that is using a + license other than the GPL from using Ext. Applications which use + popular Open Source licenses like the LGPL license, BSD license, MIT + license, and the Artistic license would be required to either + re-license under the GPL, carefully design their application to meet + the requirements in your post, use an older LGPL-licensed version of + Ext, or move to another library entirely. + </blockquote> + + <p> + And <a href='http://extjs.com/forum/showthread.php?p=156356#post156356'>this one</a>: + </p> + + <blockquote class="quote"> + What about authors who which to provide their software under a + license that is more permissive than the GPL, such as the MIT or BSD + licenses? + </blockquote> + + <p> + And <a href='http://extjs.com/forum/showthread.php?p=156382#post156382'>this + one</a>, which was directly in response to Jack Slocum, the primary + author of ExtJS: + </p> + + <blockquote class="quote"> + <p> + Hi Jack, + </p> + + <p> + I can see how switching to a license without exceptions would make + things simpler, but what about those of us who release Open Source + software under non-GPL licenses such as the BSD, MIT, and Artistic + licenses? + </p> + </blockquote> + + <p> + I've been an Ext user since its inception as YUI-Ext, but the fact that + I cannot seem to get a straight answer to a simple question makes me + wary and extremely skeptical. + </p> +</blockquote> + +<p><a href="http://ejohn.org/">John Resig</a>, the author of <a href="http://jquery.com/">jQuery</a> and <a href="http://ejohn.org/blog/processingjs/">Processing.js</a>, +responded:</p> + +<blockquote class="quote"> + It's important to understand that OSS developers are not their target + audience at all. I'm 100% certain that we'll never get a clear + response. They're using 'open source' as a buzzword selling point to + lure companies in, befuddle them with confusing viral licensing, and + obligate them (through the obvious balking that the corporate lawyers + will do) to get them to buy a full, corporate, license. It's very + sneaky, quite disingenuous, and paints a bad picture for open source + development as a whole. +</blockquote> + +<p>It's been over three weeks since these this exchange on Reddit. None of +my questions have been answered on the Ext license pages or in the +68-page license thread on the Ext forums.</p> + +<h2>Rationale</h2> + +<p>According to the <a href="http://extjs.com/company/dual.php">Ext license page</a>, Ext licensing is based on the +principle of "Quid Pro Quo", or "something for something":</p> + +<blockquote class="quote"> + <p> + 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: + </p> + + <ul> + <li> + 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 + </li> + + <li> + 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. + </li> + </ul> +</blockquote> + +<p>The justification for using the GPLv3 instead of the LGPL is addressed +on the <a href="http://extjs.com/products/license-faq.php">Ext license FAQ page</a>:</p> + +<blockquote class="quote"> + We considered once again releasing under straight LGPL but it was not + an option as a business. We tried that with version 1.0 and found out + quickly that it enabled others (e.g. large commercial entities) to + take our work, wrap it up and sell it as their own. With no mention of + us at all. We, as a business with a full time team of talented + developers, can not exist under those circumstances. We would quickly + become diluted and competing with ourselves. +</blockquote> + +<p>The concern about others taking their work and selling it without +attribution is particularly ironic, considering:</p> + +<ul> +<li>Ext only exists because a large corporation (Yahoo!) decided to +share their hard work under a permissive open source license </li> +<li>Significant portions of Ext, including the Event +handling code and reset.css, were copied wholesale from YUI</li> +<li>The Ext object system comes from YUI, which is based on +<a href="http://dean.edwards.name/weblog/2006/03/base/">Dean Edwards' JavaScript inheritance code</a></li> +<li>Many of the older Ext icons originally came from the +<a href="http://www.famfamfam.com/lab/icons/silk/">Famfamfam Silk icon set</a></li> +</ul> + +<p>What do the projects above have in common? That's right, they are all +in the public domain or available under extremely permissive Open Source +licenses. </p> + +<p>The Ext team is certainly entitled to license and sell their software +any way they see fit. However, it is hypocritical and dishonest to +complain about other people taking your work and selling it as their own +when you take other peoples' work and either sell it as your own or +relicense it under an extremely restrictive license.</p> + +<p>It is tempting to attribute this entire fiasco to a simple +misunderstanding on the part of Jack Slocum and the Ext team. Here's +what I had to say on Reddit:</p> + +<blockquote class="quote"> + It is a bit disconcerting that Ext has such strong roots in existing + Open Source software, and yet the project seems at best partially + indifferent, and at worst, outright hostile to the Open Source + community. +</blockquote> + +<p>Unfortunately, according to John Resig, this isn't the first time that +there have been problems with the Ext team:</p> + +<blockquote class="quote"> + <p> + We (the jQuery project) worked hard with them to try and fix bugs + and add features for an ExtJS integration layer. They turned around + and built their own, specialized, library (removing the need for any + of our work) and then mutated the licensing into this bizzaro scheme + that they have now. We can't, in good consciousness, even recommend + their library anymore due to its very nature. On top of this they + ended up hiring our lead evangelist to promote their work. I can't + speak for everyone on the team but I feel quite frustrated and used. + </p> + + <p> + They're providing a great disservice to the Open Source community in + general. They consume with reckless abandon, it's impossible to even + hope to borrow code from them, and they turn it all into a + money-making machine. No aspect of that sits well with me. + </p> +</blockquote> + +<p>Jack Slocum did <a href="http://stephan.reposita.org/archives/2008/04/28/more-on-extjs-the-gpl-fiasco-and-open-source-community-style/">respond to this comment on a separate blog</a>. He also +<a href="http://jackslocum.com/blog/2008/04/26/ext-js-license-change-and-personal-attacks/">wrote a post on his blog</a>. Neither adequately addresses John +Ressig's main points or my questions from the Ext forums, so I won't +bother quoting his mostly vacuous responses here.</p> + +<h2>Conclusion</h2> + +<p>To recap, the reasons I recommend against using Ext are:</p> + +<ul> +<li>A trend towards more restrictive licenses</li> +<li>Team is unwilling or unable to address licensing issues</li> +<li>Blatant disregard for other Open Source projects</li> +</ul> + +<p>Some suggestions for the Ext team:</p> + +<ul> +<li>Release Ext under the LGPLv3, BSD license, or GPLv3 with the +<a href="http://www.gnu.org/licenses/gpl-faq.html#WMS">special provision</a> </li> +<li>Provide the Ext artwork and CSS under one of the licenses above, +or one of the <a href="http://en.wikipedia.org/wiki/Creative_Commons_licenses">Creative Commons attribution licenses</a></li> +<li>Update the Ext license FAQ with detailed information about +which Open Source licenses are compatible with Ext, including +specific usage scenarios</li> +<li>Add a list of Open Source software which Ext has borrowed from to +the license page and to the license information included in +the download</li> +<li>Put older versions of Ext back on the download page</li> +</ul> + +<p>Finally, here are a list of Ext alternatives. None are as nice as Ext, +but they are all available under permissive licenses and they each have +an active and enthusiastic user community:</p> + +<ul> +<li><a href="http://dojotoolkit.org/projects/dijit">Dojo/Dijit</a> (BSD license)</li> +<li><a href="http://echo.nextapp.com/site/echo2">Echo2</a> (MPL license)</li> +<li><a href="http://docs.jquery.com/UI">jQuery/jQuery UI</a> (BSD license)</li> +<li><a href="http://developer.yahoo.com/yui/">YUI</a> (BSD license)</li> +</ul> + +<p>Comments are still broken at the moment. I've posted this article on +<a href="http://reddit.com/">Reddit</a>, so feel free to <a href="http://reddit.com/info/6jhhs/comments/">comment there</a>.</p> + |