I've never used ExtJS and don't know much about it except the name and that it's quite popular, but the controversy concerns me as I'm a lead developer of an open source project released under the same GPL/commercial scheme. I assume some (or maybe even most) of the ExtJS attackers wouldn't call my project open source as they refuse to call ExtJS open source now.
ExtJS's situation is not as straightforward as mine. In 5 years since the first public SPAW Editor release we've never changed the licensing scheme. And we don't use any third party code (maybe some small parts from Mozilla's or Microsoft's documentation). But the fact that I'll be attacked if I ever decide to change the scheme (not that I plan to) saddens me.
The Root of all Evil
From my perspective the problem arises when people starting open source projects don't have a vision of what they are trying to achieve in the long run. This is very understandable cause sometimes you think you just have a small library on your hands that you would like to share with the world. In the early days of project's life you are totally satisfied by positive feedback from your users and don't think of anything else. But as days go by supporting the project becomes a routine, you get less and less satisfaction from working on it and unless you are a total programming junky you gradually loose all interest. At this point you either have to find a new "owner" for the project, let it die or start getting financial motivation.
Getting Paid for Open Source
Getting paid for your open source project is a tricky thing. Getting small donations from lots of users doesn't work as far as I can tell. You might get lucky and get a couple of major donations but I don't think that you can get those by placing a passive "Donate" button on your site. Getting VC money for your small-to-medium open source project is way too complicated for small development teams and not everyone dreams of selling their freedom and making their "baby" just another full-time job. Selling support for your project is a tricky thing too. I believe that open source project owners should provide support to all the users and not only those who paid for it.
All of the above methods could work but require quite aggressive "sales" activities to succeed. So, this leaves us (commercially passive OS developers) pretty much with the only option - dual licensing.
It seems that differentiation between who should be able to use your code under open source license and who should buy a commercial one is pretty simple:
- open source projects and non-commercial projects should be able to get your product under the OS license;
- commercial projects should buy a commercial license.
The problem is that there's no such standard open source license that let's you implement the above scheme. GPL is closest: it allows usage in other GPL projects and prohibits distribution in closed source and other non-GPL compatible open source projects. The last part is the cause of all the issues developers of non-GPL open source projects have with GPL and in this case with ExtJS. But unfortunately I'm not aware of any other open source license that comes closer to implementing this fairest (in my opinion) paradigm. Or did I miss some new advancements in those five years since I was actively looking for a licensing concept for SPAW?
Moral of the Story
I understand that I'm not a true open source developer and most likely neither is Jack Slocum (lead Ext developer) but I hope that by releasing my code under GPL I contributed my share to the community. I was lucky to think about such situation before releasing my software and though I understand Jack's motivation I agree with "whiners" that changing licenses as you go sucks. Though I can't see why those complaining can't fork from an earlier LGPLed or even BSDed ExtJS version and build a "truly open source" alternative.
So, the point is that it's very important to understand what are you trying to achieve by releasing your software as open source. If your goal is to make the world a better place, or you want to get community credibility to get paid more in the future, or you have some "alternative" business plan - go with permissive open source licenses like BSD, MIT, etc. But if you feel that you'll be upset that someone profits from your work while you're buying junk food with your last pocket change do yourself a favor and think about this before you release anything.
In any case I think it's important to make a wise, well thought out decision and stick to it. In my opinion it's better to have fewer but satisfied users then lots of unhappy ones.