Hacker News new | past | comments | ask | show | jobs | submit login
Apple’s Great GPL Purge (2012) (ath0.com)
67 points by LaSombra on Nov 27, 2019 | hide | past | favorite | 69 comments



> There are two big changes in GPL v3. The first is that it explicitly prohibits patent lawsuits against people for actually using the GPL-licensed software you ship. The second is that it carefully prevents TiVoization, locking down hardware so that people can’t actually run the software they want.

> So, which of those things are they planning for OS X, eh?

Seems pretty obvious in retrospect (and probably would have been obvious at the time, too) - they don't care about locking down Macs, but they do care about locking down iPhones and iPads. The remaining GPL software, which has stayed steady for a couple of releases, are all things you don't need on iOS: emacs, screen, etc.


> Seems pretty obvious in retrospect (and probably would have been obvious at the time, too) - they don't care about locking down Macs, but they do care about locking down iPhones and iPads.

Are we sure yet? Apple ships a read only system partition now, and requires the users to go through hoops to remove that, and they have been adding more and more of the random codesign and entitlement locking features to their base operating system (to use their AuthKit library to authenticate for Apple services, for example, you now need to not only disable System Integrity Protection, but patch the Apple Mobile File Integrity Daemon... which occurs to me maybe is now macOS instead of Mobile? ;P). These are the same steps as jaikbreaking an iOS device, only without the "exploits" (though still with patching code).

I was able to find a good walkthrough of the process here:

https://pvieito.com/2016/12/amfid-patching

> The remaining GPL software, which has stayed steady for a couple of releases, are all things you don't need on iOS: emacs, screen, etc.

If it causes you to rethink your position here, you might want to try running emacs on the latest version of macOS...


> The first is that it explicitly prohibits patent lawsuits against people for actually using the GPL-licensed software you ship

Its a bit more complex than that. You are also prohibited from distributing the software if you are knowingly relying on a patent license from a third party.

A common interpretation in the past, and suspect it still rings true today, is that Apple do not know the scope and extent of their patent agreements with other companies, but they don't want to rely on ignorance when distributing software to millions of customers. The worst case would look like this:

Third-party company sue a Apple customer over a patent.

Customer accuse Apple for misleading them and convince a developer to aid them.

Developer sue Apple for infringement.

Somewhere, somehow a memo from a lawyer actually did inform someone at apple that the third-party company had such patent, meaning that apple knowingly infringed the copyright (much higher fines/punishment).


> The remaining GPL software, which has stayed steady for a couple of releases, are all things you don't need on iOS: emacs, screen, etc.

And those are getting removed too.

(can't immediately find the Apple Technote about that, and don't have Catalina installed to verify if that's already happened)


Emacs is definitely gone, I was shocked to find. I must say, having Emacs (even aging Emacs) in the default distribution of OSX was helpful from time to time, needing to edit a configuration file on a colleague's Mac.


Good use-case for vim


For once, I don't see what the big deal is. If anything, I think it surprising that Apple didn't fully excise GPL stuff long ago; as this blogger notes, it's not like they couldn't pull BSD components in.

> They already annoyed and inconvenienced a lot of people with the Samba and GCC removal.

I'm curious at both of these, albeit for different reasons. I'm pretty sure there are BSD-licensed smb stacks, so this doesn't strike me as a licensing issue so much as a "wanting to remove a component that they have no interest in" issue. And why was removing GCC inconvenient? Clang is a perfectly serviceable C compiler.


Three facts: 1: clang was significantly worse when Apple removed GCC support, 2: clang is still significantly worse than GCC, and 3: it's because of Google's investment, not Apple's, that we can think of clang as a "in the same stadium" competitor to GCC that makes Apple's removal of GCC surprising.

Any pair of these wouldn't be surprising. Apple is investing in an unproven technology, ok fine. But the congruence of these three facts is surprising. Apple is investing in a worse technology and also relies entirely on Google to improve that technology for them. Blows my mind.


> clang is still significantly worse than GCC

On what basis is that a "fact" without further context? I'd say that very much depends on what you consider or measure.


The compile times are much longer and the generated code is usually slower except for autovectorized code.

I've spent a lot of time testing both clang and gcc, and right now the only part of clang I use regularly is the static analyzer in my continuous integration.

For C++ in particular, the compile times are 2-3 times as long. It's unbelievable how slow it is.


> 2: clang is still significantly worse than GCC

Do you have any sources/information to back that statement up?


Anecdote from someone who's not the parent: I have had issues with C++ compile times in Mac OS X for a long time. GCC compiles many things in almost half the time.


At least in the past, Apple has had significant contributions to LLVM. These days, that might be limited to the Swift stack.


They did replace Samba with their own SMB stack, and the new one was very buggy indeed, to the extent of "eats your data in normal usage when run against a contemporary Windows server".


Similarly, they replaced pcsc-lite (pcscd, which brokers hardware access, and libpcsc, which speaks to pcscd) with a proprietary implementation as there was no BSD-licensed alternative.


Clang has been getting better and better over time. Getting rid of GCC is a no-brainer now, but maybe not at the start of the decade.


Well: clang exists only because of the decision to get rid of GCC in the first place :)


Right, I think my point though is it wasn't really up to the task until a few years into the project. These days I would personally rate it better than GCC based on my experience.

GCC's relevance remains in that it still supports more platforms, or say, the Linux kernel still uses it.


If one needs GCC, they can install GCC. I don't get the insistence that "the tool I like should come in the default install." Not to mention, Apple would routinely let their installation languish at older versions of various utilities, necessitating upgrading via package manager.

Being 'inconvenienced' by the removal of GCC from the default install is exactly that: an inconvenience.


Not too much in the way of BSD licensed CIFS server stacks, at least last time I checked. Most of them are proprietary or GPL (or CDDL, in the case of Solaris').


"macOS, starting with Mac OS X Lion, has an Apple-developed SMB server implementation called SMBX."

- https://en.wikipedia.org/wiki/List_of_products_that_support_...


I know, I worked on it :) It's not open source though.


I was actually thinking of the CDDL one in ZFS when I made that comment:) Granted, technically not BSD-licensed, but not GPL and ... less copyleft, anyways.


I am wondering if Apple ever contribute anything back to the *BSD?


I don’t know about now, but they have done in the past, mainly in the guise of paid developers.


I can’t imagine why they would want software with viral licenses out of their codebase.


Pick your poison. Where the GPL is viral, proprietary licences are fatal.


Specifically in what way are proprietary licenses deadly?

Lock-in can certainly be problematic but with more open interchange formats that’s becoming less of an issue.

Saying proprietary licenses are deadly without explanation seems more like zealotry than reasoned consideration.

Thankfully we have alternatives to the GPL like MIT and Apache for people who want to share source but not force that choice on others.


> Saying proprietary licenses are deadly without explanation seems more like zealotry than reasoned consideration.

Look I didn't come up with the analogy for the virality of the GPL. I don't think it's very illuminating. What the analogy says is that once you have GPL-licenced code in your code all of it will catch it and must be published under the GPL. Proprietary code is worse because once you have proprietary code in your code it becomes unpublishable. I call that fatal under the analogy.

> Thankfully we have alternatives to the GPL like MIT and Apache for people who want to share source but not force that choice on others.

Sure those are benign within the analogy. That's what the analogy is meant to convey. Funny thing though: MIT code can be made proprietary, I mean fatal, GPL code cannot.


That was an epic troll. In a single post it took the OP from implied acceptance of an anti-GPL trope to explicitly defending proprietary licenses from an attack by the same kind of careless metaphor.

I hope others on HN pick up on this and use the "proprietary is deadly" trope similarly (that is, only in response to casual uses of the "viral GPL" trope).


This is why I almost always downvote comments that talks describe a license as viral. It is a metaphor that only causes harm to civil and constructive discussions.


See also Viral Code and Vaccination by Robert J. Chassell:

When others hurt me, I try to defend myself. But some tell me that this makes them sick. They tell me that I should permit people to rob me of my work. They tell me that I should never try to defend myself.

They tell me that I should stop using the GNU General Public License, a license that vaccinates me against hurt. Instead, I should adopt a license that permits other people to rob me with impunity. They want me to adopt a license that forbids me from fighting back. They want me to give up my right to benefit from a derivative of my own work, a right I possess under current copyright law.

Of course, the language is a little less feverish than this. Usually, I myself am not called “infectious”. Rather, the legal defense that I use is called “infectious”. The license I choose is called “viral”.

In every day language, words such as “infect” and “virus” describe disease. The rhetoric is metaphorical. A legal tool is not a disease organism; but it is popular to think of the law as an illness, so the metaphor has impact.

The people who want to rob me use language that says I make them sick when I stop them from robbing me. They do not want to draw attention to the so-called “disease” that makes them ill: my health and my rights, and the health and rights of other people. Instead, they choose metaphor to twist people's thinking. They do not want anyone to think that I am a good citizen for stopping crime. They want the metaphor to fool others into thinking that I am a disease agent.

The GNU General Public License protects me. The connotation of “virus” and “infect” is that my choice of defense gives an illness to those who want to rob me. I want freedom from their robbery; but they want the power to hurt me. They get sick when they cannot hurt me.

To use another health and illness-related metaphor, the GNU General Public License vaccinates me; it protects me from theft.

Note that the theft about which I am talking is entirely legal in some situations: if you license your work under a modified BSD license, or a similar license, then others may legally take your work, make fixes or improvements to it, and forbid you from using that code. I personally dislike this arrangement, but it exists.

https://www.gnu.org/philosophy/vaccination.html


GPL has had decades of reasoned consideration, and v3 in particular is one of that few holdouts in an era of tivoization that puts the user in a prison. It is inevitably the users who suffer, and in greater numbers. Tivoization is fatal in the sense of freedom of the user, which is the most important freedom in many peoples eyes.

I've said it before and I'll say it again. BSD is about freedom for the devs. GPL is about freedom for the user. Not all users are devs, but all devs are users, and users should take precedence. Proprietary doesn't give a crap about either, and its defenders are the ones most closely resembling religious zealotry... as in false in almost every way but clung to mostly because it benefits it's pushers.


The Venn diagram of "devs" and "users who would like to tinker with the firmware of their iphones" is pretty much a circle.

Most users don't have time to do that; if the software of their phone doesn't work they'll get another phone, not another software.


The usual retort to this argument is to analogize devs to mechanics: most car owners don't want to tinker with their engines, but even car owners appreciate the freedom to choose their own mechanic, and assume the mechanic has the ability to utilize and access to alternative parts.


Why stop at phones, what about x86 too? When does it stop? I side with freedom, and say phones should be more free, instead of making excuses about why they aren't. This is why I fully support pinephone and Librem 5's work, however imperfect. The right to repair, in my opinion, inherently requires the right to root. Firmware in particular is behind, (which is why I have some holdout hope for power and risc/mips architectures in the future), but we can still fight for software freedom at least.


The GPL has no power that owners of proprietary code don't already have. The GPL is a software license under copyright law which grants certain permissions subject to certain conditions. If you don't fulfill those conditions, standard copyright law takes effect.

The GPL does not on its own have the power to "infect" the rest of your codebase. You can absolutely decide you want to distribute GPL'd software compiled in with proprietary software for which you don't want to release the source. The owner of the GPL software still does not, at this point, have any right to your source. All they can do is say, since you have not obeyed the conditions, you don't have a valid license for my software, and I am now ready to sue you for infringement.

You can resolve this situation by relicensing the proprietary components under the GPL and distributing source, if you'd like. GPLv3 has an explicit provision that says, if you do this within 30 days of being notified of the problem, the license retroactively does apply to you and it wasn't infringement. Many major GPLv2 rightsholders have voluntarily adopted the same condition for their GPLv2 code: https://gplcc.github.io/gplcc/

You can also resolve the situation by settling with them out of court, going to court and paying damages, going to court and arguing it was fair use / de minimis / whatever, trying to buy them out, etc. If you're willing to do any of those, then you don't have to release your source. (If you go to court and lose, you will probably be ordered to not further distribute the GPL'd code in violation of the license.)

None of this is specific to the GPL. If you use proprietary code without a license at all, the rightsholders can still sue you. You can still negotiate with them. You can still fight it out in court. The rightsholder can even choose to say, "Hey, you know what? If you release the entire source code to your product publicly, we'll drop this case." They have the ability to negotiate that with you because that's the same ability GPL rightsholders have.

GPL is considered "viral" because, for most people, releasing the rest of your source code is preferable to losing in court for regular copyright infringement. With proprietary software, if it's found out that you've misused someone's code, they probably will not offer you that viral option - they'll go straight for the monetary damages. If you don't consider that fatal, then you shouldn't fear that situation with the GPL, either.


> The GPL has no power that owners of proprietary code don't already have.

This is technically true, but practically getting a proprietary license for some GPLed programs would be obscenely difficult. How many authors are there of GNU Bash? GCC? Would all of those authors accept money from Apple to allow them to ship a proprietary version of their code in MacOS? Are they all even still alive? And I bet some people would demand obscene amounts of money for tiny patches they made decades ago, just to spite Apple. And they'd probably write scathing blog posts about how apple hates free software just because they were asked. Then what would apple do? Strip out random chunks of code from archaic codebases like bash and hope for the best? Ugh.

This would be fine if there was a central owner to whom copyright has been assigned, but opensource programmers aren't in the habit of doing that. So there's no central body with whom Apple can negotiate (and even if there was, would the FSF sell a proprietary license to apple?). Under RMS? No way.

Your second point seems incoherent in its own terms. You say:

> You can absolutely decide you want to distribute GPL'd software compiled in with proprietary software for which you don't want to release the source.

... But then you say:

> GPL is considered "viral" because, for most people, releasing the rest of your source code is preferable to losing in court for regular copyright infringement.

So you're saying that the GPL only applies if you don't want to get sued? I mean, sure, but spoilers: Apple doesn't want to get sued for GPL violations. They have deep pockets, and they'd lose, and they'd get really bad press for it which might hurt their ability to hire good programmers in the long run. They don't want the reputation Microsoft had in the 90s.


My point is that proprietary code being proprietary also only matters if you don't want to get sued.

There is a view that the GPL is more dangerous than proprietary code. This is untrue: it is strictly less dangerous. If you are somehow not worried about being sued over proprietary code (which, to be clear, seems like a bad approach to me), you shouldn't be more worried about the GPL.

You also have no guarantee of negotiating a license from the owner of proprietary code, and such owner is way more likely to have lawyers than someone who posted a patch to bash 10 years ago and them disappeared from the internet.

(Also, for GNU projects, GNU has a policy of requiring copyright assignment to the FSF, mostly because the FSF does have lawyers and are unlikely to be willing to negotiate a private license. For non-GNU software, agreed, but, "This vendor went out of business and we have no idea where the copyright ended up" isn't unheard of either.)


> The GPL does not on its own have the power to "infect" the rest of your codebase.

The reason some people specifically want to avoid enhancing GPLed software is because they want to be able to modify software without the condition of releasing the source for their modifications. The fact that the alternative to voluntarily releasing the source is being sued doesn't make the situation any less burdensome.

> With proprietary software, if it's found out that you've misused someone's code, they probably will not offer you that viral option - they'll go straight for the monetary damages.

And this rarely happens in practice because people with proprietary software guard the source and don't intentionally let others have it.

All three options (proprietary, GPLed, permissive open-source licenses) serve different purposes and will be chosen by different entities based on individual circumstances.

None is a one-size-fits-all, and I think we've seen over the last decade or more that the size that fits many corporations is the permissive open-source license model which allows them to contribute back what they'd like without being forced into the choice between contributing back everything or being sued.


The GPL is considered viral because linking GPL code into my application imposes legal requirements and restrictions on all the other code in my application. Most licenses don't do this. If I bought a proprietary software license that said "you must not use this code in a program that implements DRM", I would call that viral as well.


> Most licenses don't do this

Most free software licenses? Sure. Most Proprietary software licenses? I don't know about that. For example from IE 5:

> 6. EXPORT RESTRICTIONS. You agree that you will not export or re-export the SOFTWARE PRODUCT, any part thereof, or any process or service that is the direct product of the SOFTWARE PRODUCT (the foregoing collectively referred to as the "Restricted Components"), to any country, person or entity subject to U.S. export restrictions. You specifically agree not to export or re-export any of the Restricted Components (i) to any country to which the U.S. has embargoed or restricted the export of goods or services, which currently include, but are not necessarily limited to Cuba, Iran, Iraq, Libya, North Korea, Sudan, and Syria, or to any national of any such country, wherever located, who intends to transmit or transport the products back to such country; (ii) to any entity who you know or have reason to know will utilize the Restricted Components in the design, development or production of nuclear, chemical or biological weapons; or (iii) to any entity who you know or have reason to know has been prohibited from participating in U.S. export transactions by any federal agency of the U.S. government. You warrant and represent that neither the BXA nor any other U.S. federal agency has suspended, revoked or denied your export privileges.

I have seen similar clauses in a lot of other software in the past (such as itunes, Adobe programs, and Norton I think).


How would we describe a license that simplie said that you are not allowed to impose any restrictions, legal or otherwise, when distributing the software or work made from it.


True, but it’s perfectly reasonable for Apple to come to the conclusion that, “we just don’t want to deal with the risk” and move on. If they’re not using either GPLed or proprietary stuff, the problem goes away.


To Apple itself, though? They already release Darwin source that they have no legal obligation to, AFAIK they're hardly taking patches from the community, and it's their own software so it's not like they're dealing with a difficult upstream. Why would Apple suffer if they took Darwin fully closed source?


The analogy talks about the conditions under which code can be mingled. Permissive licences allow free mingling (benign), GPL code causes all mingled code to become GPL (viral), proprietary code cannot be mingled (fatal).


Because they're in violation? bash + rootless.h for example.

Because they want to restrict your ability to run code (ios does this) GPL3 doesn't allow it.

Because their lawyers told them to?


I do wonder if iOS isn't the real answer, in particular to avoiding GPLv3 stuff.


It doesn't really matter. With Linux desktop improving and Microsoft 'WSL 2' Apple is rapidly losing it's relevance.


With the absolute garbage apple has released in the macbook range for the last few years its a surprise they have any relevance at all.


The OP gives a much more likely explanation. Check it out.


Because a lot of GPL'd software is best of breed and (contrary to other threads here) apparently integrates quite well. It says a lot about Apple's view of their customers (none of it good) that they'd rather distribute a badly broken proprietary SMB replacement for Samba than continue with Samba until a suitable replacement that meets with Apple's licensing desires could be found. GPL-licensed software helped get MacOS X to where it is; Apple has been a GPL licensee for most of MacOS X's existence (and still is for some programs).

And as for that tired slur about the GPL being a "viral license", Robert Chassell's essay (reproduced below) still applies. Software freedom is good for us all, and being treated with equal rights to run, share, and modify the program was apparently very useful to a lot of people (apparently including people at Apple).

From https://www.gnu.org/philosophy/vaccination.en.html

When others hurt me, I try to defend myself. But some tell me that this makes them sick. They tell me that I should permit people to rob me of my work. They tell me that I should never try to defend myself.

They tell me that I should stop using the GNU General Public License, a license that vaccinates me against hurt. Instead, I should adopt a license that permits other people to rob me with impunity. They want me to adopt a license that forbids me from fighting back. They want me to give up my right to benefit from a derivative of my own work, a right I possess under current copyright law.

Of course, the language is a little less feverish than this. Usually, I myself am not called “infectious”. Rather, the legal defense that I use is called “infectious”. The license I choose is called “viral”.

In every day language, words such as “infect” and “virus” describe disease. The rhetoric is metaphorical. A legal tool is not a disease organism; but it is popular to think of the law as an illness, so the metaphor has impact.

The people who want to rob me use language that says I make them sick when I stop them from robbing me. They do not want to draw attention to the so-called “disease” that makes them ill: my health and my rights, and the health and rights of other people. Instead, they choose metaphor to twist people's thinking. They do not want anyone to think that I am a good citizen for stopping crime. They want the metaphor to fool others into thinking that I am a disease agent.

The GNU General Public License protects me. The connotation of “virus” and “infect” is that my choice of defense gives an illness to those who want to rob me. I want freedom from their robbery; but they want the power to hurt me. They get sick when they cannot hurt me.

To use another health and illness-related metaphor, the GNU General Public License vaccinates me; it protects me from theft.

Note that the theft about which I am talking is entirely legal in some situations: if you license your work under a modified BSD license, or a similar license, then others may legally take your work, make fixes or improvements to it, and forbid you from using that code. I personally dislike this arrangement, but it exists.


GPL has long caused a problem for people who want to tightly integrate software - LLVM and Clang with Xcode for example - and reap the benefits. When GPL software has to be used taped to the end of a stick like GCC, it’s a constraint for their vision. Maybe someone who knows this better than I do will refute this point, but I don’t think that the code analysis tools and developer assistance in Xcode would be possible with GCC.


Beyond licensing, there are software design/architectural issues at play, ala:

Clang is designed as an API from its inception, allowing it to be reused by source analysis tools, refactoring, IDEs (etc) as well as for code generation. GCC is built as a monolithic static compiler, which makes it extremely difficult to use as an API and integrate into other tools. Further, its historic design and current policy makes it difficult to decouple the front-end from the rest of the compiler.

via https://clang.llvm.org/comparison.html, with more points for/against each option at that page.


You can see a bit of the gcc monolith and the llvm approach battle it out within the policy of what gets added to Emacs - https://lwn.net/Articles/632773/


Two ironies here:

1) clang and LLVM APIs are so unstable that tight integration effectively requires maintaining your own fork.

2) One of the original complaints about GCC was that Stallman stonewalled addition of a richer, stable plugin API. Fast forward to today, GCC plugins are now first-class and, AFAIU, the plugins API is more stable and dependable. OTOH, turns out people aren't using plugins as much as originally thought, though the Linux kernel infrastructure does.


Releasing all my code as AGPL is one small way in which I oppose the corporatization of the internet.


> Ship tmux with the control key rebound to ^A and probably nobody will care too much that you’ve removed screen

In case he hadn't noticed, OS X has Emacs keybindings by default and perverting tmux into vi-friendly Emacs-hostile screen defaults won't fly...


Note that in Catalina, the default shell changed from a very outdated GPLv2 version of Bash to Zsh.


The old bash still ships with Catalina.


I’d expect that change at some point in the near future.


Based on the banner you get when you use bash, yeah. They're pushing zsh really hard.


No emacs on iOS is thus a sad song that may be sung til the end of time.


I've never understood why Apple feared the GPLv3 so much. Other companies have shipped GPLv3 code for years and haven't suffered for it. What exactly does Apple think would go wrong if it started shipping a modern bash with macOS? Shipping a bundled GPLv3 program doesn't require that the whole system be free software.


The damning change for me was seeing CUPS (which they bought outright, mind you) go from GPL to Apache 2.


Apple develops the software; it can license the software however it likes.


They didn't for quite a long time. They've been anti-GNU for a long time. And they've pretty much supplied or funded all the tools needed to replace the GNU userland.


The current GPL3 is idealistic. It is politically motivated. We live in a capitalist world. That is the fact. No comment on the value of either. The fact is the companies are motivated by money. That is the way it works. GPL3 is scary from that point of view.


Perhaps Richard Stallman spending years bragging that he beat Steve Jobs that one time was a long-term mistake.




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

Search: