Multimedia/status

Last update on: 2013-04-17

2011-02-01
Integration of Resource Loader in MediaWiki 1.17 in timedMediaHandler code base in progress. This will help overall integration of the video editor.

2011-03-01
Michael Dale has been working on the integration of TimedMediaHandler and the Add Media Wizard with the Resource Loader, by converting them from gadgets to MediaWiki extensions. A prototype for TimedMediaHandler is now available to showcase some of its new features.

2011-04-01
The back-end code of the TimedMediaHandler extension was reviewed by Roan Kattouw, and Michael Dale started to integrate the feedback in the code. The front-end and JavaScript code will be reviewed by Trevor Parscal.

2011-05-01
Michael Dale continued to improve the TimedMediaHandler extension, notably by adding a trancode state manager, and adding tests. Trevor Parscal reviewed the front-end and JavaScript code. Michael will host a discussion with other developers about TimedMediaHandler at the Berlin Hackathon.

2011-06-01
Michael Dale's TimedMediaHandler extension was reviewed by Brion Vibber; Michael is now addressing the comments to make the extension ready for testing and deployment.

2011-07-01
Michael Dale continued to address Brion Vibber's comments from code review by updating and fixing the TimedMediaHandler code. He also started to work on a test plan to perform user experience testing on a prototype.

2011-08-01
Michael Dale continued to address comments from code review, and participated in a Multimedia sprint planning meeting. He also started to plan the final review and possible deployment of TimedMediaHandler around September.

2011-08-31
Michael Dale completed the fixes suggested in code review, and continued to prepare the extension for deployment. Jan Gerber fixed an ffmpeg seek issue and cleaned up transcode key names.

2011-09-30
<section begin=2011-09-30 />Neil Kandalgaonkar and Ian Baker reviewed some of Michael Dale's code. Alolita Sharma and Michael discussed a timeline for testing, code review and deployment, as well as related hardware requirements.<section end=2011-09-30 />

2011-10-31
<section begin=2011-10-31 />Ian Baker and Neil Kandalgaonkar continued to review Michael Dale's code to prepare it for deployment. Ben Hartshorne has set up the initial development environment for Engineering to have a platform on which to test and continue development of the SwiftMedia extension. Ben and Mark Bergsma continue to do performance testing on Swift prior to using it in production. Aaron Schulz started to refactor the file backend code, a requirement to using SwiftMedia.<section end=2011-10-31 />

2011-11-30
<section begin=2011-11-30 />Ian Baker and Neil Kandalgaonkar continued to review Michael Dale's code to prepare it for deployment.<section end=2011-11-30 />

2011-12-20
<section begin=2011-12-20/>Aaron Schulz merged the FileBackend branch into /trunk. Ben, Aaron and Ariel discussed sharding the swift containers. <section end=2011-12-20/>

2011-12-31
<section begin=2011-12-31/>Ian Baker and Neil Kandalgaonkar completed the review of all the code, including the transcoding part. They started to plan a test plan and a deployment to Wikimedia Labs. Aaron Schulz merged the FileBackend branch into, and Tim Starling started to review the code. Aaron, Ben Hartshorne, Ariel Glenn discussed sharding the Swift containers at the MediaWiki level, and Aaron started to implement it.<section end=2011-12-31/>

2012-01-03
<section begin=2012-01-03/>FileBackend code has been merged, and has gone through preliminary review with Tim. Some fixes still being made in trunk. MediaWiki-level sharding of containers is currently being implemented by Aaron.<section end=2012-01-03/>

2012-01-05
<section begin=2012-01-05/>Container sharding added FileBackend class. Aaron has a testwiki running of the swift test cluster and SwiftFilebackend.<section end=2012-01-05/>

2012-01-19
<section begin=2012-01-19/>Aaron continues to make performance improvements and minor fixes to the Swift backend and FileOp classes.<section end=2012-01-19/>

2012-01-31
<section begin=2012-01-31/>The beginnings of a TimedMediaHandler test setup were put into place in Wikimedia Labs, including video transcoding infrastructure, at http://commons.wikimedia.beta.wmflabs.org. Work on this test setup will continue in February, with the goal to begin executing the test plan in preparation for deployment. Aaron Schulz added container sharding to FileBackend, and continued to make performance improvements and fixes. The Swift back-end now passes all unit tests; the code is being reviewed and cleaned up. Some of Aaron's code for purging thumbnails will be backported to MediaWiki 1.18. Ben Hartshorne has prepared interim hardware for production deployment, which will begin the week of February 6.<section end=2012-01-31/>

2012-02-29
<section begin=2012-02-29/>Michael Dale and Jan Gerber continued testing and improving the TimedMediaHandler extension setup in Wikimedia Labs (inside the Wikimedia Commons deployment-prep wiki). It will be tested there before it is prepared for deployment to production, with the required transcoding infrastructure. After more polish by Aaron Schulz and a February deployment of SwiftMedia and Swift, Swift is now serving 100% of thumbnails on Wikimedia Commons (engineering report).<section end=2012-02-29/>

2012-03-31
<section begin=2012-03-31/>Michael Dale and Jan Gerber have TimedMediaHandler set up on beta. It is running into issues related to the Labs beta setup that are preventing the test plan from being run. Labs and QA leads are working with them to get to the point where testing can be run. QA support has been lined up. Swift is deployed for thumbnails. There are still some corrupted thumbnails in the Squid cache, but all known issues with new thumbnail corruption have been resolved. Work is underway to test and deploy Swift for original images, with work scheduled to complete in late May.<section end=2012-03-31/>

2012-04-monthly
<section begin=2012-04-monthly/>Michael Dale and Jan Gerber are looking into transcoding bugs in TimedMediaHandler. A lot of issues on beta are hardware- or configuration-related (virtual instances are running out of resources) and more hardware will be going online soon. In the meantime, the client-side playback parts of the test plan are being run by Chris McMahon and Tauhida Parveen. Ben Hartshorne and Leslie Carr have been running a script to clean up corrupted thumbnails in Swift. Aaron Schulz has been fixing bugs, and is now focusing on adding concurrent file operation support to PHP cloudfiles (the PHP interface to Swift) and to MediaWiki's FileBackend code. This should help alleviate .<section end=2012-04-monthly/>

2012-05-02
<section begin=2012-05-02/> In QA: Tauhida is hacking through the test plan. Uploading (wizard) is taking a while but not timing out (~14 min/90MB). Bug List.<section end=2012-05-02/>

2012-05-23
<section begin=2012-05-23/>As of 5/18, Antoine updated beta config to closer track master branch (production) of Mediawiki via git/puppet. Video can be uploaded via UploadWizard and queued by TMH. Queue processing is blocking on the ffmpeg2theora missing from the configuration. <section end=2012-05-23/>

2012-05-monthly
<section begin="2012-05-monthly"/>Antoine Musso and the Labs team have unblocked the deployment prep issues; Labs is now closely tracking production MediaWiki. Most of the features (upload, play, full screen, etc.) are now in testing, and upload seems to be faster than before as well. Aaron Schulz and Ben Hartshorne deployed a new version of the thumbnail handler to Commons, test, test2, and mediawiki.org, that uses our Swift FileBackend code. It should provide us with useful production testing prior to using Swift FileBackend for handling original files. Cleanup of corrupted thumbnails is now finished. Aaron deployed a SiteStats fix that should make uploads much faster and fix some timeout problems. Ben and Aaron will also roll out the FileBackend-based thumbnail handler to the rest of the wikis.<section end="2012-05-monthly"/>

2012-06-22
<section begin="2012-06-22"/>Ben is installing SSDs for use in storing the object listing database, in hopes that having faster storage will result in faster purge times (fixing ). All work for deploying Swift for storage of originals is on hold until we fix the object listing performance problems.<section end="2012-06-22"/>

2012-06-monthly
<section begin="2012-06-monthly"/>Development on TimedMediaHandler has been put on pause until Jan Gerber comes into San Francisco late July for the final push. Ben Hartshorne is installing SSDs for use in storing the object listing database, in hopes that having faster storage will result in faster purge times (fixing ), which we hoped to complete in June, but which is stretching into July. All work for deploying Swift for storage of original images is on hold until we fix the object listing performance problems.<section end="2012-06-monthly"/>

2012-07-18
<section begin="2012-07-18"/>Jan Gerber is in San Francisco, currently working on fixing up the transcoding, and ensuring interoperability with SwiftMedia <section end="2012-07-18"/>

2012-07-27
<section begin="2012-07-27"/>Aaron has the process of migrating image originals into Swift well underway. Commons is done (barring a few minor problems to investigate in the logs). The rest of the wikis are in various stages of progress. Meanwhile, there's also a minor architectural change (MultiWrite backend) that will be deployed next week, which is a necessary prerequisite to serving/storing originals in Swift. Thumb handling changes may also be deployed next week during the scheduled window (currently slated for Wednesday, August 1)<section end="2012-07-27"/>

2012-07-monthly
<section begin="2012-07-monthly"/>Jan Gerber is in San Francisco, currently working on fixing up the transcoding, and ensuring interoperability with SwiftMedia, working with Michael Dale. On July 31, Aaron Schulz, Jan, and Michael deployed the TimedMediaHandler extension to test2. Aaron Schulz is in the process of migrating image originals into Swift. Commons is completed (barring a few minor problems to investigate in the logs), and the rest of the wikis are in various stages of progress. Meanwhile, there's also a minor architectural change (MultiWrite backend) that will be deployed soon, which is a necessary prerequisite to serving/storing originals in Swift.<section end="2012-07-monthly"/>

2012-08-30
<section begin="2012-08-30"/>All Wikis are using a multi-write backend to push writes to both Swift and NFS. This has been running for several weeks. All reads of upload originals are served from Swift, including upload.wikimedia.org. The Math and Timeline extensions will be migrated to Swift soon.<section end="2012-08-30"/>

2012-08-monthly
<section begin="2012-08-monthly"/>In August we concentrated on testing on the testwiki, and found some issues that need addressing. The project is on hold for now, but we expect to resume in September. All Wikimedia sites are now using Swift as the primary storage mechanism for multimedia files such as images (both original images as well as image thumbnails). We continue to write images to our old NFS server as well, though we plan to turn this off in September. Some specialized extensions still use the old NFS server, such as the Math and Timeline extensions. These will be migrated to Swift soon (tentatively in September).<section end="2012-08-monthly"/>

2012-09-monthly
<section begin="2012-09-monthly"/>The test deployment and testing are tracked in ; Michael Dale is following up and we are hoping to fix the last issues to deploy TMH to Wikimedia sites soon. The Math, EZTimeline, and ConfirmEdit extensions were updated to be able to use Swift-based storage, and all but ConfirmEdit are now using Swift in production. We weren't able to turn off the old NFS server (ms7) as we originally planned, due to hardware issues on our Swift nodes and unanticipated issues with Swift-based replication to our Ashburn data center. We are very nearly out of space on ms7, so our new plan is to back our media storage onto a newer NFS system.<section end="2012-09-monthly"/>

2012-10-monthly
<section begin="2012-10-monthly"/>The last of the blocking bugs have been resolved, so we now plan to deploy TimedMediaHandler to English Wikipedia on October 31 at 16:00 UTC. Further deployments will follow, tentatively the week of November 5. At the beginning of October, we had our new Swift distributed file storage cluster in production, with copies of all original media also being made to an NFS server (ms7) that was destined to fill up in the month of October. Our original plan was to shut off copying to ms7 and rely solely on the Swift cluster. Because of hardware issues with the Swift cluster, we decided we couldn't afford to switch off the copying of files to an NFS backup. We migrated the contents of ms7 over to a much larger NFS server (nas1), and configured nas1 to be the new live backup for images. We plan to remain in this configuration for the foreseeable future as we stabilize our distributed file store.<section end="2012-10-monthly"/>

2012-11-01
<section begin="2012-11-01"/>We have now deployed TimedMediaHandler to English Wikipedia (see some examples of videos). We plan to deploy to all other wikis but commons on Monday, November 5 at 18:00 UTC, and then deploy to Commons on Wednesday, November 7 at 17:00 UTC.<section end="2012-11-01"/>

2012-11-07
<section begin="2012-11-07"/>We have now deployed TimedMediaHandler to all wikis. We deployed to most wikis Monday, November 5, and then most recently to Commons on Wednesday, November 7 at 17:05 UTC.<section end="2012-11-07"/>

2012-11-28
<section begin="2012-11-28"/>Thumnails (and math/timeline files) are now written to nas1 and swift. More improvements have been made to FileBackend to avoid extra HEAD requests for 404s. Webm thumbnails use temp swift URLs to support range requests. Feature requests and bugs reports are filed against ceph as MW takes advantage of other swift features.<section end="2012-11-28"/>

2012-11-monthly
<section begin="2012-11-monthly"/>We have deployed TimedMediaHandler to all wikis. Jan Gerber and Michael Dale continue to fix bugs. Jan Gerber and Aaron Schulz are working on an improved file upload mechanism in UploadWizard to make larger file uploads more practical. Thumbnails (and math/timeline files) are now written to nas1 and Swift. More improvements have been made to FileBackend to avoid extra HEAD requests for 404 errors. Webm thumbnails use temporary Swift URLs to support range requests. Feature requests and bugs reports are filed against Ceph as MediaWiki takes advantage of other Swift features.<section end="2012-11-monthly"/>

2012-12-monthly
<section begin="2012-12-monthly"/>Jan Gerber continued to refine the TimedMediaHandler extension, making the transcoding steps more robust. Captchas are ready to be served from Swift. They previously were for several days, but the configuration had to be reverted to due random errors from Swift. A new set of captchas are being tweaked for readability and are served from Swift on the test wikis. Captchas are one of the last NFS dependencies.<section end="2012-12-monthly"/>

2013-01-monthly
<section begin="2013-01-monthly"/>Jan Gerber continues bugfixing and refining TimedMediaHandler, mainly focusing on operational improvements to make more efficient use of our server infrastructure. NFS for uploads/thumbnails has been unmounted from all Apache servers and the NFS back-end configuration was removed from MediaWiki; all files now only use Swift. A workaround has been added for the Swift back-end class when used with Ceph, so that temporary URLs can be used (for making video thumbnails for example). A Python script to copy files into Ceph has been run and is being worked on. Various issues have been reported in Ceph's bug tracker and are being looked at by the developers.<section end="2013-01-monthly"/>

2013-02-monthly
<section begin="2013-02-monthly"/>Jan Gerber continues to work part-time for the WMF to fix multimedia bugs. Fixes include better support for FLAC files and better support for metadata display in small embedded players. Nearly all files have been copied from Swift (in Tampa) to Ceph (in Ashburn). Further scripts will be run to synchronize the Ceph files to account for deletions and updates to files. The Varnish configuration to handle URL rewriting (to take the place of rewrite.py in swift) is already coded, though not yet in use.<section end="2013-02-monthly"/>

2013-03-06
<section begin="2013-03-06"/>Transcoded videos have been moved to there own container so the file backend and caching layer can make improvements specific to videos. Improvements for smaller embeds and getting rid of any gM call for messages.<section end="2013-03-06"/>

2013-03-12
<section begin="2013-03-12"/>An API to rotate images was merged into core <section end="2013-03-12"/>

2013-03-monthly
<section begin="2013-03-monthly"/>Mostly bugfixing this month, as well as hiring for the two multimedia positions. Jan Gerber finished work on an API to rotate images, which needs a little site configuration work to get deployed. Transcoded videos have been moved to their own container in the Swift filesystem in anticipation of video-specific optimizations. Jan also improved the user interface in cases where an embedded media player is too small to display credits and player controls. TimedMediaHandler was extended so that other MediaWiki extensions can render player elements using PHP. The Score extension can now use TimedMediaHandler or OggHandler to render the audio player (see ), which puts the Score extension one step closer to deployment and music staves one step closer to generation and display in wiki pages (see ).<section end="2013-03-monthly"/>

2013-03-29
<section begin="2013-03-29"/>TimedMediaHandler was extended so that other extensions can render player elements from PHP. The Score extension can now use TimedMediaHandler or OggHandler to render the audio player. <section end="2013-03-29"/>

2013-04-17
<section begin="2013-04-17"/>Score extension is now working on test2 and is ready for deployment. Some videos that were uploaded as Ogg Theora had problems being transcoded into WebM, so we upgraded our transcoder (libvpx) and that has been deployed; failed transcoddes need to be queued again, which will happen soon. VipsScaler will be deployed after a new version of vips library is upgraded on our image scalers .<section end="2013-04-17"/>