Re: [RFC] php-community: a faster-moving, community-driven PHP.

From: Date: Sun, 15 Mar 2026 12:20:22 +0000
Subject: Re: [RFC] php-community: a faster-moving, community-driven PHP.
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-130330@lists.php.net to get a copy of this message
> > >> For the first time, official binaries and packages will be provided for all major Linux >> distros for php-community releases on php.net > > Who is going to create and maintain these packages? Who decides which distros, which versions, > etc? Like sandboxing, this could fill an RFC on its own. > Initially me as the author of the RFC, then php-src maintainers. Splitting up this RFC into sub-RFCs is not an issue to me, but I would prefer to get a general positive consensus before spending more time on actual implementation. > >> Multiple versions of the same feature may be offered at the same time in a single >> php-community release > > How will this work, code-wise? Are these versions actually separate implementations side by > side, or limited to changes that can be represented with feature flags? > > What is the minimum lifetime and lifecycle of these versions? Can a version be retired early if > it has an unsolvable stability or security issue? > Clarified that this was mainly meant for removal/deprecation feature extensions. The exact lifecycle is explicitly not defined to allow for more flexibility, but it can have emergency yanks for security issues, just like for all extensions. > >> internals members through GitHub 👍 = Accept, 👎 = Reject, 👀 = Abstain reactions on >> the issue using their GitHub accounts, > > I don't think we have any suitable definition of "internals members" that can > apply here. Do you mean people with commit access to the php-src repo? Or are you hoping to > cross-check GitHub users against main.php.net accounts (as used by the current voting widget) > somehow? > By internals members I mean users with current voting rights, who will provide their GitHub nicknames. > >> A feature is eligible for removal only if both of the following conditions are met: >> - It has no active maintainer listed in the accepted community RFC design document. >> - Adoption is negligible, as evidenced by Packagist statistics. > > This feels incompatible with the rest of the process. If features are easy to propose, release, > and iterate, it should be just as easy to mark them abandoned or obsolete. Otherwise, an interesting > but flawed feature has to be maintained forever even if its author loses interest - and who is going > to do that maintenance? > > If the intention of these features is to be experimental, perhaps every feature version could > have a fixed lifetime. Users know that they can't rely on it long-term, but if it's > popular it will hopefully make it into a stable release of PHP. > The point here is that users MUST be able to rely on feature extensions, including in the long-term: this is the reason for the stringent removal requirements. > >> php-community will always be based on the latest stable PHP release > > Who will be responsible for merging changes made to "feature extensions" back to > master, and stabilising the first community release after a new stable release? > > The feature owners handle all changes to feature extensions. Normal PHP RMs handle merging stable PHP into the community branch. >> Community releases are “handled” by the same release managers of the latest stable PHP >> release, however the release process will be significantly automated, compared to the current manual >> release process > > Is there something that makes this automation easier for community releases than regular ones? > Or is automaton of the existing process something that needs to be done before we can consider this > RFC? > It can be applied to regular ones as well, but it was added mainly to work around the fact that normal PHP already has third-party distro packaging, while php-community will not, unless it is provided from the start by php.net <http://php.net/> directly. > >> Wait for the CI status of the new branch to become green > > If there are failing tests in a particular feature when it's time to tag a community > release, what happens? Does the release get delayed until the maintainer of that feature fixes it? > Feature maintainers cannot merge a failing PR, just like with all other php-src PRs. > >> php-community will live on a new community branch of php-src > > Who will be responsible for the stability of this branch? This is really important, because > you're targeting this concept at shared hosts, who want to know the software they're > running is stable and secure. > The feature authors, backed by the judgement of internals members and php-src maintainers. > Why will somebody trust this branch containing a bunch of separately-maintained feature > extensions any more than they would trust a repository of PIE extensions? If anything, it is far > *more* dangerous, because the features aren't limited to the normal extension API. Sandboxing plays the single most important rule in building trust. >> Note: the first community RFC may indeed be the one regarding the choice of appropriate >> sandbox keys. > > By definition, the sandbox mechanism needs to exist outside of the feature extension system, > and be stable across community versions. As others have said, it's basically independent of > this proposal, and should be its own RFC following the normal process. > Yes, absolutely. > > In other replies on this thread you've emphasised the role of feature maintainers, but the > RFC doesn't go into much detail about how that role will work. Will it be like maintaining a > PIE extension, committing code directly, but in a directory of php-src? Or are other members of the > community expected to review their code and merge it? > Clarified now, mainly it’s like maintaining a PIE extension committing code directly to php-src, with *some* supervision from php-src maintainers (mainly just a basic qualitychecks), crucially little impact on the actual API and design (which is the main way to reduce load on php-src maintainers). > > I think this RFC is trying to do two conflicting things at once: > > 1) allow users to test far-reaching, experimental, changes to the language and engine > 2) allow users to enable safe, stable, features without installing untrusted binaries > These are not conflicting things, they complement each other. > For problem 1, what we need is a way to get usable builds into the hands of users from > experimental branches of the source. If CI tooling and release packaging can be automated enough, > there's no reason to limit it to just one "community" branch. > Actually, the second php-community distro could theoretically be skipped altogether, shipping PhpFeatures into normal PHP, which would likely increase adoption even more. > For problem 2, we need stronger guarantees of stability, not weaker ones: better sandboxing so > people trust extensions more, perhaps; or more feature flags within the existing release cycle. Sandboxing is expected to cover this. > > Regards, Daniil Gentili.

« previous php.internals (#130330) next »