Re: Adding a donate link to the PHP website
| From: | Ben Ramsey | Date: | Fri, 01 Dec 2023 00:04:20 +0000 |
| Subject: | Re: Adding a donate link to the PHP website | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-121885@lists.php.net to get a copy of this message | ||
> On Nov 30, 2023, at 02:45, Andreas Heigl <andreas@heigl.org> wrote:
>
> On 30.11.23 09:39, James Titcumb wrote:
>> On Thu, 30 Nov 2023 at 07:28, Andreas Heigl <andreas@heigl.org
>> <mailto:andreas@heigl.org>> wrote:
> [...snip...]
>> I suppose that is actually nothing that an RFC can do as I imagine that
>> everyone from the PHP Group needs to support this and even an RFC
>> wouldn't legally be able to change anything in regards to that.
>> Surely, everyone who has contributed (i.e. has voting karma) has the opportunity to vote,
>> and therefore, if they choose not to vote, that is surely their choice. I don't know the ins
>> and outs of it, but I'd have thought an RFC, well advertised, with plenty of time to ensure as
>> many people can vote who have rights to.
>
> What I meant by that is that the members of "The PHP Group" are currently the
> copyright holders. From a legal point of view no RFC can change that. The only way to change that
> would be for the PHP Group to transfer their copyright to someone else. What an RFC *can* do though
> is *propose* that the PHP Group transfers their copyright to the PHP Foundation.
>
> Though I'm lo lawyer, so ¯\_(ツ)_/¯
I have spoken at length with a lawyer about this, and the TL;DR version is that every contributor
owns the copyright on their specific contributions, if the contributions are copyrightable. Some
contributions (typo fixes, white space changes, etc.) aren’t copyrightable, but anything more
significant that is the contributor’s own work belongs to them.
In other words, even though the license statement says the copyright belongs to The PHP Group[^1] or
Zend Technologies Ltd.[^2], technically, these copyrights only apply to the specific code
contributed by these organizations or contributed by people for these organizations (through
work-for-hire or by legally transferring the copyright to them).
Contributing to an open source project is NOT an implicit transfer of your copyright to the project.
To do this, every contributor needs to sign a CLA that specifies they are transferring their
copyright to The PHP Group.
What is implied, however—and I’m told this is how most courts in the US and outside would view
it—is assignment of license. When someone contributes to an open source project, they own the
copyright on their contributions, but unless they specify a different license that covers their
contributions, it’s implied that they are granting use of their contributions under the same
license as the project. In this way, the contributor can’t later demand to have their copyrighted
code removed; it’s under the terms of the same license, which can't be revoked.
Once a copyright statement is placed on a source file, there’s a bunch of legal reasons why you
cannot change or remove that copyright statement. In general, you should keep all copyright
statements added to a source file and never change one that already exists on a source file. Just
look at the file header on any WebKit[^3] source file. WebKit even specifies that you add a
copyright notice to each file where you make “significant” changes.[^4]
With this in mind, it would be more proper to update the general copyright notice to something like
this:
Copyright (c) 2023 and later, The PHP Foundation and contributors. All rights reserved.
Copyright (c) 1999-2023, The PHP Group and contributors. All rights reserved.
Since no reassignment of copyright is taking place, we don’t run into any major legal issues, and
this tells a true and accurate story. The PHP Group were stewards of the project until 2023, at
which point the community recognized The PHP Foundation as the new stewards of the project, and
through all of this time (since 1999), the various copyrights have been owned by their respective
owners (i.e., contributors).
If you look at the file headers on ICU source code, you can see that Unicode, Inc. made a similar
change in 2016.[^5]
All this said… I am in favor of making this change.
I also have a lot more to say on this, as I’ve been considering opening up an RFC on just this
topic. I had intended to reach out to Zend first (through Matthew Weier O’Phinney), but I
haven’t done that yet, so this is the first time anyone from Zend has seen these ideas. My
apologies. :-)
The PHP source code is interesting in that it is covered by two licenses: the PHP License[^6] and
the Zend Engine License.[^7] This is an historical artifact of the early days of PHP when it was
conceivable that other companies might develop their own engines for PHP, but we know how this story
ends: for all intents and purposes, the Zend Engine is PHP and PHP is the Zend Engine. Yes, I’m
aware of alternatives (with very limited adoption), and no, they don’t matter for this discussion.
Both the PHP License and Zend Engine License are based on the BSD 4-clause “Original”
license,[^8] and as a result, neither are compatible with the GPL.[^9][^10] In fact, the Zend Engine
License isn’t an OSI Approved License, while the PHP License is,[^11] and this can cause problems,
especially with companies that require SBOMs listing the licenses of all third-party software used
and these licenses must be OSI Approved. I’m not sure why no one has raised this as an issue yet,
and I’ve been quiet about it (until now) to avoid it becoming an issue.
The BSD 4-clause license is the one that includes the “obnoxious” (in the words of the FSF)
advertising clause, and the Zend license includes this. Both the PHP and Zend licenses include a
statement that says The PHP Group and Zend Technologies Ltd. have the exclusive right to publish
revised versions of the license, and both state that redistributions must include a specific “this
product includes…” statement. The PHP License also includes the restrictions against using the
name “PHP” in the name of any derivatives. If all of these statements are removed, the licenses
become identical to the BSD 3-clause license.
So, a few points about this:
* In general, when changing a project’s license, you need every contributor to approve of the
changes because they own the copyrights on their contributions and the license terms of their
copyrighted contributions are changing.
* The PHP and Zend licenses are essentially the BSD 3-clause license with additional stuff.
* The additional stuff isn’t related to any rights a contributor (i.e., copyright holder), other
than The PHP Group and Zend, would have on the source code.
* The PHP Group has already specified it has the right to modify its license.
* Zend has already specified it has the right to modify its license.
* The additional stuff is largely unimportant and unenforceable.
* If both licenses are modified to change them to the BSD 3-clause license, this does not change any
of the terms the contributors (i.e., the copyright holders) have granted to users, so we don’t
need explicit approval from all contributors (though an advance notice of several months to allow
comments on the changes is a nice gesture).
Obviously, IANAL, but I’ve spoken with Pamela Chestek about these changes. She is a member of the
Board and Chair of the License Committee for the Open Source Initiative, though I must make it clear
(for legal reasons) that she was not acting in an official capacity of her role with the OSI when we
spoke.
MY PROPOSAL:
1. Retire the PHP License and Zend Engine License.
2. Drop the Zend/LICENSE file and replace the text of the LICENSE file with the exact text of the
BSD 3-clause license.
3. Replace the copyright notice in the file headers and LICENSE with the following:
Copyright (c) 2023 and later, The PHP Foundation and contributors.
Copyright (c) 1999-2023, The PHP Group and contributors.
Copyright (c) 1999-2023, Zend Technologies USA, Inc. ("Zend”),
a subsidiary of Perforce Software, Inc.
Here is an example diff of the proposed changes to the LICENSE file: https://gist.github.com/ramsey/96026cda9da33cb95e49357dc074cdb5
We would allow contributors (i.e., copyright holders) at least 3 months to make comments on the
proposal, after which their approval is implied.
An ALTERNATE PROPOSAL, if others feel strongly about keeping the “additional stuff” in the
LICENSE:
1. Retire the Zend Engine License, effectively folding it into the PHP License.
2. Make some light edits to the PHP License to bring it to parity with the exact text of the BSD
3-clause license, while keeping the aforementioned “additional stuff.”
3. Replace the copyright notice in the file headers and LICENSE, as noted above.
4. Bump the PHP License version number to 3.2.
Here is an example diff of the alternate proposed changes to the LICENSE file: https://gist.github.com/ramsey/b6bd0339a027b182f91133d912515d44
Again, we would allow contributors (i.e., copyright holders) at least 3 months to make comments on
the proposal, after which their approval is implied.
It’s important to note that The PHP Group (or PHP Association) did exist at one time as a formal
business entity in the US,[^12] and Zend drafted a formal agreement with the PHP Association for its
use of the Zend Engine.[^13] So, there is some precedence here for members of The PHP Group to step
forward and “bless” or approve of this proposal. Additionally, it’s important for Zend to also
“bless” or approve of this.
So, this is a lot for a message in a thread about adding a donation link to the PHP website, but if
others are interested, I can take this into a new thread and work on a separate RFC, or perhaps we
use the same RFC for both and use it as an opportunity to formalize the project’s relationship
with The PHP Foundation, as the successor to The PHP Group.
Cheers,
Ben
[^1]: https://github.com/php/php-src/blob/master/LICENSE
[^2]: https://github.com/php/php-src/blob/master/Zend/LICENSE
[^3]: https://github.com/WebKit/WebKit/blob/main/Source/JavaScriptCore/runtime/IntlObject.cpp
[^4]: https://webkit.org/contributing-code/#develop-your-changes
[^5]: https://github.com/unicode-org/icu/blob/8d3d214ad7f76b7d0650f19a871a0e7d58a5986f/icu4c/source/i18n/msgfmt.cpp
[^6]: https://github.com/php/php-src/blob/4d51d588b90737016afb69e99432b2d0969b3723/LICENSE
[^7]: https://github.com/php/php-src/blob/4d51d588b90737016afb69e99432b2d0969b3723/Zend/LICENSE
[^8]: https://spdx.org/licenses/BSD-4-Clause.html
[^9]: https://www.gnu.org/licenses/license-list.html#OriginalBSD
[^10]: https://www.gnu.org/licenses/bsd.html
[^11]: https://opensource.org/license/php-3-01/
[^12]: https://1drv.ms/f/s!AoV7OZl7wKt-hcBhtk2mnkJOJWYk8Q
[^13]: https://www.php.net/license/ZendGrant/