PHP RFC: Unbundle ext/interbase
- Version: 1.0.3
- Date: 2019-03-22
- Author: Kalle Sommer Nielsen firstname.lastname@example.org
- Status: Implemented
- First Published at: https://wiki.php.net/rfc/deprecate-and-remove-ext-interbase
The InterBase extension for PHP (ext/interbase) is one of the oldest database extension who currently resides in the Core. The extension allow access to InterBase based database systems and Firebird based systems. A PDO extension exists for accessing the same database systems with a PDO backend, however for this RFC, only the ext/interbase extension is in question.
The InterBase extension was one of the few extensions that managed to continue its life in the 7.x series, however the extension lacks a maintainer and while there has been calls to taking over the extension, the volunteers who have stepped up have not kept it alive or even touched it. There is no one else around the Core with the experience and willingness to tackle this extension, meaning that the fixes we would be able to provide would be “blind” ones. Even in 7.x, the extension was not fully ported and may misbehave.
Given the unacceptable nature of the status of this extension, I therefore propose consider the move of this extension to PECL in 7.4.0.
Backward Incompatible Changes
Codebases relying on ext/interbase to be available with the default PHP build (like on Windows) will have to download it from PECL. For Unix systems that have packages, the package managers may need to be pointed to PECL to continue having gaining access to an InterBase/Firebird based database.
Like already stated above, it is very vital for PHP to provide a set of high quality extensions to come with the default distribution. However, if the PHP Development Team no longer can give the support to an extension that it demands to stay up to par, it is not fair for the PHP Community (nor the PHP Development Team) to continue to distribute a potential broken extension.
The usual procedure is to move extensions that once were in the Core into PECL. An extension in PECL does not mean the extension will cease to exist, it just means that it will not be updated by the PHP Development Team in any capacity. This allows the communities of relevant extensions to take them over, and let them follow their preferred release schedule, instead of the monthly one that PHP follows. Extensions in PECL also can follow their own versioning scheme, and can change as they feel like, and do not have to follow the strict rules of the Core to be released. Many extensions in PECL are also distributed by popular Linux distributions and the PECL infrastructure allows automatic compilation of Windows versions in many flavors of an extension.
What is broken about it?
There is a long list of things that is broken with this extension, which the PHP Development Team is unable to work around as we do not have any abled person who understands the extension available, below is some of the popular ones:
- Reference counting and management of connection resource links is broken
- Multiple connections is broken
- PHP4 style “default”-link connections is poorly broken
- Thread safety is poorly broken
- A small subset of field types are supported, anything else crashes
The primary vote is about whether to unbundle ext/interbase, which requires a 2/3 majority and will run for 2 weeks (2019-04-09 to 2019-04-23 ~12:00 EET):
- Internals discussion: http://news.php.net/php.internals/104871