Is there any software licence (GNU, MIT Apache etc.) that could be readily used or modified to allow to impose limitations of the specific use/modification of parts of a source code that otherwise is being distributed as open source?

Specifically, for example, in a collaboratively developed software package (like scientific software) one person implements a new (and yet unpublished) algorithm but wants to limit its use/modification (or publication ;-)) by others that also have access to the code. Can this be achieved by a software licence?

Or could parts of the code (that need extra protection of that kind) be accompanied by copyright notices that limit the free use/modification of the open source software as a whole?

2 Answers 2


Copyright can't protect algorithms, only a specific expression of an algorithm: ideas are not eligible for copyright. Anyone could re-implement the algorithm, whatever license you choose to publish under.

It might be possible to patent the algorithm. Software patents are contentious and have had mixed amounts of success. They are a whole different can of worms. It will be difficult to prevent publication and/or use of your algorithm by others through any other means than keeping it secret.

Hopefully that answers the question you had but didn't ask.

Now for the question you're asking: yes it's possible to release a program under a mix of permissive (i.e. MIT, BSD, Apache) and propriety licenses. Combining code written under different licenses (Eiffel Forum License, MIT and Apache), what are my options? deals with that question fairly well (though the non-accepted answer is much better than the accepted answer in my opinion)


If you need a license, it's because you're thinking of distributing it. And like Martijn mentioned, copyright does not protect algorithms or any other function of your software, so a license wouldn't do the job.

If you're the sole copyright owner of the software:

1) If you really want to distribute the software (source-code) while keeping parts of it confidential, you can use a Non Disclosure Agreement;

2) However, if you want to distribute it to a lot of people, then you might want to "hide" those specific parts in object code or use other DRM techniques to the same effect (these are all technical methods, not legal), and license it (DRM included) with whatever license you want, including GNU GPL v3, without much fear that those parts will become public.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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