Approved proposal
- Don't require curl at install time;
- Keep existing non-curl path;
- Add non-parallel MultiHttpClient fallback,
-
Provide warning about missing curl on Special:Version.Declined per T184652.
Original proposal
Right now we have some features that require curl (it's probably the #2 issue third parties have with installing VisualEditor, for instance, after mis-matched versions; it's also needed for Math and several other extensions).
Historically, we bent over backwards to provide a fallback using file streams. Although a few older paths still use this, it's not practical for the newer MultiHTTPClient which is used for the VirtualRESTServiceClient, amongst other important features.
Failure to have cURL installed is a big cause of third party user confusion, and the installer already for
some time has suggested that they install it. Instead of having so confusing a situation where you don't need cURL unless you do, now we just require it outright, simplifying things a great deal.
We already require five PHP extensions – xml, ctype, json, iconv, and (as discussed in March in T129435) mbstring.