> 
> My understanding is that
> a) this creates a fork of PHP in the sense that a separate version has to be 
> maintained
> b) you assume the same core developers will be in charge of the what I call 
> "stable" and the "community" version of PHP
> 
> Is that correct?
> This makes me worried about the additional burden on the core maintainers.

Yes, this is mostly correct: however note that the maintenance burden of 
feature extensions will lay squarely on the feature maintainers/authors, listed 
in the designed document of merged community RFCs.

Developers outside of the feature maintainers should only need to touch feature 
extension code when introducing breaking changes to extension APIs, like is 
already the case now for extensions.

This is actually very close to the approach used by linux: drivers are owned 
and maintained each by their own maintainers: non-maintainers need to touch 
driver code only when authoring breaking changes to inner Linux APIs which 
affect drivers.

> as well as compatibility issues for package maintainers ("this library is 
> only guaranteed to work with php-community-yyyy1-mm1-dd1 to 
> php-community-yyyy2-mm2-dd2 but not the base php" or vice versa).

It is for precisely this reason that all feature extensions are versioned 
(possibly with multiple versions of a single extension shipping in a single 
php-community release), and full information about available versions is 
exposed through the PhpFeatures class, in a format matching Composer JSON 
repositories.

Package maintainers are expected to rely on specific versions of features 
(feature-performance:^2), not on specific releases of php-community.

I initially even considered not exposing the current php-community version at 
all to userland, exposing just the stable php version it is based on, but then 
decided against it as there is still a small amount of non-feature extension 
scaffolding code unique to php-community, which may have bugs, which may 
require versioning (i.e. a bug the PhpFeature class itself).

Thinking about it some more, PhpFeature and scaffolding code may itself be 
exposed as a versioned, always-enabled php-community feature extension, so now 
that I think about it, exposing the current php-community version is even more 
useless, but I’d still leave it exposed even if just for PR reasons.

> 
> Another thing I am a bit confused about is the inclusion of sandboxing as 
> part of this RFC: Is this really an integral part of the community version? 
> And while we're at it: As long as the community version allows for 
> PECL/PIE/whatever extensions then the sandboxing could be broken by those 
> extensions, so this can lead to a false sense of security / needs auditing of 
> all extensions included in a version. That's why I'm wary of including it as 
> a secondary feature, it feels a bit tacked on to me for a security topic.
> 

Sandboxing is expected to cover only features offered by mainline PHP, 
php-community and all extensions and feature extensions shipping with PHP and 
php-community, not normal extensions installed separately (though normal 
extensions may choose to opt-in and respect sandboxing levels as well, if they 
wish).

Sandboxing is indeed somewhat a separate matter from php-community, and can in 
fact be fully defined by a separate (community or normal) RFC. However, it is 
absolutely mandatory for the implementation of the main goal of php-community: 
fast adoption of new features by the entire PHP community, especially shared 
hosts, which require sandboxing by definition, and cannot be expected to look 
through the list of changes in all feature extensions bundled in all of the 
monthly releases of php-community.

In fact, IMO one of the reasons why shared hosts often lag behind PHP versions 
is the (small, but non-negligible) cost of searching and patching sandbox 
escape hatches introduced by new PHP versions, so sandboxing, if merged in 
mainline PHP, may also speed up adoption of even normal PHP upgrades.

Regards,
Daniil Gentili.

Reply via email to