Hacker News new | ask | show | jobs
by m463 905 days ago
hmmm I suspect this is because it is GPLv2 which doesn't require the freedom to RUN the program (which apple doesn't give you)

apple seems to ship software with gplv2 (old bash, etc) but no GPLv3 software.

...even though they are technically in violation of the GPL by modifying and shipping bash binaries without full source - it is missing rootless.h (not the X11 file)

4 comments

> GPLv2 which doesn't require the freedom to RUN the program

It does. This is the first freedom of free software. I'm not sure the issues with distributing GPL software on the App store are specific to the GPLv3. I don't fully understand things on this, but [1] seems to be a good entry point.

> apple seems to ship software with gplv2 (old bash, etc) but no GPLv3 software.

This is an Apple policy / a choice that they make. They could decide to distribute GPLv3 software with Mac legally, but chose not to.

> by modifying and shipping bash binaries without full source - it is missing rootless.h (not the X11 file)

I would be interested in knowing more about this. I'm surprised they've not been already sued if they violate bash's license.

[1] https://opensource.stackexchange.com/questions/9500/is-apple...

> It does. This is the first freedom of free software.

I don't think so:

The Free Software Foundation explicitly forbade tivoization in version 3 of the GNU General Public License.

https://en.wikipedia.org/wiki/Tivoization

I think this is one of the reasons GPLv3 came along.

Forbidding tivoization does not forbid running the program, it forbids embedding the program in some piece of hardware and then not providing a means for the end user to run their own modified version on this same hardware. If a TV is to use some GPLv3 program, then it must allow the user to replace the program with their own version.

And yes, tivoization is a major reason why GPLv3 was written indeed, it was seen as a loophole to fix by the FSF.

But what about apple restricting you from running a binary? If you don't have an apple id, you can't run apps? And you cannot redistribute the binary to someone else, since it won't run.
I agree with you on this, I guess I was bothered by the phrasing.
From what I remember, GPLv3 is simply a clarification of GPLv2, the intent was always the same for all the purposes. But how lawyers see it could be another matter.
That isn't necessarily what some contributors of software under GPL version 2 thought.

---

Linus Torvalds says GPL v3 violates everything that GPLv2 stood for - https://youtu.be/PaKIZ7gJlRU

The start of the video:

Q: do you agree that you undermine GPL version 3 and how can I get you to stop

Linus: what

Q: how can we get you to stop

Linus: oh I hate GPL version 3 undermined it on purpose I actually thought the GPL version 3 extensions were horrible. I understand why people would want to do them but I think it should have been a completely new license. My argument for liking version 2 - and I still think version 2 is a great license - was that I give you source code you give me your changes back we're even. Right - that's that's my take on GPL version 2 it's that simple and version 3 extended that in ways that I personally am really uncomfortable with; namely I give you source code that means that if you use that source code you can't use it on your device unless you follow my rules and to me that's that's a violation of everything version 2 stood for ...

Funny because RMS has said you can USE the software for any purpose. It's just that when you redistribute it you have to pass on the rights you received along.
Sued by whom? The bash people seem like they have better things to do than sue Apple.

    shagie@Mac-Pro ~ % bash --version
    GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin23)
    Copyright (C) 2007 Free Software Foundation, Inc.
I will note that is an interesting date as version 3 of the GPL was released on 29 June 2007 -- https://www.gnu.org/licenses/gpl-3.0.html

https://ftp.gnu.org/gnu/bash/ has version 3.2.57.

Opening up the 'COPYING' file from that distribution:

          GNU GENERAL PUBLIC LICENSE
             Version 2, June 1991
    
     Copyright (C) 1989, 1991 Free Software Foundation, Inc.
         59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.
Apple is scrupulous at ensuring that they only distribute GPL Version 2 software, if at all (they've made efforts to switch to using BSD licensed software wherever possible).

There's no reason for bash people or FSF to sue Apple as they are strictly following the license.

Apple’s violation of GPL has nothing to do with which version they’re using and everything to do with failing to provide source code promptly that matches the OS they’re shipping.
The source for the version that Apple ships is at https://opensource.apple.com/source/bash/bash-123.40.1/
The source for something that resembles something Apple ships is at that link, sure.
Nope; see the conversation above for why not.
The Free Software Foundation.

Bash is part of the GNU project. As a consequence, I believe contributors assign their copyright to the FSF. I downloaded a random release of bash 3 (3.0.16) and opened a random C file from it and it is indeed "Copyright (C) 1993-2004 Free Software Foundation, Inc."

I appreciate that individual developers might not have the time & energy to engage in a lawsuit against Apple, but the FSF is bigger, and has all the incentive to be firm with the terms of the GPL licenses for the licenses to look strong. Developers can also certainly request help from the Software Freedom Conservancy [1] or the Software Freedom Law Center [2] (which has helped BusyBox win several lawsuits) for this kind of stuff. Apparently the SFLC has helped the FSF in the past, against Cisco, if I'm to believe [2].

[1] https://sfconservancy.org/

[2] https://en.wikipedia.org/wiki/Software_Freedom_Law_Center

GPLv3’s anti-Tivoization clause specifically targets software bundled with a device, which this is not. There’s plenty of GPLv3 software distributed by its developers on the App Store and nothing in the text of the GPL forbids distribution in a proprietary marketplace.
hmmm. I thought that software loaded on an apple device is DRM'd, meaning it cannot be installed or run without an apple id (basically you must ask apple permission to run the program).

GPLv2 didn't prevent this, but I thought GPLv3 conferred additional rights to the user.

I remember RMS saying, "I realized I had to explicitly say the freedom to RUN the program" I believe about revising GPLv2 to GPLv3

In that case, I wonder why Google is so highly allergic to GPLv3 in its GCP marketplace.
Is it GPLv3 or AGPL?

Their reasons (their excuses? At this point I'm not convinced at all) to ban AGPL are documented at [1].

[1] https://opensource.google/documentation/reference/using/agpl...

What doesn't make sense? They don't want AGPL code to accidentally end up anywhere that's publicly accessible, and a lot of the code in their monolith is used across many different products, so a blanket ban seems entirely reasonable.

What motivation do you think they have to lie about this?

Not speaking about code, they ban use of AGPL software. This does not make sense to me.

Software you use does not magically [1] end up in your code base, or you are doing something horribly wrong, I can't even begin to imagine how. Like, "Whoops, I downloaded and executed this AGPL-licensed binary, and now this Google process running on my laptop (or phone!) has automatically fetched its source code and put it to prod and linked it to our software, and now oh no, all our code are belong to GNU!". This is ridiculous. This is some massive, solid bullshit we have here.

You can use AGPL software for any purpose within the law, no strings attached. You never need to touch the code, and if you do, you never need to link your product to it. It does not take a lawyer to understand this simple concept. Proprietary software have more restrictions than that, you'd better not have third party proprietary code ending up in your product, although it's not banned at Google. I hope they do check license compliance on their code base anyway, there are automatic scanners for this. So the chances of some AGPL code ending in their repositories seem vanishingly small.

As for why Google would be dishonest, of course we have no proof and we can't know for sure AFAIK. By default I side with Drew DeVault [2], to me this is anti-AGPL propaganda and their goal is to discourage people from licensing their software under AGPL so they have a bigger pool of open source projects they can potentially reuse without having to contribute back, and it works because now people are afraid to license their stuff under AGPL because "businesses" "often" have an AGPL ban. I know of exactly two companies banning AGPL: Google and Apple. Apple already did that with GPLv3 (AGPLv3 being GPLv3 + a clause). Again, does please the big company (and come on, outdated bash and GNU tools on Mac does not make any kind of sense, the GPL never restricted stuff at the process level interface). I'm sure there are smaller businesses thinking that if Google and Apple ban those licenses, they must be bad and they should do too to be safe, while not having a business model where it even makes sense, playing Google and Apple's game.

If I'm to license software under AGPL, I'm giving Google the right to use this software. That they don't want to use it is their loss. They are doing this to themselves.

[1] https://en.wikipedia.org/wiki/Magical_thinking

[2] https://drewdevault.com/2020/07/27/Anti-AGPL-propaganda.html

> they want to discourage people from using the AGPL, because they cannot productize such software effectively [...]

> By discouraging the use of AGPL in the broader community, Google hopes to create a larger set of free- and open-source software that they can take for their own needs without any obligations to upstream

> ...even though they are technically in violation of the GPL by modifying and shipping bash binaries without full source - it is missing rootless.h (not the X11 file)

They're not.

They've covered this in two main ways:

1) By listing all their source code on https://opensource.apple.com/ (which links to their GitHub with all the source code)

2) By offering a complete machine-readable copy of the source code upon request as per GPLv2 (3)(b). This offer is made both in the license agreement[0] you agree to when booting up your Mac for the first time, updating it, etc., as well as in an Acknowledgements.rtf[1] file that is located on your drive at multiple locations (e.g., /Library/Documentation) and linked to from within certain apps (e.g., about section, acknowledgment section under Help, EULA agreement prompt, etc.).

That covers the bash part. rootless.h isn't part of bash and is part of libSystem.dylib, so that would fall under the OS exception in GPLv2[2]:

> However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

That said, it probably won't be long before they stop shipping bash altogether, they've already switched to Zsh a while ago and seem to have moved to a "bring your own tool" philosophy for anything they don't support by default (see Python removal and future Ruby and Perl removal notice).

0: https://www.apple.com/legal/sla/docs/macOSSonoma.pdf (see §15)

1: https://opensource.apple.com/source/files/files-553/Library/...

2: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html

It's been a hot minute since I had to dig into the code Apple publishes for anything and since then they seem to have moved it all to Github. I don't have my mac handy to try building it, but I don't see any references to a rootless.h in the code they're publishing. I'm curious to know a bit more about what's missing.
That would be perfectly legal under the GPL, right?

It doesn't say you're not allowed to modify the code, just that you have to distribute the modified code in its entirety. If what Apple is distributing is sufficient to build (their version of) bash, it's perfectly fine.

If the code is what Apple used to build what they're distributing, then yes this is valid. (For this case at least, they have a tendency of doing this a lot and I suspect the change to bash was made just to address this specific complaint while missing every other place they strip out code.)
I tried to rebuild bash a while back on macos and couldn't do it because the source code was not available for rootless.h. I guess someones complaint finally got some action from apple.

I remember doing macos kernel debugging (in the non-gpl code apple distributes) and it was pretty evident that the code they distribute like xnu is NOT the code that is in the OS. Stack traces had lots of functions apple keeps to itself. Looking in the distributed code shows suspicious blank lines where automated tools must remove apple-only source.

Yes, XNU is missing a lot of stuff. But it's not (L)GPL, so it's not really required for them to provide that code.