Dual licenses for Julia packages

389 views
Skip to first unread message

Scott Jones

unread,
Feb 5, 2016, 10:10:54 AM2/5/16
to julia-users
I'm curious about how one could release packages for use with Julia such that they would be free for non-commercial use (under GPL maybe?) but also available with a paid license for commercial use.

Has anybody else done this?

As much as possible, I'd like to release things under the MIT license, however, there are many things that might be useful to other Julians, that they (the company I'm consulting for) don't want to give away for free to a commercial competitor (we need to eat also!).


Tom Breloff

unread,
Feb 5, 2016, 10:27:03 AM2/5/16
to julia-users
Scott I'm curious about this as well, however I tend to think that there's no good solution.  The problem isn't in an end user picking up your package (Package A) and using it commercially vs non-commercially.  The problem comes when someone wants to build some sort of derivative work (Package B) and then the end user of their package doesn't know about the licensing issues.  To resolve, then Package B needs to carry forward licenses from Package A, and the end-user of Package B has to worry about multiple layers of licensing.  YUCK

Also, you run into tricky (but common) edge cases of what constitutes commercial use (though maybe someone more knowledgeable about this stuff wouldn't think they are edge cases).

I personally hate dual licenses because of the mental headache that ensues, which is why I've been either releasing my code as MIT or not at all.  If you come up with an easy-to-manage solution, please let me know.

Scott Jones

unread,
Feb 5, 2016, 11:20:43 AM2/5/16
to julia-users
I'm afraid that it may end up that way for me as well, releasing what's acceptable to the company (and stuff I do purely as non-related side projects) under MIT, or not at all. ☹️

After decades never being able to show my code to the world, I do enjoy the openness and usefulness of the MIT license, both being able to use any MIT code for my commercial projects, and being able to pay forward by contributing myself.

Tobias Knopp

unread,
Feb 5, 2016, 1:07:52 PM2/5/16
to julia-users
This question is by no mean specific to Julia. You have to release the software under GPL (v2/v3) and of course as a copyright holder you are allowed to use it commercially. If you want others to contribute to your package you need them to agree that the code will be used by you under a commercial license (have a look how ubuntu handles it)

One of the prominent software that is both GPL an commercial is FFTW (e.g. part of matlab).

Cheers,

Tobi

Páll Haraldsson

unread,
Feb 5, 2016, 5:54:32 PM2/5/16
to julia-users
On Friday, February 5, 2016 at 3:10:54 PM UTC, Scott Jones wrote:
I'm curious about how one could release packages for use with Julia such that they would be free for non-commercial use (under GPL maybe?) but also available with a paid license for commercial use.

I guess you know, it's just not completely clear: You can't release under GPL and, say only non-commercial is only ok (neither can you with any permissive/OSI certified license or DFSG-compliant that inspired OSI/it's based on).

Effectively, even if GPL allows commercial use, you might be putting off many of your competitors, by using it, because of it "viral" (or "spider-plant"-nature). Since/when you own the copyright you can release under any other (proprietary) license forcing to pay, for using and getting out of the viral nature.

One thing the GPL (or any license? at least free/open source) doesn't forbid (and it's not like it's easy to know anyway), is using privately within you whole organization/company. Then you can link with whatever other software (just not distribute/convey outside).

One even stricter license, might help you, AGPL based on the GPLv3. Then you force your competitor to release code, if the code to any user of a server you have ("software as a service").




Message has been deleted

Steven G. Johnson

unread,
Feb 7, 2016, 7:04:06 PM2/7/16
to julia-users


On Sunday, February 7, 2016 at 6:17:14 PM UTC-5, Jeffrey Sarnoff wrote:
The question is a legal question. This is not legal advice.

I have not done this with any Julia code.  I did do something similar some years ago with other source code.
Understanding that permission may be contingent on an agreement to pay money, the gist of it was:

LICENCE:
For strictly non-commercial use, including education and research, the MIT licence applies.

This is incoherent — the MIT license does not limit licensees to non-commercial use.   Effecitively, you are trying to use MIT license + an additional restriction (or minus some permissions), but written in a very confusing way.  You are basically saying: "you can do anything with this code [MIT license], except that you can't."

The general advice from most sources is: don't write your own license; the odds are high that you will mess up and say something whose effects are not what you intend.

Jeffrey Sarnoff

unread,
Feb 7, 2016, 7:11:36 PM2/7/16
to julia-users
Well, maybe maybe not -- irrelevant, though. I was not advocating its use, just relating something.
As I said, this is a legal question.  I am going to ask an intellectual property lawyer.  

Jeffrey Sarnoff

unread,
Feb 7, 2016, 7:15:13 PM2/7/16
to julia-users
So there is no misunderstanding -- I deleted the prior post.
I will relate whatever the lawyer I ask has to say about this.

Jeffrey Sarnoff

unread,
Mar 1, 2016, 3:52:21 AM3/1/16
to julia-users
With some external guidance, I have come to this perspective:

Any license that is not already in wide use is unhelpful to us.  Prefer a license that has been subject to litigation so there exists judicial interpretation of part of it.

Almost all licenses meeting this criteria that are freely available are inappropriate.  Most either favor the non-commercial user by restricting some commercial flexibility or push commercial rights by pulling ease of relationships with non-commercial users.

The most satisfactory approach uses creative commons' Attribution-NonCommercaial 4.0 International License (CC BY-NC 4.0) and the creative commons' license's notice mechanism to further clarify what "non-commercial" means. And to use "With the exception of" to ameliorate potential conflict with OpenSource licensed code.  And to make explicit that other uses require prior written agreement, at the place where the license is marked.

There is sound reason here. And, it is contrary to Creative Commons' recommendation:

Creative Commons does not recommend its licenses [for] computer software ...
Instead, we strongly encourage you to use one of the very good software licenses .. available. We recommend considering licenses made available by the Free Software Foundation or listed as “open source” by the Open Source Initiative.

.. CC licenses do not contain specific terms about the distribution of source code which is often important to ensuring the free reuse and modifiability of software. Many software licenses also address patent rights ... Additionally, our licenses are currently not compatible with the major software licenses, so it would be difficult to integrate CC-licensed work with other free software. 

Why does this make sense?

The reasons that drive the recommendation to avoid using CC licenses with software are all based upon the presumption of furthering unfettered use of the software -- avoiding impediments to its utilization.  For example, "not addressing patent rights" means that there is no assignment of patent rights.  In the situation at hand, while that is desired for non-commercial users, it is not the central intent.  Given no better alternatives, this one becomes the preferred choice.

Note

It would be good to obviate potential conflict in "integrating with other free software" for non-commercial use.  The difficulty is that kind of dual-use license would open up a gray area for another party using the work of a non-commercial user.
Reply all
Reply to author
Forward
0 new messages