20

I've read that GPLv3 imposes that we should make the source code of our app available.

But, available to whom? In case we sell our GPLv3 software, does it mean we have to make it available to those we sell the software to? Or to everybody else that didn't purchase it as well? Such as providing a repository online with the code?

  • 8
    You only have to give the source code to the people you sell your software to. However, the GPL allows those recipients to give it to anyone else for free. – Brandin Sep 23 at 18:27
  • 30
    @Brandin: minor nitpick - "... people you distribute your software to." The person you gave a free trial or beta-test copy to is also entitled to the source code, the same as the the person who paid money to buy it from you. – Stobor Sep 24 at 0:12
  • 3
    @Stobor: The beta tester is entitled to the source code of the beta you gave them. If you have a separate full version, they are not necessarily entitled to that. But OTOH limited distribution of GPL'd code is a very messy business to get into in the first place, and this is quite intentional on the part of the FSF. – Kevin Sep 24 at 3:25
  • 6
    It's worth noting that the big part of Free Software licences like GPL is not that you have to make the source available, but you also have to give the recipient free right to modify and redistribute that source and software - in case you sell your GPLv3 software, you have to keep in mind that every single customer is allowed to sell copies of that software (competing with you) or simply offer them for free to the public. – Peteris Sep 24 at 3:32
  • 22
    Did you read the license? – user253751 Sep 24 at 10:56
37

To any recipients. You do not have to make the source code available to the public, but have to provide the source code to anyone who received the software from you.

The details here depend on how you want to provide the source code (see section 6 of the GPLv3):

  • The easiest way is to always bundle the corresponding source code when you give someone a copy of the software.

  • If you offer the software for download, you can also offer the corresponding source for download at the same place. For example, any places where you offer your app could link to a GitHub repository with the source code.

  • Under certain circumstances, you can include a written offer to provide the corresponding source code. This written offer must be valid for at least three years, sometimes longer. You must then provide the software to anyone who contacts you with a copy of that offer, not just to those to whom you gave the software directly.

    • If you only distribute the software “occasionally and noncommercially” in unmodified form, you can also pass along a copy of a written offer that you received.
    • You can satisfy a written offer either by providing the source code on a physical medium (you may charge postage etc), or by offering the source code for download.
  • Under no circumstances can you charge any fees for the source code itself.

  • You should note that, of course, the people receiving the software from you are free to make it available to the public -- it is under the GPL, after all. – a3nm Sep 26 at 23:54
16

It might be helpful to provide the motivation for the GPL.

If I run your application on my computer, I should be able to read the corresponding working source codes and modify them as needed. It recognizes the right of the computer owner to retain control over his computer, regarldess of the software he has installed.

It does not say code should be free. It does not say application should be free. It only says that if I provide you with binaries of my product, I must also give you sources that can be used to modify the product in any way.

So, if you have code under GPL, and you sell the application as an end product the customer runs on their own hardware, you must provide the sources to that customer. If you the code doesn't run on the customer's hardware, you don't have to provide sources. In examples:

  • If you have a GPL-based PHP application that you're hosting, you don't need to provide the source codes to anyone (beyond the HTML/JS you run in the user's browser, of course)
  • If you have a GPL-based desktop application, anyone who buys your application has the right to request the corresponding source codes. You can choose to bundle the source codes with the application, or have them available at request (for at least 3 years after the sale happens).
  • If you have a non-GPL desktop application that uses a GPL-based web service you host on your own servers, you don't need to provide source codes to anyone.

That should clarify the requirements and rights you have as developed of GPL-based software. But it doesn't end there, of course. Any of the customers who run your code on their own hardware:

You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.

You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.

Anyone can take the GPL program you sold them, and distribute it further with or without any modifications of their own, and sell them for whatever price they want. The only requirement is that the copyright notice isn't removed (i.e. you can't take random GPL code and say it's your work) and all of the license and notices stays in place.

The work must carry prominent notices stating that you modified it, and giving a relevant date. You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy.

If you do modify the code, and release your modified version, you still must include all of the notices, along with extra notices that you made some modifications, and when.

You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. 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. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.

You may use any GPL-based application without accepting the GPL license, since that doesn't infringe on the original copyright. To redistribute and modify the work, you need to accept and follow the GPL.

So for a final summary of what is probably important to you:

If I buy a piece of software from you and install it on my own computer, I have every right to redistribute your piece of software further, at a profit to myself, without giving you a notice or any licensing fees. You must also provide source codes to me if I ask for them, and I can modify the application any way I want, as long as the notices stay, and the whole work is under GPL. I do not have automatic access to any further updates, either for new binaries or source codes, and there's no requirement for you to support my modified or redistributed versions of your application.

Needless to say, this is why commercial GPL works are usually either 1) services you do not run on your computer or 2) free, but with paid support. If I wanted to, I could order every single piece of GPL software on the market, and release it for free to everyone in the world, including the source codes.

1

I've read that GPLv3 imposes that we should make the source code of our app available.

That is wrong.

The GPLv3 says that if you want to redistribute the app, then you need to also provide the source code.

But, you as the original author are not bound by the license. So, you don't need to provide the source code at all.

It makes no sense to do that, but it is possible.

  • 2
    If you are autor of the whole code, then you can release it under any licence or licences you want. You can sell the Object Code to somebody under proprietally licence, lot $$ and do not give Source at all or give it for other many $$. You can convey the same Object Code under GPL3 too, but then you are bounded by GPL3 and have to provide Source code to recipient too, for free (otherwise he would not be able to use Rights given GPL3 - to have code, convey it to someone else,...). – gilhad Sep 24 at 18:12
  • 1
    If your work is based on GPL3, you do not have the choise, you can convey it only under GPL3 and give the Source Code too (or do not convey it at all). You can ask any $$ for the conveying (or none) regardless how many you eventually paid for it yourself. And he can sell it for any $$ or none at his will under GPL3. Also anybody can ask any $$ undel GPL3 for conveying, even different amount from diferent people, at his ouwn will. – gilhad Sep 24 at 18:12
  • @gilhad: "You can convey the same Object Code under GPL3 too, but then you are bounded by GPL3 and have to provide Source code to recipient too" – That makes no sense. The licensor is not bound by the license, only the licensee is. I don't have to comply with any license for my own code. It makes no sense to give someone my app under the GPLv3 without the source code, but there is nothing illegal about it. Stupidity is not illegal. – Jörg W Mittag Sep 24 at 20:36
  • 1
    The original autor can use any Licence with his work, even different licences for different people. But if you convey your work under GPLv3, then you are bounded by it 6. Conveying Non-Source Forms. - You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: ... - if you do not want it, you cannot convey it under GPLv3, but must choose some other Licence, that enables you to do so (if you are the original author, you can do it). – gilhad Sep 24 at 21:06
  • 1
    In other words: You do not have to co comply with any licence with your own code, but until you choose to comply with GPLv3 (in some particular case), you are not able to convey your code under GPLv3 (in that particular case). The Licence (and any other too) bounds somehow both parties (as to rights and to limitations) - the licencor cannot eq. sue the licencee for using the code, if the licencee sticks to limitations - so conveying something under some kind of licence must bound both parties, even if asymetrically. (eq. Licencee cannot change the Licence, Author can for another case.) – gilhad Sep 24 at 21:29
1

Someone that asks, and is entitled to it.

The distributor must make the source code available, so if you pass it on, you must be able to supply that source on demand, not just at the time of distribution.

It is not acceptable to point them to an upstream distributor, because your act of distribution resets the clock.

Likewise you do not have to provide source to anyone further downstream.

Where it become tricky is the interpretation of distribution. If you provide a GPLv3'd script that downloads "other" packages, are you distributing? What about providing a baseline of an upstream application that subsequently pulls updates?

You are only obliged to keep the baseline source as that is what you supplied. The "updates" are not "distributed" by you. Keeping the non-GPL'd components clearly separate to avoid tainting of either is prudent as well. Certainly do not ship anything pirated.

You should also really provide any build materials, such as make-files and commands.

Be sure when you support anyone ($), that you specify you are not asking for source, as some people will mail this to you on CD or flash drive?

I can't imagine selling a 15 year old car and then having to supply source code for the GPS Navigation system.

0

GPLv3 have it written in sections 4-6 - You send (convey) Source Code verbatim (4) or modified (5) and that is it - no more sharing required - you are giving Source automatically to the person to who you convey, nobody else

  • you send (convey) the Non-Source code with Source code on the same medium (6 a) - no more sharing required - you are giving Source automatically to the person to who you convey, nobody else

  • you provide some Physical Product (as a eq. machine) with Non-Source code (6b) so you must add written promise to provide Source Code to anyone who got the object code either on media for (basicaly) postage price, or free acces to the Source code on web (both for at least 3 years and at least while you support such physical product) - you are promising to give Source anybody, who have Object Code or (copy of) written promise - but only if you are in bussiness still

  • you may resend such product (ocassionally, nonbusines) with copy of the written promise (basically give the machine and all to somebody) (6c) - you are giving (copy of) written promise to the person to who you convey, nobody else

  • put it on web and provide link for download Source code to anybody as long as you provide it (6d) - you are giving Source automatically to anybody on Internet, who hit the download link (at least as long as you provide Object Code), the person to who you convey you must give such link

  • give the object code to a peer and send him link, where the Source is (6e) - you are giving link to Source to the person to who you convey, anybody can use such link

or do not convey it at all (that means, there is no other way to convey legally).


You can ask money for conveying itself, but no extra for Source code (if you are requered to provide it).


As you asked about HTML form and similar, that are provided in Source Code, that is covered by (4) and (5) - you can ask money, as it is conveying itself and is accompanied by Source Code automatically.

  • This addresses how, not to whom. Not an answer to this question. – MSalters Sep 24 at 11:17
  • I added simplyfied explanation (in grey) to the answers. – gilhad Sep 25 at 11:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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