24 ms·
> Problem: The Firebase Android client library is proprietary, meaning FOSS apps can not use it. Apps that do not comply are reported to the user as "using too
by kartan 7y ago
> Problem: The Firebase Android client library is proprietary, meaning FOSS apps can not use it. Apps that do not comply are reported to the user as "using too much battery".
This is a standard on the industry.
From 1999: https://www.theregister.co.uk/1999/11/05/how_ms_played_the_incompatibility/ https://www.theregister.co.uk/1999/11/05/how_ms_played_the_i...
It doesn't matter how much money Google is going to have to pay in the future as a fine for this practice. The amount of money that they will get for kicking out the competition is going to be way higher. That is a learned lesson from Microsoft (and probably others before them).
- pfortuny 7y agoSo, 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.
- striking 7y agoYour code is no longer completely FOSS when you do that. It depends on a binary blob that you can't see into.
- pfortuny 7y agoYes, yes, but I guess BSD-licence-using developers do not care too much about it.
- astazangasta 7y agoDependencies are different than source code. You can write FOSS that runs on Windows, which is a dependency and not FOSS.
- bscphil 7y agoAs 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.
- richardwhiuk 7y agoYou can ship so long as it's not statically linked.
- dwaite 7y agoYou 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.
- gwicks56 7y agoYeah 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.
- pfortuny 7y agoI 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.
- gwicks56 7y agoI 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.
- DiseasedBadger 7y agoIf 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.
- pfortuny 7y agoThanks. That is what I wanted to know.
- Spivak 7y agoA 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.
- laken 7y agoThe 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.
- Wowfunhappy 7y ago> 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!
- damnyou 7y agoTalk to a lawyer to be sure, but this would fall under the system library exception to the GPLv3 (though maybe not v2)
- deleted 7y ago[deleted]
- morpheuskafka 7y agoCould an argument be made that this falls into the system library exception?
- deleted 7y ago[deleted]
- simonh 7y agoIf 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.
- whoopdedo 7y agoYou 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.
- izacus 7y agoIt should also be added that the whole backend is proprietary (and was for GCM as well) and is being maintained and paid for by Google. Having said that, making firebase-messaging GPL-compatible library seems to be something that should make a lot of sense for Google to allow GPL apps to be released on the platform.
- sli 7y agoWindows 8.1 was absolutely determined to convince me that my brand new i5 was incompatible with Windows 8.1. MS hasn't stopped with the incompatibility garbage.
- verbatim 7y agoIn a world where CPUs now require microcode updates to run securely, it's not very obvious that this is bad behavior. Maybe erring on the side of safety here makes sense?
- izacus 7y ago> It doesn't matter how much money Google is going to have to pay in the future as a fine for this practice. The amount of money that they will get for kicking out the competition is going to be way higher. That is a learned lesson from Microsoft (and probably others before them). The competition in this case is Apples iOS, for which even HackerNews users love to harp over and over and over again how amazing it is and how little battery it uses because it doesn't allow apps to use anything but APNS, run anything in background or even include GPL source code. This is what's Android competing against - an completely locked down operating system which cannot deliver any kind of GPL code. And every time it allows more freedom to developers it's punished in the market by losing against iOS and mocked on this very website about how it allowes their app developers to drain battery and access data. What exactly do you expect Google to do here?
- gubbrora 7y agoAn ideal platform would use a foss compatible framework. It would allow the user to configure which server to use to push notifications(one server for all apps, since that is needed for battery reasons). Notifications would be encrypted with the apps key.
- jayd16 7y ago>allow the user to configure This may be an ideal solution for you but its really not for most people.
- jimktrains2 7y agoThat something is configurable doesn't negate the ability to have sane defaults that most people won't touch.
- joshuamorton 7y agoOften times even having configuration options creates surface for security issues. A good example of this is that there were scams that involved having people paste some script into their chrome devtools and steal data. This worked fairly effectively. Facebook ended up doing some magic to show a warning message in the devtools console to tell people that no, you really shouldn't paste random stuff here, it will do bad things. Configurability does come with a cost. And "the ability to reroute all push notifications through an arbitrary MITM" is a security cost that I expect wouldn't be worth it.
- evilDagmar 7y ago> Problem: The Firebase Android client library is proprietary, meaning FOSS apps can not use it. Apps that do not comply are reported to the user as "using too much battery". This is simply not true. These two points don't even make a coherent argument, as it's plainly discernible that lots of apps don't use the Firebase Android client library but aren't "reported to the user". Furthermore, "using too much battery" is not what the notification says. It simply says "is using battery", and even this is avoidable.