Hacker News new | past | comments | ask | show | jobs | submit login

So, if I understand correctly, the GPL prevents you from using a non-free library in your code? (Asking honestly: I have tried to find this elsewhere but the FSF page on the GPL is rather ... convoluted).

If that is so, then this is obviously a killer and quite seemingly arbitrary requirement. Your MS example is quite good.




The GPL requires that all code with the software under the license to also comply with the GPL, which includes libraries. Therefore, it's simply not possible (legally) to use non-GPL compatible libraries with GPL software. A lot of open-source licenses are compatible, such as the MIT or BSD license, but proprietary licenses are not obviously.


> A lot of open-source licenses are compatible, such as the MIT or BSD license

And, it should be noted, the LGPL license, which exists for exactly this purpose!


Could an argument be made that this falls into the system library exception?


Talk to a lawyer to be sure, but this would fall under the system library exception to the GPLv3 (though maybe not v2)


If you are the creator of the GPL software you can do what you like, link Firebase to it, distribute the app and release your code as GPL. You're effectively 'granting yourself' a proprietary license to use your code and a GPL license for everyone else to use it.

However it means nobody else can release their own apps (with notifications) on Android based on your code, or anyone else's GPL code. As soon as they link to Firebase and distribute they will violate the GPL by distributing a binary of someone else's GPL code with a proprietary library attached.


You cannot however use anyone else's GPL code while doing this, because those library authors didn't give you permission to relicense their code. It closes off the entire Play Store to the GPL. This is the same thing that caused the FSF to declare Apple's iTunes store as incompatible with the GPL. Curiously, I think the iTunes TOS clause that disallowed copyleft has since been removed, but I haven't heard anyone more qualified than I offer an opinion on whether you can now publish GPL iOS apps.


Yeah I'm confused too. I run an open source Android app used by a bunch of Universities, I'm not sure what this means? Surely you can still open source apps that use Firebase to send messages, you kind of don't have a choice.


I guess the question resides mainly on the GPL. Other licenses like BSD/MIT do not care what you do with the code or what you use to run it, AFAIK.


I don't get it. The Telegram GitHub says: "Since one can't use Google's push messaging in a FOSS app", but I can't work out why? Lots of FOSS apps on GitHub, mine included, use Firebase. It had never occurred to me it might be an issue.


If you use a gpl library, what you make with it must be distributed under the gpl.

You cannot distribute firebase blobs under the gpl. Ergo, you have used a gpl library to make something not gpl.

Which is illegal.


A GPL app can absolutely link to proprietary software and still be covered under the GPL.

From the GPLv3 itself.

> The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

Now you can't just go and include random proprietary jars in your app for whatever reason but but linking to the jar for the purposes of using the system notifications and background services seems to me like it would definitely count.


But Firebase is not a "kernel", "window system", it is just third-party proprietary library (not essential part of Android as I understand).


I personally would consider notifications and the ability to run in the background to be essential but there's a better test which is the reason that this exception exists in the first place.

From copyleft.org:

> The system library exception is designed to allow copylefted software to link with these libraries when prohibition of that linking would hurt software freedom more than it would hurt proprietary software.

This is really the core of it -- who is hurt more by disallowing this linking: Google or FOSS apps?


As a daily reminder, this piece of junk will be countermanded by Samsung, Lenovo and Huawei and whoever deploys AOSP as they use their own push platforms.


That sort of wishy-washy legal foundation is why people are afraid of the GPL.


All law has a certain degree of human judgment involved.


Note the GPLv2 doesn't allow the exception to apply if the library is distributed with the app. GPLv3 doesn't draw a distinction between distributing with the app or linking to something already on the system. But IANAL.


How does Signal work around this, since it uses FCM and it is GPL licensed?


Thanks. That is what I wanted to know.


Your code is no longer completely FOSS when you do that. It depends on a binary blob that you can't see into.


Yes, yes, but I guess BSD-licence-using developers do not care too much about it.


You absolutely can do this - this is how the Nvidia shim driver works after all.

What you can't do is write code which depends on GPL, then distribute it with those GPL components and insist the resulting package is not GPL.

In fact, it's not so much 'dependent than derivative. GPL is a copyright license, and copyright restrictions can only only flow to derivative works.


Dependencies are different than source code. You can write FOSS that runs on Windows, which is a dependency and not FOSS.


As long as it doesn't require linking to a proprietary Windows library to interface with the NT api. That would violate at least the GPL 2. Though you could do it yourself, and release your own code as GPL (and the combined work as proprietary), no one else could distribute the full work under the GPL because of the incompatibility.


You can ship so long as it's not statically linked.




Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: