Table of Contents

PHP RFC: Unbundle ext/xmlrpc

Introduction

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.

Proposal

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)

PHP 8.0.0.

Future Scope

It may be considered to move the xmlrpc_errors and xmlrpc_error_number INI settings to the xmlrpc extension. This is outside of the scope of this RFC, though.

Voting

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).

Unbundle ext/xmlrpc
Real name Yes No
asgrim (asgrim)  
ashnazg (ashnazg)  
beberlei (beberlei)  
brzuchal (brzuchal)  
bwoebi (bwoebi)  
carusogabriel (carusogabriel)  
cmb (cmb)  
dams (dams)  
danack (danack)  
derick (derick)  
dragoonis (dragoonis)  
duncan3dc (duncan3dc)  
duodraco (duodraco)  
ekin (ekin)  
galvao (galvao)  
geekcom (geekcom)  
girgias (girgias)  
guilhermeblanco (guilhermeblanco)  
jasny (jasny)  
jbnahan (jbnahan)  
jhdxr (jhdxr)  
kalle (kalle)  
kguest (kguest)  
kocsismate (kocsismate)  
laruence (laruence)  
levim (levim)  
lstrojny (lstrojny)  
marandall (marandall)  
mariano (mariano)  
mbeccati (mbeccati)  
mcmic (mcmic)  
nicolasgrekas (nicolasgrekas)  
nikic (nikic)  
ocramius (ocramius)  
pmjones (pmjones)  
pollita (pollita)  
ramsey (ramsey)  
reywob (reywob)  
ruudboon (ruudboon)  
santiagolizardo (santiagolizardo)  
sebastian (sebastian)  
sergey (sergey)  
stas (stas)  
svpernova09 (svpernova09)  
tandre (tandre)  
trowski (trowski)  
villfa (villfa)  
wyrihaximus (wyrihaximus)  
yunosh (yunosh)  
zimt (zimt)  
Final result: 50 0
This poll has been closed.

Implementation

After the project is implemented, this section should contain

  1. a link to the PHP manual entry for the feature

References