0

Here is the one of the many (confusing) cases related to GPLv2/3 licensing:

My company is developing an application for mobiles which will connect to servers and provide services to users.

So, here's the scenario:
Server - uses OpenSIPs-GPLv2, ejabberd-GPLv2(modified source code)
Client(Android, BB10, iOS) - uses Linphone-GPLv2, Signal Protocol-GPLv3

I went through lot of readings available on net, still have some queries like:

Commercial Purpose

  1. Charge for services and distribute client apps through respective stores for free for internal use, others can download but can not login to access services
    [my company will be responsible for installing and maintaining servers for customer companies, and publishing apps]

  2. Charge for services and distribute client apps internally
    [my company will be responsible for installing and maintaining servers for customer companies, and distributing apps]

Internal Use Only

  1. In-house server, distribute apps through respective stores for free for internal use, others can download but can not login to access services
    [my company is subsidiary of beneficiary company]

  2. In-house server, distribute client apps internally
    [my company is subsidiary of beneficiary company]

Here, beneficiary company means it's employees are going to use the app internally.

The question is:
In the above 4 cases, when should I have to publish the source code?


Update

Internal means distributing apps through our own servers or emails instead of publishing to respective mobile stores. And here it is sure that only legal employees will be getting the application to download.

E.g. Consider three companies
D- developing company
P- parent company of D
C- any other company which is customer of D

Now, D is developing app described above and will be using for following purposes:
Commercial-
Installing services on C's in-house server and Distributing client apps to employees of C through

  1. Mobile app stores

  2. Internal distribution

Free for parent company-
Installing services on D's in-house server and distributing client apps to employees of P through

  1. Mobile app stores

  2. Internal distribution

*distributing through mobile app stores means Play store, Apple app store etc. In this case any one can download app worldwide but only intended users(employees of respective company) can login and use the services.

  • When you mean internally, is the server software installed on a server or a client app installed on a device owned by someone that is not an employee (or assimilated) of the company? and if yes when? and can you update your question accordingly? e.g. the simple test for redistribution happening is the loss of direct control. Someone else server or someone else handheld is likely to be a redistribution irrespective of who installs or maintains it. – Philippe Ombredanne Jan 5 '17 at 18:14
  • @PhilippeOmbredanne I have updated question with an example scenarios, please chek – D4ttatraya Jan 5 '17 at 19:24
  • Wording clarification: You said "charge for servers". To me that means you are selling server machines to customers that they run. If that machine has GPL software on it, you need to provide the customer with the source. But, it seems you may have meant "charge for service" where you run the machines and the customers connect to you. That's different! – MAP Jan 6 '17 at 3:14
  • @MAP yes, it's charge for services not servers! – D4ttatraya Jan 6 '17 at 5:16
  • Thanks for updating the Q. In that case you want to read the FSF take on SaSS: (gnu.org/philosophy/who-does-that-server-really-serve.en.html). – MAP Jan 8 '17 at 22:03
4

Whether or not you're charging money is irrelevant as far as the GPL is concerned, so you can take any notion of commercial versus internal out of your consideration.

The GPL is all about protecting the freedoms of users. Therefore, what it requires is distribution of the source code to users of the software.

The first major impact this has is that all of your server-side code never needs to be distributed. Technically users of your app never use the server-side code - they just use data that it produces. This is the reason for the AGPL's existence.

Your client code, however, must be distributed to anyone who uses it. If you giving the app to an external customer, then you must also provide them with the source of the app (upon request). This source may not be useful to most people, if it requires login credentials to your service, but nonetheless you must provide it; the idea behind the license is that someone who does have credentials and normally uses the app can make modifications to it (say, to fix a bug, or change how something works).

In summary, you do not need to publicly release the source code of your server app, but you do need to release the source code of your client app.

  • all of your server-side code never needs to be distributed but what if we go and install this code to customer company's in-house server? – D4ttatraya Jan 7 '17 at 7:16
  • you do need to release the source code of your client app - if we distribute client apps internally instead of play/app store, then also we need to publish source code? – D4ttatraya Jan 7 '17 at 7:22
  • 3
    If you are providing software for someone to run on their machine (either server or app), then the source for that software needs to be available to them. It doesn't need to be public, just to anyone who uses it. So, if you only release an app internally, then the source only needs to be available internally But, if you make the app available publically (i.e. you use the app store for distribution), then the source needs to be available to anyone who downloads it. – MAP Jan 8 '17 at 22:07

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.