Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:121885 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 24823 invoked from network); 1 Dec 2023 00:04:35 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 1 Dec 2023 00:04:35 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id D6940180043 for ; Thu, 30 Nov 2023 16:04:43 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,URIBL_SBL_A autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: No X-Envelope-From: Received: from mail-yw1-f180.google.com (mail-yw1-f180.google.com [209.85.128.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Thu, 30 Nov 2023 16:04:43 -0800 (PST) Received: by mail-yw1-f180.google.com with SMTP id 00721157ae682-5b383b4184fso17506297b3.1 for ; Thu, 30 Nov 2023 16:04:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=benramsey.com; s=google; t=1701389073; x=1701993873; darn=lists.php.net; h=message-id:in-reply-to:to:references:date:subject:mime-version :content-transfer-encoding:from:from:to:cc:subject:date:message-id :reply-to; bh=9qfgUPirus3ZJU7JyG6d+MDv52k8mFYobcmKe5zDFxQ=; b=N6O3XHPoj7pOxCovye+mgzthugiFSuukBGKr1wjW0/51CVHzjVJAk5bDzIIkvPueKl n53Oqk15UOQ2CPXgJdVZcZ+C9Do324bi/m169Uz9eNBzxFtEo3qyjyAcvaNToOI61lWU y3SpLpKjaz9rJgmngyTiqzT9Hh7g/WGP7OrTzK0iMlglN3IrygbyP3Hi40mtppQUjT04 PZjxkmsck84b6NkbYb+gFzCh+olpGjJ89iE8QkfCypfiP5dBLIq6oqKP2RsCgtCMWeXO QvAaw6VlGmAuJGsCrnyxOLnav7oShy6X6Ax6SQpkYapHVOUkslslkbCy7RJHokHfYBVc yhag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701389073; x=1701993873; h=message-id:in-reply-to:to:references:date:subject:mime-version :content-transfer-encoding:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9qfgUPirus3ZJU7JyG6d+MDv52k8mFYobcmKe5zDFxQ=; b=v3RP2yM4/N8/pZfL9L9+HUu1HXgUmbwcLhYJIBXgIBV5dPpE2mFAQVKntSpMgrNr3+ DVDJBzuJicLSJnJ3Hl4ZI2QmGulUF8k6qsT6jKDP1R41jGzIptIUt2xotlvdmUztDQu2 pqt2+MB+WZNE/r8YnkwQ8uoi1fivkzIQ3sGRviEXy/Q8+3t9cDfkLVD5jDLnfmX7w6v5 E2H+aiMRu9ftWpHcKlNN+MHFxJ0PEP6qiOQoBl9jjiNMGNKV2YD2zCpII9/QcjdH0Cq+ 8AbWg7n53YiyeJnvq4jD9oHwOfwrt0LBOTyYxGY+AbKOgy+h1tZwJuItkR/JyTmRGZwl xeqQ== X-Gm-Message-State: AOJu0YzuHBDeRSiwWmmZkFaltqajCoq3wpSzNnlE4tfdaR4D/ruRoT6d h24vYl00jvH05yi6GQlTv8cdc1TpS1hXLbDXUbNOhw== X-Google-Smtp-Source: AGHT+IF5xLdMoQ7fhdKe70T0Kkg7NqlOWjnoZgi88Nm8UoEAFi9Z8q/1H/hMZ2rfM66I/pa4EUpzXw== X-Received: by 2002:a0d:c2c1:0:b0:5a8:960d:9aef with SMTP id e184-20020a0dc2c1000000b005a8960d9aefmr26720015ywd.49.1701389072482; Thu, 30 Nov 2023 16:04:32 -0800 (PST) Received: from smtpclient.apple (h96-61-171-157.lvrgtn.broadband.dynamic.tds.net. [96.61.171.157]) by smtp.gmail.com with ESMTPSA id v127-20020a818585000000b005869fd2b5bcsm698647ywf.127.2023.11.30.16.04.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Nov 2023 16:04:31 -0800 (PST) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.200.91.1.1\)) Date: Thu, 30 Nov 2023 18:04:20 -0600 References: <8e77ac89-b8dd-4991-b859-943d34592f5d@app.fastmail.com> <06261716-9557-4944-8bad-14cd77cfbbb0@heigl.org> To: PHP Developers Mailing List In-Reply-To: <06261716-9557-4944-8bad-14cd77cfbbb0@heigl.org> Message-ID: X-Mailer: Apple Mail (2.3774.200.91.1.1) Subject: Re: [PHP-DEV] Adding a donate link to the PHP website From: ben@benramsey.com (Ben Ramsey) > On Nov 30, 2023, at 02:45, Andreas Heigl wrote: >=20 > On 30.11.23 09:39, James Titcumb wrote: >> On Thu, 30 Nov 2023 at 07:28, Andreas Heigl > 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. >=20 > What I meant by that is that the members of "The PHP Group" are = currently the copyright holders. =46rom 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. >=20 > Though I'm lo lawyer, so =C2=AF\_(=E3=83=84)_/=C2=AF 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=E2=80=99t = copyrightable, but anything more significant that is the contributor=E2=80= =99s 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=E2=80=94and I=E2=80=99m told this is how most = courts in the US and outside would view it=E2=80=94is 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=E2=80=99s implied = that they are granting use of their contributions under the same license = as the project. In this way, the contributor can=E2=80=99t later demand = to have their copyrighted code removed; it=E2=80=99s under the terms of = the same license, which can't be revoked. Once a copyright statement is placed on a source file, there=E2=80=99s 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 = =E2=80=9Csignificant=E2=80=9D 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=E2=80=99t 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=E2=80=A6 I am in favor of making this change. I also have a lot more to say on this, as I=E2=80=99ve been considering = opening up an RFC on just this topic. I had intended to reach out to = Zend first (through Matthew Weier O=E2=80=99Phinney), but I haven=E2=80=99= 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=E2=80=99m aware of = alternatives (with very limited adoption), and no, they don=E2=80=99t = matter for this discussion. Both the PHP License and Zend Engine License are based on the BSD = 4-clause =E2=80=9COriginal=E2=80=9D license,[^8] and as a result, = neither are compatible with the GPL.[^9][^10] In fact, the Zend Engine = License isn=E2=80=99t 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=E2=80=99m not sure why no one has = raised this as an issue yet, and I=E2=80=99ve been quiet about it (until = now) to avoid it becoming an issue. The BSD 4-clause license is the one that includes the =E2=80=9Cobnoxious=E2= =80=9D (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 =E2=80=9Cthis product = includes=E2=80=A6=E2=80=9D statement. The PHP License also includes the = restrictions against using the name =E2=80=9CPHP=E2=80=9D 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=E2=80=99s 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=E2=80=99t 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=E2=80=99t 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=E2=80=99ve 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.=20 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=E2=80=9D),= 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 = =E2=80=9Cadditional stuff=E2=80=9D 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 =E2=80=9Cadditional stuff.=E2=80=9D 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=20 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=E2=80=99s 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 =E2=80=9Cbless=E2=80=9D or approve of = this proposal. Additionally, it=E2=80=99s important for Zend to also = =E2=80=9Cbless=E2=80=9D 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=E2=80=99s = 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=20 [^3]: = https://github.com/WebKit/WebKit/blob/main/Source/JavaScriptCore/runtime/I= ntlObject.cpp [^4]: https://webkit.org/contributing-code/#develop-your-changes [^5]: = https://github.com/unicode-org/icu/blob/8d3d214ad7f76b7d0650f19a871a0e7d58= a5986f/icu4c/source/i18n/msgfmt.cpp [^6]: = https://github.com/php/php-src/blob/4d51d588b90737016afb69e99432b2d0969b37= 23/LICENSE [^7]: = https://github.com/php/php-src/blob/4d51d588b90737016afb69e99432b2d0969b37= 23/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/