Where exactly is “the line” between needed to copy a copyleft license and not?
For example, I am writing a non GNU GPL program that uses git.
I do not mean that I use git to write it, I mean, git is actually a vital part of what the program does. The code itself calls git.
Can I do this without needing to copyleft?
Can I distribute git with my program? Or do I have to require users to install it separately?
I know that a “fork” of git would be copyleft and just using git to write code does not. What about in-between?
More specifically:
my program uses git to push files to remotes. This is more lightweight then a simple upload cause it only sends a diff.
I don’t need to patch git or change at all, but I would like to package git and the Unix libraries it comes with (for windows) simply for simplicity.
10
It is a grey area (BTW beware I am quite a GPL enthusiast so I am biased); I guess you mean GPLv3 (but perhaps git is GPLv2 and then details are different)
GPLv3 is so called a “viral license” (I dislike that expression because it looks negative,but it is not), or (much better wording) a strong copyleft license. It has a FAQ which answers some of your concerns. GPL is about free -or libre– software (freedom of speech, not “free as in beer” i.e. freeware or gratis)
I won’t repeat the FAQ. What matter is not only how you use GPL, but also somehow your intents. For instance, if you publish a GPLv3 patch to a GPLv3 program which is only designed to communicate -using some unique protocol peculiar to your application!- with a particular program of yours, some people believe that your program should be GPLv3-ed. If the protocol is documented and used by several applications things are different.
So linking (with ld
) is not the only way to have some derived work (or covered work) from the point of view of GPL. Things might be more complex.
Ultimately, it is a legal question (so off-topic here), and in several legal systems it has to be specifically tested in a court.
BTW, you could ask your lawyer, and you might ask the FSF. Of course, the FSF has a “biased” (at least strong & specific) view on software, but it also does have experts on the licensing field and it has some lists or forums to discuss that. But read the GPLv3 and its FAQ first.
The point is that your user should keep his/her freedom to upgrade (or improve) git
and that should be easy for him/her (so making that easy is your technical concern). At the very least, you should document how your program is exactly using git
and of course provide a mean to replace git
by an upgraded version (perhaps installed elsewhere and invoked as a different command than just git
, e.g. $HOME/bin/git-patched-by-basile
, so at least the command line invoking git
should be somehow user-configurable in a documented way etc…).
If you package git
on some physical media, be sure (for courtesy to your users) to package its source code also. If you are providing some network downloading of your software, again have the courtesy to give the URL to git
and to recommend some version and to explain how your user could upgrade/reconfigure the git
used by your program.
At last, did you consider making your own program some free software? That would solve a lot of questions (especially if you care to choose a license compatible with the GPL version used by git
)
If you work for a company, be sure to inform and ask your managers/clients and the lawyers that you do things right. Don’t violate the GPL and make them be aware of any issues! Don’t even try to interpret the GPL yourself (but explain what you understand about the GPL to managers and lawyers and clients and any responsible stakeholder). Ask the company (owning the software), e.g. your boss/your client/your lawyer. If possible try to explain your boss why making your code a free software under GPL is better for the company. This is a long journey.
I am not a lawyer and you probably are not neither. But you have ethical concerns, you don’t want to do illegal things, you don’t want to put your comapny in trouble, so you should not hide any potential issues (e.g. from your manager, if you are an employee, or from your client, if you are a consultant).
If you are a developer employed by some company, don’t even try to solve licensing issues yourself, and ask your manager! (Details are strongly specific to the legal system of your country, your work contract, etc…) Surely don’t hide (neither from your boss, nor from your users) the fact that the program is running git
and make user-configurable the exact name or command-line or path invoking the git
program
4
Sometimes it’s a judgement call. The following are the kinds of questions that will be asked when you get taken to court:
- Does your software directly compete with git, or is it incidental to its use? In other words, is the elevator pitch of your software something like, “It syncs changes to files between different computers?”
- Does your software still work, just with reduced functionality, if you didn’t install git?
- Could a user replace git with, say, a shell script that calls
rsync
without changing your code? - Can you upgrade your software and git independently?
If the answers to all these questions aren’t clearly on the safe side, you need to get lawyers involved. If your company doesn’t want to GPL their software, they understand that incurs the cost of limiting their ability to incorporate GPL software in their products. You need to clearly spell out the cost of alternatives. They might surprise you. Even Microsoft has contributed some open source software.
4