On Tue, May 27, 2014 at 2:56 AM, Tony Thomas 01tonythomas@gmail.com wrote:
Hi, We were having discussions regarding putting the new SwiftMailer[1] lib in/out of core, after the merge of the change https://gerrit.wikimedia.org/r/#/c/135290. Tyler recommends to add the installer code to the composer.json and not to add the SwiftMailer code to the core. This creates the swiftmailer lib in core/vendors/swiftmailer. After discussing with Bryan (https://dpaste.de/XVkL/raw), it looks like *maintaining a separate repo* for external libraries looked like the best solution, so that it uses composer 'properly', and still works for wmf-deployement -- rather than getting the whole into core. It could be thus deployed via trebuchet to the cluster and the autoloader pulled in in CommonSetings (quoting Bryan). Since the entire mail structure is being reworded to use swiftmailer, and its a crucial dependancy ( There will be no alternate mail systems in UserMailer.php -- as both the SMTP and no SMTP cases are handled effectively by SwiftMailer ), I think we will need to have a separate repo for that. Please go through the patch-set above and comment your opinions on including external libraries.
Thanks for getting this discussion started Tony. I have "been meaning to" write a very similar email regarding discussions from the Zürich hackathon about my own attempt to pull third-party libraries into mediawiki-core [2]. After talking to Ori, Tyler, Matt Walker and others in Zürich I realized that my desire to put the libraries into mediawiki-core was mostly motivated by convenience for deployment on the production wiki[mp]edia cluster. For a variety of reasons, using composer to download and install libraries directly on the production cluster is undesirable. There is an alternative however that can be clearly seen in the mediawiki/extensions/Parsoid/js/contrib.git repository.
I think we should create a new repository in gerrit ("mediawiki/core/contrib"? Bikeshed as needed) where composer is used to manage importing specific versions of external libraries that are needed for the wiki[mp]edia cluster deployments. This repository can be deployed to the production cluster using Trebuchet or scap and appropriate changes can be made in operations/mediawiki-config.git to ensure that the autoloader can find the external classes.
[2]: https://gerrit.wikimedia.org/r/#/c/119939/
Bryan