> 
> 
>> 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.

Reply via email to