I have read many articles on GPL v2 licensing and I understand the main idea - when one uses a library or piece of software that is GPL-based, then the software, generally speaking, must become GPL as well. But what happens when you use a GPL-based tool (i.e. Git for Windows)? I would need them for my Visual Studio 2013 (which has only basic git support) to make my work easier. Does it mean that the software I would be writing with help of it, as it facilates the work (but not of its source code nor its libraries) must be GPL as well?

  • 1
    Does your code also get the Microsoft licence applied to it? Does Microsoft now own your code? Why not? They would like to, if they could. So if they could they would. But they have not. Why? – ctrl-alt-delor Nov 13 at 11:57
up vote 1 down vote accepted

It's useful to remember that open source licenses including the GPLv2 typically derive their authority from (international) copyright law. They do not impose any conditions or restrictions on you. However, copyright law reserves many rights to the copyright holder, such as making copies, making modifications (“derivative works”), publishing derivative works, or “performing” the software publicly. An open source license gives you a license to do all of these things, but under various conditions. For example, you must provide suitable attribution and keep any legal notices intact. And derivative works of GPLv2 code can only be published under the GPLv2.

When you merely use a tool (such as an IDE, compiler, or version control system) as part of your internal development process, you are not creating a derivative work. Copyright law does not come into play and so the open source license is irrelevant. The GPLv3 spells this out explicitly:

You are not required to accept this License in order to receive or run a copy of the Program. […] However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License.

(The GPLv2 has similar but less quotable language.)

In contrast to merely using some software, you are creating a derivative work when you are modifying open-source sopftware, or when you include open-source code into some project.

The focus on copyright law from open source licenses is very different from the focus on contract law by proprietary licenses or EULAs. A private contract can include any lawful restriction, such as only allowing use of the software for certain purposes, or requiring output to be made available under specific conditions. E.g. the EULAs of some games give the game's publisher a license to any “user created content” such as screenshots that you generate through the software. You are not going to see similar terms in open source licenses. (The copyleft nature of the GPL licenses appears similar, but only applies to derivative works, and it's always your choice whether you publish the modified software.)

In practice, neither open source nor proprietary development tools restrict their use. So you can use proprietary tools like Visual Studio and Windows to develop open source software, and open source software such as GCC, Git, and Linux to develop proprietary software.

If you want to learn more about the general philosophy behind open source licensing, read the Free Software Definition and the Open Source Definition. The Open Source Initiative maintains a list of licenses they approved of being OSD-compliant.

Not at all. In your example with the GPLv2, the only time you'd need to worry about sharing source is if you modify git in some way, and distribute the results of that modification. The people you distribute to would have a right to the source, with your changes, under the GPLv2.

Note that some other licenses like the AGPL do require sharing of source when distributing output of the software under some conditions.

  • AGPL does not say anything about the 'output' of the program. Rather, it says that if you make the program available on a network in an interactive way, then you must release the source code to the people that you make it available to. It doesn't say that if you produce some 'output' from the program, that you need to do anything. – Brandin Nov 14 at 10:03

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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