ailon's DevBlog: Development related stuff in my life

GPL/Commercial Dual Licensing Is Evil For Libraries

12/27/2011 6:12:00 PM

I’ve listened to Hanselminutes on Kendo UI a couple of days ago. It was a great podcast as usual and, even though I haven’t personally used it yet, I’ve heard good things about the Kendo UI framework. What I haven’t noticed before and what I’ve heard on the show was that Kendo UI is released under a dual GPL/Commercial license.

I used to run a dual-licensed GPL/commercial product from 2003 and decided to never go that road again. The decision isn’t new, but I figured I’ve never put the reasoning in writing. So here it is. Here’s why I think GPL/commercial dual licensing is bad for your libraries (from the developers/publishers perspective).

Disclaimer: IANAL (I am not a lawyer). So all of this is just my point of view on the issue.

Why GPL/Commercial in the first place?

This was our rationale for SPAW Editor and, from what I’ve heard on the podcast, Telerik’s rationale was pretty much the same. We didn’t mind (and even wanted) open source projects using our library for free. That sounded great both from “good karma” perspective and free word of mouth promotion it was supposed to generate. On the other hand, we didn’t create the library out of pure love for coding and expected to support it by selling it to commercial customers. GPL looked like an easy solution for our needs. It allowed us to release the code to be used by open source projects and prohibited its use in the closed source projects. Or at least that’s what we thought at that time.

Unfortunately even though it is partially true, partially is a key word here and it has quite a few caveats.

Problems with GPL/Commercial licensing

  • GPLed version can only be used in GPL-compatible projects.
    GPL is contagious. Once you use a GPL library in your project, you can only distribute it under GPL. So we weren’t serving non-GPL OSS projects and there are lots of them.
  • Your product is not really Open Source.
    As long as you are the only contributing party you can re-license your code in any way you like. Once there are other contributors to your GPL project, their contributions are covered by GPL and you technically loose rights to dual-license it. Obviously you can work around this with some legal work, but that’s an extra barrier to entry by contributors. So I’m pretty sure that, even though Todd Anglin stated on the podcast that they are looking into enabling contributions, this will never materialize.
  • GPL is confusing. Especially in our (library/framework) cases.
    GPL FAQ is 35 printed pages long. When you are building your business on top of GPL you can manage to read and understand it. When you just want to use a library (which has competitors with simpler licenses) – you wouldn’t bother.
  • It creates a lot of “legal” support overhead.
    Following on the previous bullet point, the most frequent type of question we were getting was “I want to use your library in Scenario X. Can I use it for free?”. We used to have a question like that in our FAQ (it is not there now since we stopped offering commercial license), but it didn’t help. Every situation is slightly unique and your users don’t have enough time and/or willingness to figure it out on their own. So they delegate it to you.
  • You are not getting as much viral promotion as you would’ve with non-restrictive open source license like BSD, MIT or MsPL.
    Just because fewer OSS projects can use your product.
  • You are not monetizing who you wanted to monetize.
    GPL covers distribution. If there’s no distribution involved everyone can use your library for free “under GPL”. So if Microsoft or, say, Google build their own sites in-house they can use your product for free.

These are the issues I’ve experienced with the model that I can think of from the top of my head. I bet there are other things too.

Is there a better way?

Provided that our objective hasn’t changed and we want to support non-commercial and/or OSS initiatives with a free product and monetize commercial users, I’ve seen 2 approaches that work better, in my opinion, than GPL/commercial dual-licensing.

  1. Core product under (more) permissive license, commercial extras.
    This is the approach used by the most popular web WYSIWYG editor (and SPAW Editor’s competitor at the time) – TineMCE among other projects. I think it was one of the reasons (probably not THE reason, but still) why they “beat” us. The core library is released under LGPL or totally permissive licenses (BSD, etc.) and you make money on extras that are not required, but have a wide enough appeal to generate revenue.
  2. Linkware/Commercial dual-licensing.
    This is the approach we use with most of the amCharts products (and, no, I didn’t come up with the idea). This would probably only work for more elaborate UI libraries (like charts). The idea is that you give away your library for free to anyone with only caveat that it includes a link back to your site. Non-profit projects wouldn’t mind it in exchange for a great product, and commercial users probably would mind it and buy a license (or they wouldn’t mind and you still get advertising from them).

That is basically it. Let me know if I forgot something or if you think I’m totally wrong. You can do it either here in the comments or on twitter.

P.S.: feel free to follow me even if you don’t have anything to say on the subject ;)

Tags: ,

Automatic Defaults

6/27/2008 6:06:20 PM

ryanair-hertz Every time I go to car rental sub-site of I get frustrated with smarty-pants "Pick up Country" dropdown. As you can see on the screenshot, it automatically selects pickup country by visitor's IP address (or something like that).

Now I don't know how many people fly from UK to UK or from Germany to Germany, but I know for sure that you just can't fly with Ryanair from Lithuania to Lithuania. So this automatic selection super-feature is at the very least useless and in reality it's annoying. As I said you can't fly from Lithuania to Lithuania with Ryanair and what are the chances that when you're already in Lithuania you will go to to rent a car? I think something like 1:10000. On the other hand automatic selection in "Country of Residence" is actually a nice little feature which probably works correctly 99% of the time.

So what should be in that pickup country dropdown by default?

The most obvious option is the message "Choose one" like in that "Pick up Location" box. And by the way there's only one Ryanair "location" in Lithuania so why the hell it's not selected by default? While just leaving "Choose one" seems most logical to me and easiest to "implement", I accept that it might be not fancy enough for someone at Ryanair. In this case they could've determined my location and then get the most popular destination from that location and make it the default.

Are there any other logical default values for that dropdown? I don't know. What I know is that seeing my own country there annoys me. In most cases no AI is better than seriously flawed AI.

Tags: , ,

Copyright © 2003 - 2018 Alan Mendelevich
Powered by BlogEngine.NET