aboutsummaryrefslogtreecommitdiff
path: root/content/posts/2008-05-15-don-t-use-extjs.html
diff options
context:
space:
mode:
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.html408
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&#95;view">Tree View</a> widget and a <a href="http://en.wikipedia.org/wiki/Grid&#95;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&#95;(javascript&#95;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&#95;General&#95;Public&#95;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&#95;General&#95;Public&#95;License#Version&#95;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&#95;Commons&#95;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>
+