Page MenuHomePhabricator

Deploying FileExporter and FileImporter
Closed, ResolvedPublic

Description

Why both extensions together?
Although FileExporter and FileImporter are technically two extensions, we want to treat them as one (for the users at least) in beta. For the beta, the FileExporter should be deployed on Wikipedias, setting a link to the FileImporter. The FileImporter should be a Commons extension, but is only meant to be used through the link of the FileExporter, i.e. moving the file where the link was clicked.

Info on User, Control and Dataflow
can be found in the README, e.g. here: https://github.com/wikimedia/mediawiki-extensions-FileImporter/blob/master/README.md

Testing the FileImporter
You can visit https://test.wikimedia.beta.wmflabs.org/wiki/Special:ImportFile, and then use e.g. the Commons picture of the day to test the import.
Please note: The first page, where you input a url is only there for testing reasons and will not be present when the FileImporter is deployed. Furthermore, importing from Commons is only possible in this test setup, not once it is live.

Needed for beta deployment of the extensions:

  • Security Review for FileExporter: Done in T158661
  • Security Review for FileImporter: Done in T160982
  • Design Review: All designs come from WMDE-Design
  • Performance Review: Requested, and then cancelled because not necessary anymore
  • Deploy on beta sites: Done in T181383
  • Deploy on test wikis: Scheduled for June 12th 2018
  • Deploy on de-wiki,ar-wiki and fa-wiki: Scheduled for June 25th 2018
  • Deploy on all wikis as a beta feature: January 2019 (T213425)
  • Deploy as default on de-wiki,ar-wiki and fa-wiki: Roughly July 2019 (depending on feedback)
  • Deploy as default on all wikis: Roughly July 2019 (depending on feedback)

Community Consensus
These extensions are being developed to fulfil a wish of the 2013 de-wiki technical wishes survey. See here for more info on the project.

Related Objects

StatusSubtypeAssignedTask
ResolvedNone
ResolvedNone
ResolvedAddshore
ResolvedReedy
DuplicateNone
ResolvedNone
ResolvedAnomie
ResolvedAndrew-WMDE
OpenNone
ResolvedReedy
ResolvedTobi_WMDE_SW
ResolvedWMDE-Fisch
ResolvedWMDE-Fisch
ResolvedNone
DuplicateNone
ResolvedWMDE-Fisch
ResolvedNone
ResolvedNone

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

Change 422183 had a related patch set uploaded (by Thiemo Kreuz (WMDE); owner: Thiemo Kreuz (WMDE)):
[mediawiki/extensions/FileImporter@master] [WIP] Describe command and data flow in README

https://gerrit.wikimedia.org/r/422183

Lea_WMDE triaged this task as Medium priority.Apr 18 2018, 1:48 PM
Lea_WMDE updated the task description. (Show Details)

SRE is there anything from your side that we should take care of, moving these two extensions forward?

@Joe @fgiunchedi Would probably be a good idea if one/both of you took a look at this, just to be sure that the choices being made around where to put temp files, limits on size and quantity, etc are all reasonable.

@Gilles We decided this didn't really need a perf review, but if you have a few minutes free it couldn't hurt to look things over.

Looking through the tickets and the Readme of the extension, I think the default configurations are somewhat sane, but I'd reduce the total size of the images that can be fetched probably.

I don't think there is time to change the way the extension works before deployment, but I think we would have better performance and a more sound architecture if we used Swift's COPY function to copy images to their final destination in commons; @Lea_WMDE do you think that's a direction we can explore for a future enhancement?

A Swift COPY is possible, but would require exposing sharding information of all wikis to a given wiki's config. Right now each wiki only gets information about its own sharding. It also requires significant refactoring or trickery in the SwiftFileBackend family of classes, which is currently architected around dealing with one wiki-specific "FileBackend" at a time.

Looking through the tickets and the Readme of the extension, I think the default configurations are somewhat sane, but I'd reduce the total size of the images that can be fetched probably.

Would you want the limit reduced now already? We plan to deploy to de-wiki and one RTL-wiki as a first step, and will log the sizes people will actually try to move. We would have waited until we have some data to reevaluate the limits, but if you feel we should start with another size limit, let me know which one it should be :)

I don't think there is time to change the way the extension works before deployment, but I think we would have better performance and a more sound architecture if we used Swift's COPY function to copy images to their final destination in commons; @Lea_WMDE do you think that's a direction we can explore for a future enhancement?

Generally we should invest time to get better performance and a more sound architecture. However, I propose to reevaluate that topic once we have more data on how much load is actually created. @Addshore looked into using Swift's COPY function quite a bit already, but without success. So before we look into it again, we should have some more discussions with you, him, @Gilles and other knowledgeable people to make sure this can actually work. I suggest we do that once we feel like it is worth to put in the effort in comparison to the load that is being created.

Shortly:

  • It's ok to reevaluate the limits after we deploy, 250 MB is not a huge amount of data and will save us from some of the most absurd situations we have, like huge tiff or djvu collections being moved and killing an appserver and/or swift in the process.
  • I'm ok with the approach taken for now, and I think it's fair to want to know how much this feature will actually be used before pouring more resources into it. I just intuitively assumed it would be not such a daunting task, but I get why it's not straightforward to do now that I looked at the code for SwiftFileBackend.

Change 436356 had a related patch set uploaded (by Thiemo Kreuz (WMDE); owner: Thiemo Kreuz (WMDE)):
[mediawiki/extensions/FileImporter@master] [WIP] Add documentation about throttling and alternative backends

https://gerrit.wikimedia.org/r/436356

Change 436356 merged by jenkins-bot:
[mediawiki/extensions/FileImporter@master] Add documentation about throttling and alternative backends

https://gerrit.wikimedia.org/r/436356

thiemowmde subscribed.

Deployed to all wikis since T213425. Not a Beta feature any more since T232542.