Hello, the MIT/APACHE license only applies to the rust compiler right? Or does it apply to programs made using Rust?
The standard library part of your application will still be MIT/Apache licensed but your parts will be owned entirely by you (neither the MIT nor the Apache 2 license is viral so you can choose to license your code however you want).
Am I allowed to release my source code but keep it copyrighted so legally you can’t use it to build a competeting product?
Also, I’m planning on using NTRU encryption in my program, they are claiming that NTRU’S GPLv3 is incompatible with Rust licensing? Any thoughts?
No, GPLv3 is compatible with rust’s licensing: https://www.apache.org/licenses/GPL-compatibility.html. This means you can use Apache 2.0 licensed code (such as rust’s standard library) in a GPLv3 program.
However, if you use NTRU, you won’t be able to prevent people from using your code under the GPLv3.
Short answer: No. if you’re using GPL code in your software, that is. Please see below.
You shall own the copyright (or copyleft, if you will). But,
you cannot prevent the recipient of your program using it in
anyway she deems necessary, as long as it complies with the license.
Neither can you avoid providing the source code to your users.
These are actually two of the fundamental concepts in software freedom.
More to the point, after linking with GPLv3 code your code has to be GPLv3 compatible due to the viral nature of it. However it does not prevent you from distributing your software commercially.
Also worth noting (from your above link):
Apache 2 software can therefore be included in GPLv3 projects, because the
GPLv3 license accepts our software into GPLv3 works. However, GPLv3
software cannot be included in Apache projects. The licenses are
incompatible in one direction only, and it is a result of ASF’s licensing
philosophy and the GPLv3 authors’ interpretation of copyright law.
One of the C implementations of NTRUEncrypt seems to be dual-licensed under 3-clause BSD and GPL, while another one is GPL licensed. I’m not sure which one you are planning to use, but if it’s the former you can choose to not release the source code. TLDRLegal can help with understanding what you can an cannot do with licenses.
Disclaimer: I’m not a lawyer. If you have one, listen to her/him.
EDIT: clarified the short answer a bit and restructured the content.
So, this specific application is in the world of cryptocurrency. It is possible to restrict users abilities to sell programs made using code I have written right? Is it possible to say that they can’t sell cryptocurrency made using a derivative of my program yet still comply GPL? I don’t see anything that would restrict me from selling something made using NTRU code, though maybe I’m not looking hard enough.
I realize you aren’t lawyers and we probably should run this by one, but I’m curious to see how others interpret these and understand them.
I’m not sure which one you are planning to use, but if it’s the former you can choose to not release the source code.
gaveen, how can we choose to not release source code? Under BSD?
If and only if your code doesn’t link in or include code licensed under the GPL (or a similar viral license).
No. The GPL basically says that, if you include GPLed code in your program and then distribute it to some user X, you must also license your program’s source code to X under the GPL (upon request). The GPL makes no stipulations concerning selling cryptocurrency so X is free to do so.
The 2 clause BSD license (the one to which you’re probably referring) only requires attribution. Unlike the GPL, it doesn’t require that you publish the source code of derivatives.
The software in question is (optionally) released under 3-clause BSD license. If linked with such code, you do not necessarily have to release your software as open source. In other words, you can to link to 3-clause BSD licensed code in a proprietary product. In this scenario, you can distribute only the binaries and do it under whatever license you decide.
I don’t know enough about cryptocurrency to understand the ramifications. However you cannot be both GPL-compatible and prevent certain use-cases at the same time.
Perhaps if your software is still GPL-compatible, but the cryptocurrency system has a user agreement, you can limit the user to run only the blessed software distribution. In a case like that, you should definitely get proper legal advise (and also consider the ethical aspects as well).