Last update on: 2013-05-monthly
Integration of Resource Loader in MediaWiki 1.17 in timedMediaHandler code base in progress. This will help overall integration of the video editor.
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.
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.
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.
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.
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.
Aaron Schulz merged the FileBackend branch into /trunk. Ben, Aaron and Ariel discussed sharding the swift containers.
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
/trunk, 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.
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.
Container sharding added FileBackend class. Aaron has a testwiki running of the swift test cluster and SwiftFilebackend.
Aaron continues to make performance improvements and minor fixes to the Swift backend and FileOp classes.
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.
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).
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.
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 bug 34717.
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.
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.
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 bug 34717). All work for deploying Swift for storage of originals is on hold until we fix the object listing performance problems.
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 bug 34717), 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.
Jan Gerber is in San Francisco, currently working on fixing up the transcoding, and ensuring interoperability with SwiftMedia
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)
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.
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.
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).
The test deployment and testing are tracked in bug 27699; 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.
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.
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.
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.
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.
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.
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.
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.
Jan Gerber continues to work part-time for the WMF to fix multimedia bugs. Fixes include better support for FLAC files (bug 43249) and better support for metadata display in small embedded players (bug 44272). 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.
Transcoded videos have been moved to there own container so the file backend and caching layer can make improvements specific to videos (bug 43343). Improvements for smaller embeds and getting rid of any gM call for messages.
An API to rotate images was merged into core bug 33186
Mostly bugfixing this month, as well as hiring for the two multimedia positions. Jan Gerber finished work on an API to rotate images (bug 33186), 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 (bug 43343). 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 bug 43388), which puts the Score extension one step closer to deployment and music staves one step closer to generation and display in wiki pages (see bug 189).
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. bug 43388
Score extension is now working on test2 and is ready for deployment (bug 46374). 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 (bug 46795). VipsScaler will be deployed after a new version of vips library is upgraded on our image scalers (bug 32721).
Differently-sized video thumbnails now only require one reference thumbnail (for the time position) to be generated. This helps to avoid expensive decoding to derive thumbnails. The Score extension was deployed on April 22nd. It allows users to create and document musical scores on Wikimedia sites.
After deploying Score in April, various performance improvements and fixes were merged in May. To improve scaling of large images, the VipsScaler extension was prepared on the cluster and is ready for deployment in the next weeks. TimedMediaHandler had various bug fixes and the libraries used to encode WebM videos were updated to improve quality and address encoding issues.