====== PHP RFC: Unbundle ext/imap, ext/pspell, ext/oci8, and ext/PDO_OCI ====== * Version: 0.9.1 * Date: 2023-10-03 (Created 2023-09-27) * Author: Derick Rethans, * Status: Implemented * Target Version: PHP 8.4 * Implementation: [[rfc:unbundle_imap_pspell_oci8#Implementation|see Implementation section]] * First Published at: https://wiki.php.net/rfc/unbundle_imap_pspell_oci8 ===== 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: * https://packagist.org/packages/zetacomponents/mail * https://packagist.org/packages/webklex/php-imap ==== 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: * https://bugs.php.net/search.php?cmd=display&package_name[]=PDO+OCI&package_name[]=OCI8+related&package_name[]=Oracle+related&order_by=ts1&direction=ASC&limit=30&status=Open&reorder_by=ts1 * https://github.com/php/php-src/labels/Extension%3A%20oci8 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. * Yes * No ---- * Yes * No ---- * Yes * No ===== Implementation ===== This section should contain links to updated documentation, and the link to the pdo_oci8 package. Implementation: * [[https://github.com/php/php-src/pull/13190|imap]] * [[https://github.com/php/php-src/commit/b035cb6c8e31bea351f169b3e9f34fdc562e77e1|pspell]] * [[https://github.com/php/php-src/pull/13327|oci/pdo_oci]] PECl packages: * https://pecl.php.net/package/imap * https://pecl.php.net/package/pspell * https://pecl.php.net/package/oci8 ===== References ===== * earlier [[https://externals.io/message/121051|mailing list discussion]] * [[https://externals.io/message/109853|RFC announcement]] ===== Changes ===== * 0.9 — Initial Draft * 0.9.1 — Clarify maintenance of unbundled extensions, and include PDO_OCI.