We've been planning to use NAnt in our product for running customizable scripts and almost convinced our boss to go for it (IBM's Websphere server where all server automation is implemented via Ant is good argument here). But unfortunately we've found out that Ant and NAnt have different licenses. Ant is of course released under very pointy-haired-boss-friendly Apache Software License Version 2.0, while NAnt (which I mistakenly thought is just .NET clone of the Ant) - is under scary GNU-compatible license, which may be a red light for some companies. So now we are waiting for a legal department's answer on using GNU licensed software in our product :(
That's too bad. I mean if Ant is using one open source license and happens to be so immensely successful in Java world, why its .NET version is released under a different and more restrictive open source license? That makes a very little sense to me.
There is something in the NAnt license that looks like an attempt to workaround the issue:
In addition, as a special exception, Gerry Shaw gives permission to link the code of this program with the Microsoft .NET library (or with modified versions of Microsoft .NET library that use the same license as the Microsoft .NET library), and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than the Microsoft .NET library. If you modify this file, you may extend this exception to your version of the file, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
Can somebody clarify that? I mean is it ok to use NAnt and distribute its DLLs as part of a non-opensource product? (We don't plan to modify NAnt sources of course).
As Oleg said, for some our potential clients, the fact that our product just calls some open-source tool (under GNU license) can be "aggravating circumstance" against our product.
I suggest directly contacting the developer of NAnt (gerry Shaw) ; he may be will to deliver to you a version of Nant that is licensed differently.
Well, basically we wanted to call DLLs...
We need some way to run a task within our application in a highly custimizable way, so customers can define their own steps (think of build or deploy process).
In Java world it's done with Ant, but in .NET looks like we have to implement bits of Ant ourselves. Too bad...
check out:
http://en.wikipedia.org/wiki/Debian_Free_Software_Guidelines
http://lists.debian.org/debian-legal/
http://en.wikipedia.org/wiki/GPL
http://www.fsf.org/licenses/gpl-faq.html
http://www.groklaw.net/article.php?story=20031214210634851
IANAL, but as long as you call NAnt using a system call to an executable and not directly into the DLLs themselves, it would be allowed.
Why would you need to call into the DLLs directly anyway unless you are making a derivative product?