PHP RFC: Unbundle ext/xmlrpc
- Version: 1.0
- Date: 2020-05-12
- Author: Christoph M. Becker, firstname.lastname@example.org
- Status: Implemented
- First Published at: https://wiki.php.net/rfc/unbundle_xmlprc
ext/xmlrpc relies on on libxmlrpc-epi, which is abandoned. Even worse, we are bundling a modified 0.51, while the latest version is 0.54.1. This is exacerbated by the fact that the system library is usually built against libexpat, but the bundled library is likely to be built against libxml2 using our compatibility layer.
Relying on an external library which is no longer maintained for more than nine years is suboptimal. Dropping support for system libraries in favor of the bundled xmlrpc-epi, however, would obviously require us to update the bundled library to the latest version, and also to maintain it ourselves for the foreseeable future at least. Since ext/xmlrpc appears barely maintained for years, it does not seem likely that we would have the resources to actually do that.
Unbundle ext/xmlrpc (i.e. move it to PECL) without any explicit deprecation.
We are not doing users a favor by having an extension which relies on an unmaintained library, which may have serious issues and maybe even vulnerabilites, without signalling that issue. Since the problem with xmlrpc does not appear to be its functionality or API, but rather the lack of maintainance, a deprecation does not seem appropriate. Moving the extension to PECL is supposed to give users that signal, so they can reevaluate their use of the extension.
Backward Incompatible Changes
The functionality offered by the xmprc extension is no longer available, unless the respective PECL package is used.
Proposed PHP Version(s)
It may be considered to move the
xmlrpc_error_number INI settings to the xmlrpc extension. This is outside of the scope of this RFC, though.
A simple yes/no vote about whether to unbundle ext/xmlrpc or not. Unbundling requires a 2/3 majority. Voting starts on 2020-05-12, and ends on 2020-05-26 (12:00 UTC).
After the project is implemented, this section should contain
- Unbundled via https://github.com/php/php-src/pull/5640
- a link to the PHP manual entry for the feature