rfc:unbundle_imap_pspell_oci8

PHP RFC: Unbundle ext/imap, ext/pspell, ext/oci8, and ext/PDO_OCI

Introduction

PHP currently bundles the ext/imap, ext/pspell, ext/oci8, and ext/PDO_OCI extensions, which all suffer from issues with external dependencies.

Proposal

The proposal is to unbundle them: remove them from the PHP source distribution, move them to PECL, and create an initial release for them.

As unbundled extensions are not maintained by the PHP Core team, that would mean that, unless maintainers step up to maintain these extensions, they will stop being compatible with future versions of PHP.

ext/imap

The library that provides the functionality in this extension, c-client, is no longer updated. The last release from 2007 is no longer available on the original distributor's (University of Washington) website, but there is an unofficial GitHub repository that hasn't been updated for 5 years either (https://github.com/uw-imap/imap).

You can't also use this any more with G Suite due to authentication changes (https://github.com/uw-imap/imap/issues/4).

There are several user-land packages that are still maintained, and provide superior functionality:

ext/pspell

The original underlying library hasn't been updated since 2001 (https://en.wikipedia.org/wiki/Pspell) and it's replacement, aspell not since 2019 (https://ftp.gnu.org/gnu/aspell/).

There are other replacements, ispell, and hunspell, but they don't seem to be compatible API-wise.

The PECL extension “enchant” was bundled with PHP 5.3 (https://github.com/php/php-src/tree/master/ext/enchant), and uses the updated enchant2 library (https://github.com/AbiWord/enchant). The “enchant” extension still supports version 1 of the enchant library, which probably should be removed through a different process.

Again, there are several user land composer packages (https://packagist.org/?query=spell) that can be used instead.

ext/oci8 and ext/PDO_OCI

Requires a proprietary library from large commercial enterprise (https://www.oracle.com/database/technologies/instant-client.html) and has many outstanding bugs:

Most of the recent changes were all to skip tests.

The ext/oci8 extension is also one of the larger extensions left, that has not had its resource type converted to objects. This is a major effort, and probably something that should be done by the corporate sponsor of the Oracle extensions.

Backward Incompatible Changes

The functionality offered by the imap, pspell, and/or oci8 extension(s) will no longer be available without installing the extension from PECL.

Proposed PHP Version(s)

PHP 8.4

Voting

A simple yes/no vote for each extension about whether to unbundle it. Unbundling requires a 2/3 majority.

Voting started on November 1st, 2023, and will run for two weeks until November 15th, 24:00 GMT.

Unbundle ext/imap
Real name Yes No
alcaeus (alcaeus)  
ashnazg (ashnazg)  
beberlei (beberlei)  
brzuchal (brzuchal)  
crell (crell)  
cschneid (cschneid)  
derick (derick)  
devnexen (devnexen)  
dharman (dharman)  
felipe (felipe)  
geekcom (geekcom)  
girgias (girgias)  
heiglandreas (heiglandreas)  
jhdxr (jhdxr)  
kalle (kalle)  
kguest (kguest)  
kocsismate (kocsismate)  
mbeccati (mbeccati)  
ocramius (ocramius)  
petk (petk)  
ramsey (ramsey)  
remi (remi)  
sebastian (sebastian)  
sergey (sergey)  
theodorejb (theodorejb)  
tstarling (tstarling)  
xatenev (xatenev)  
Final result: 27 0
This poll has been closed.

Unbundle ext/pspell
Real name Yes No
alcaeus (alcaeus)  
ashnazg (ashnazg)  
beberlei (beberlei)  
brzuchal (brzuchal)  
crell (crell)  
cschneid (cschneid)  
derick (derick)  
devnexen (devnexen)  
dharman (dharman)  
felipe (felipe)  
geekcom (geekcom)  
girgias (girgias)  
heiglandreas (heiglandreas)  
jhdxr (jhdxr)  
kalle (kalle)  
kguest (kguest)  
kocsismate (kocsismate)  
mbeccati (mbeccati)  
ocramius (ocramius)  
petk (petk)  
ramsey (ramsey)  
remi (remi)  
sebastian (sebastian)  
sergey (sergey)  
theodorejb (theodorejb)  
tstarling (tstarling)  
xatenev (xatenev)  
Final result: 27 0
This poll has been closed.

Unbundle ext/oci8 and ext/PDO_OCI
Real name Yes No
alcaeus (alcaeus)  
ashnazg (ashnazg)  
beberlei (beberlei)  
brzuchal (brzuchal)  
crell (crell)  
cschneid (cschneid)  
derick (derick)  
devnexen (devnexen)  
dharman (dharman)  
felipe (felipe)  
geekcom (geekcom)  
girgias (girgias)  
heiglandreas (heiglandreas)  
jhdxr (jhdxr)  
kalle (kalle)  
kguest (kguest)  
kocsismate (kocsismate)  
mbeccati (mbeccati)  
ocramius (ocramius)  
petk (petk)  
ramsey (ramsey)  
sebastian (sebastian)  
sergey (sergey)  
sixd (sixd)  
theodorejb (theodorejb)  
tstarling (tstarling)  
xatenev (xatenev)  
Final result: 26 1
This poll has been closed.

Implementation

After the project is implemented, this section should contain links to updated documentation, and the location of the PECL packages.

References

Changes

  • 0.9 — Initial Draft
  • 0.9.1 — Clarify maintenance of unbundled extensions, and include PDO_OCI.
rfc/unbundle_imap_pspell_oci8.txt · Last modified: 2023/11/24 11:52 by ilutov