I have a question regarding software licenses. I plan to put a license to a framework that I have written. My intention is that the license should be open, in order to maintain a community.

To be clear I will explain how I expect things to work. The framework will define some common API for certain functionality as well as a Proxy class that will invoke an implementation of that API. The proxy will be part of the framework, but it will internally call an actual implementation which will be developed mostly by someone else.

So, basically I want to be able to:

  • Distribute my library as free and open-source
  • Allow use of my library in commercial software
  • Allow commercial products to depend on my library i.e. provide a derived work as long as it is a result of linking to my framework API (not using the source code directly in (un)modified form), and license their derived work as they choose.
  • Provide legal means of respecting the licenses of any third party implementations invoked trough my library. This means a commercial application should be able to use my library an another commercial library designed to work with my library as long as it respects my licensing terms and those of the other commercial license.

I don't see why you think this will allow you to control the release cycle - anyone can fork of your Apache-licensed code (I know nothing of the Eclipse license) and do a release themselves. Regarding linking with LGPL licensed code, sure - anyone can add code to yours which requires this and the Apache license won't stop them. When you dual-license, the user gets to pick which of the two licenses s/he wants to accept - you can't make them accept both of them.

Bottom line - trying to control people via FOSS licenses is never going to work.

  • I am not trying to control people, but control something that I have created, and I don't see anything wrong with that. My purpose in general is the framework to be free for redistribution and open, but the primary focus for the community would be in extending it by creating derived works. For example I will be providing an API for a functionality in a way that an implementation of this API can be configured to be invoked by the framework indirectly - in other words you will need configure and use the framework. The API's implementation(s) is what I want to be on focus in the community. – Ivaylo Slavov Jun 15 '11 at 9:06
  • 1
    @Ivaylo If you want to control your creation, then maybe FOSS is not for you? For all FOSS licenses that I know, anyone is free to fork from your own code, call it something else, and go on their own merry way with it. That's what FOSS is all about. – Neil Butterworth Jun 15 '11 at 9:09
  • @Neil, I have edited my original post. I tried to make it a bit clearer how I expect this to be used. I want the community to focus on the extensions rather than the framework itself. – Ivaylo Slavov Jun 15 '11 at 9:17
  • 2
    @Ivaylo From long observation of a wide number of projects, I see very few cases where people split a project just to tweak a few APIs. Most people who would do that are people who would rather start an entirely new project "done right." The few exceptions are cases where the project developers no longer track what the community needs, either because the developers left the project or because of strong political differences. In other words, don't worry about the need to "control something that [you] have created" - you will control it. If you really want some control, consider a trademark. – Andrew Dalke Jun 15 '11 at 9:20
  • @Andrew, maybe you are right, a trademark might be a good point. I am just quite new to licensing stuff and I want to do the right thing. Maybe truly a trademark will preserve my rights and credits for my work, still, can it cause issues with some open licensing like for instance the Apache 2.0 license? – Ivaylo Slavov Jun 15 '11 at 9:27

A very pragmatic approach: Yes, there is a plethora of licenses around, but unless you really care about some specific license detail, I would recommend to use either the GPL v3 or the revised BSD/MIT license. The basic question you should ask yourself is:

Do you want to allow others to take your code and use it in closed-source projects?

If yes, I would recommend the revised BSD license.

If no, I would recommend the GPL v3.

All your concerns about controlling release and so on are not really related to the license; if you are the maintainer of your version, you can control the official releases.

  • Thank you for the answer. By the time of asking I was not very clear at what I really wanted. A actually want to provide the libraries I write as open-source, but prevent from copy-pasting pieces of code or the entire one in a third party project without the necessary acknowledgement of my work. So, the LGPL and Apache 2 licenses (and a few others) seem appropriate enough for me. I will also revisit the question to clear this out – Ivaylo Slavov Oct 29 '13 at 14:40

An addition to the existing answer here, and a simplified enough form for people getting to the licensing issue for the first time, here is a dedicated web site:

Choosing an OSS license doesn’t need to be scary - ChooseALicense.com

GitHub wants to help developers choose a license for their source code.

If you already know what you’re doing and have a license you prefer to use, that’s great! We’re not here to change your mind. But if you are bewildered by the large number of OSS license choices, maybe we can help...

This site is not a comprehensive directory of open source licenses. We think there are too many options, which adds to the confusion. On the homepage, we break it down into just three licenses. The vast majority of projects will likely be fine choosing from one of these three. Just in case you have specific needs not covered by those three, we also highlight a few other licenses to consider...

It contains a list of the most used licenses regarding source code (not only), and which usages are compatible with it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.