Hi,
The report covering Wikimedia engineering activities in May 2013 is now available.
Wiki version: https://www.mediawiki.org/wiki/Wikimedia_engineering_report/2013/May
Blog version: https://blog.wikimedia.org/2013/06/10/wikimedia-engineering-may-2013-report/
We're also proposing a shorter, simpler and translatable version of this report that does not assume specialized technical knowledge:
https://www.mediawiki.org/wiki/Wikimedia_engineering_report/2013/May/summary
Below is the full HTML text of the report.
As always, feedback is appreciated on the usefulness of the report and its summary, and on how to improve them.
------------------------------------------------------------------
Major news in May include:
Note: We're also providing a shorter, simpler and translatable version of this report that does not assume specialized technical knowledge.
Personnel
Are you looking to work for Wikimedia? We have a lot of hiring coming
up, and we really love talking to active community members about these
roles.
Announcements
- Alexandros Kosiaris joined the Technical Operations team as Operations Engineer (announcement).
- May Galloway joined the Product Development team as Visual Designer (announcement).
- Jared Zimmerman joined the Engineering Department as Director of User Experience (announcement).
- Nik Everett joined the Platform engineering team as Senior Software Engineer specializing in Search (announcement).
- Aarti Dwivedi, Anubhav Agarwal, Harsh Kothari, Himeshi De Silva, Jiabao Wu, Kiran Mathew Koshy, Liangent, Molly White, Moriel Schottlender, Nazmul Chowdhury, Nilesh Chakraborty, Or Sagi, Petr Onderka, Pragun Bhutani, Praveen Singh, Rahul Maliakkal, Richa Jain, Rohan Verma, Tongbo Sui and Yevheniy Vlasenko joined the Wikimedia tech community as part of Summer of Code 2013. Katie Cunningham and Rachel Thomas joined as part of the Outreach Program for Women.
Technical Operations
Site infrastructure
- The migration to MariaDB continued, with Wikimedia Commons now fully
moved over. Additional database infrastructure work was completed in
support of the Tool Labs, producing a row-based replication stream with
all PII removed for the publicly accessible Tool Labs databases.
- We'll be upgrading to Request Tracker version 4 and migrating the
service to Eqiad soon. Most of the ground work is laid for this; RT4 is
puppetized and we've done a dry run.
- Brandon Black made improvements to our Varnish cache invalidation
code. Together with Mark Bergsma and Faidon Liambotis, they wrote a
replacement for varnishhtcpd called vhtcpd,
and deployed it to the production Varnish machines. The new daemon is
~50x more efficient at the same basic job. This buys us some performance
on Varnish machines in general, but more importantly it gets rid of
invalidation failures due to network buffer overruns when the old daemon
couldn't keep up. This should also rid us from the random software
failures in the old daemon that resulted in missing some or all cache
purge requests for extended periods of time. The initial deployment has
just been a basic swap of the two daemons. Further near-future
improvements include turning on the new daemon's HTCP regex filtering
configuration for more efficiency gains, and tying its HTCP packet
statistics back into our normal monitoring and analysis infrastructure,
so that we can better see any further multicast invalidation delivery
issues that may arise.
- Daniel Zahn led the OS patch release train; the team has started to
upgrade about 50% of the servers to-date and will finish the rest in
June.
- Faidon also worked with Aaron Schulz and made Ceph at Eqiad the
primary media storage back-end, leaving Swift at Tampa as a secondary
fail-over back-end. This means that MediaWiki application servers were
writing to & reading from there for about four & two weeks
respectively. More recently, the cluster encountered some problems and
traffic was temporarily reverted back to Tampa. Faidon is now upgrading
Ceph software to the newer upstream version, Cuttlefish, which addresses
a number of problems that were encountered during this time and were
successfully reported to Ceph developers. Testing will resume after that
happens, both by re-enabling Ceph as a MediaWiki back-end and by
switching a portion of Varnish traffic to Ceph.
- Mark and Faidon started working on migrating the Text Squid servers
to use Varnish instead. In Mark's preliminary tests on 1 Esams and 4
Eqiad servers, the results look encouraging. He will start adding more
traffic to them in the coming weeks.
Data Dumps
- The routine dumps of Wikidata ran into two roadblocks, one of them
related to the way that Recent changes patrol and autopatrolling are
handled in MediaWiki. While a local workaround is in place, there has
been discussion of revamping the patrolling mechanism including changes
to the database [1].
The other issue, affecting the full history content dumps, also has a
temporary workaround until we can decide what the meaning of the
rev_len
field in the database for revisions really means. - The mwxml2sql utils have been through some testing and bug fixes,
and a volunteer is interested in packaging them for Debian to accompany
his code for local installation of a mirror of Wikipedia (or the project
of one's choice).
- Incremental dumps will be developed this summer by User:Svick as part of this year's GSoC program. We're happy to have him and can't wait for the finished code!
Wikimedia Labs
- This month was mostly dedicated to bringing Tool Labs online, but a
number of other changes occurred as well. Work has progressed on
AJAXification of the OpenStackManager interface. Instance reboot actions
are now using this and there are gerrit changes awaiting review for
instance console output, instance deletion, and some IP address
actions. The custom virtual machine image had a number of fixes this
month improving reliability and boot speed. We expect further
improvements with upgrades to the OpenStack grizzly or havana releases.
OpenStack was upgraded from the essex release to the folsom release,
increasing speed of operations and bringing some new features (such as
instance resizing). We'll be making these features available for use
soon. All virtualization hosts and all instances were upgraded for a
kernel security vulnerability and were rebooted this month, causing
roughly an hour of scheduled downtime. Work has also been progressing on
creating instances pre-configured for doing MediaWiki development; this
has been working in the past, but it is now more reliable, faster, and
meets our legal team's requirements for MediaWiki installations in Labs.
Work has also progressed on a more reliable development environment for
Labs itself. Soon it should be possible to install a pre-configured
instance ready for making changes to the Labs infrastructure.
- Tool Labs is now operational, with roughly 150 tools already
migrated. With the completion of the basics of replication (all but s7
are operational), there remains no roadblocks for migration. During the
week since the Amsterdam Hackaton, a fair number of minor issues have
been found and fixed, and the general consensus from users is that the
environment is functional. On the roadmap for the next month is cleaning
up some of the management for replication (so that it is more
generalized), finish s7, and help users with their migration issues.
- Tool Labs work has also added a new feature available to all of
Labs: service groups. Service groups are a user/group combination
available locally within a project. Service group membership allows
regular users to sudo to the service groups, allowing per-project
service users, rather than needing to create local users via puppet, or
create global users via wikitech.
- Work progresses on puppetizing more OpenStack services and the
OpenStackManager extension. Currently OSM development is hampered by a
lack of test installs; soon we should have the ability to easily create
new labs instances running Openstack and OpenStackManager for testing
and development.
Editor retention: Editing tools
VisualEditor
In
May, the VisualEditor team worked to complete the major new features we
have prioritised over the past few months. Our objective is for
VisualEditor to be the default editor for all Wikipedia users, capable
of letting them edit the majority of content without needing to use the
wikitext editor, in July 2013. We have focussed on four areas of new
functionality: adding and editing inclusions of references, templates,
categories and media items. Our main area of work over the past month
has been on references and templates, and we now have implemented
editing them in our experimental code; category editing is nearly
complete and should be made available very soon. The deployed alpha
version of VisualEditor was updated twice (
1.22-wmf4 and
1.22-wmf5),
adding a number of user interface improvements, including further work
on the back-end to better support the new features, and fixing a number
of bugs.
Parsoid
In May, the
Parsoid
team implemented several new features, as well as important performance
optimizations in preparation for the July VisualEditor release.
A major image handling overhaul enabled rendering and editing of all image-related parameters with a relatively simple DOM structure.
Template and extension editing was improved to support editing of
templates within extensions. This lets editors modify and add templated
citations in VisualEditor, an important feature to improve the quality
of articles in Wikipedia.
On the performance front, we are now reusing expensive template,
extension and image expansions from our own previous output to avoid
most API queries after an edit. This is necessary to avoid overloading
the API when tracking all edits on Wikimedia projects. A cache
infrastructure with appropriate purging was set up and will be tested at
full load through June.
At the Amsterdam hackathon, we helped developers leverage
our rich HTML+RDFa DOM output for projects like a Wikipedia-to-SMS service or the
Kiwix offline Wikipedia reader.
Editor engagement features
Notifications
In
May, we released new features and bug fixes for Notifications on the
English Wikipedia and
mediawiki.org. Ryan Kaldari, Vibha Bamba and
Fabrice Florin collaborated with community members to develop a
'new message indicator', to inform users when someone posts on their talk page. The team also released a new '
Thanks notification'
that lets editors show their appreciation to users who make helpful
edits, and offers a quick way to give positive feedback on Wikipedia.
Benny Situ developed a feature that marks messages as read when you
visit your talk page and expanded our
first metrics dashboards,
in collaboration with Dario Taraborelli and Aaron Halfaker. New team
member Erik Bernhardson developed several new features, such as updating
talk page notifications to link directly to their sections. Luke
Welling continued to develop
HTML Email notifications.
Fabrice Florin worked with Oliver Keyes to discuss this product with a
wide range of community members, and led the team to plan the
next steps for Notifications and other editor engagement features. To learn more, visit the
project portal, read the
FAQ page and join the discussion on the
talk page.
Article feedback
In May, we developed a few last features and bug fixes on the
English,
French and
German Wikipedias. As requested by community members, Matthias Mullie developed a new opt-in feature that makes it easier to
enable or disable feedback on a page,
as well as new UI improvements to simplify the feedback page, based on
designs by Pau Giner and specifications by Fabrice Florin. The team also
released
new feedback links and tested the
auto-archive feature on prototype. For tips on how to use Article feedback, visit the
testing page, and let us know what you think on this
talk page.
Feature development has now ended for this project, and we will
determine our next steps based on the upcoming community vote on the
German Wikipedia in coming weeks.
Flow
Editor engagement experiments
Editor engagement experiments
In May, the Editor Engagement Experiments team (E3) launched its
redesigns of account creation and login
forms, after numerous bug fixes and working with local communities to
customize the interface as needed. The initial rollout was to 30 of the
largest Wikimedia projects in English and other languages, including
Wikipedia, Wikimedia Commons, Wikidata, Wikivoyage, Wikispecies,
Wikiquote, Wiktionary, Wikibooks, Wikiversity and Wikisource. Complete
deployment as the default for all remaining projects was enabled early
in June.
Also this month, the team launched and tested a major revamp of the "Getting Started" interface for onboarding new Wikipedians
(in English). This included a redesigned landing page, a refactor of
the backend to increase speed and stability, a new navigation toolbar on
articles that new users were given as their first editing task, and a guided tour to help them complete their first edit. The results of A/B testing
of this new version showed the largest increase in click-through rates
for the landing page – up to 32%, a large increase over the 10-12%
click-through rate of previous versions. Overall, it also showed a small
but statistically significant increase in the rate of first time edits
(+1.7%) by new English Wikipedians invited to participate in Getting
Started.
Last but not least, the
PostEdit extension
(previously enabled on most of the top Wikimedia projects by size) was
migrated to MediaWiki core. With this change, the post-edit
confirmation message will be available on all projects, and will be more easily integrated in to
VisualEditor.
Support
2012 Wikimedia fundraiser
The
Operations team moved db1025 into the firewalled fundraising cluster
(frack), rebuilt it on Precise with MariaDB. RAID monitoring tools were
updated to support RAID controllers used in frack. We've mostly finished
building/puppetizing the new payments listener (thulium) as well as a
new CiviCRM host (barium), both of which are in frack.
Language tools
The
last round of major bugs have been fixed in the Universal Language
Selector (ULS) before we start phased its deployment over the month of
June across hundreds of Wikimedia websites. Communications announcements
have been started for the first phase of deployment which includes
removal of Narayam and WebFonts from sites before ULS is rolled out with
the same integrated feature set. Test scenarios for ULS have been
identified in detail. Implementation of automated tests is in progress. A
combination of ULS integration and cross browser testing is in
progress. Final performance tweaks are in progress before we get ready
to launch the redesigned home page of Translatewiki.net in June. The
monthly version of the Mediawiki Language Extension Bundle (MLEB) was
released on May 29.
Milkshake
jQuery.webfonts
and jQuery.IME continue to be in maintenance mode with new input
methods added to our repository this month. jQuery.ULS is being actively
updated to reflect design changes suggested by the Product team as well
as bug fixes.
Language Engineering Communications and Outreach
The
Language Mavens met and discussed areas they can contribute to for
Language tools. As part of GSoC 2013, all developers on the team are set
to mentor 4 Language Engineering projects supporting jQuery.IME,
Language Coverage Matrix, RTL support for Visual Editor and Translate
mobile app. Monthly office hours and bug triage were held. The team
continued to report and blog on its activities. Hackathon organization
and participation at Amsterdam and Tel Aviv were very successful.
Wikipedia Zero
This
month, the team launched Wikipedia Zero with Mobilink in Pakistan,
refactored legacy codebase, migrated configuration from monolithic wiki
articles to per-carrier JSON configuration blobs, generated utility
scripts, patched legacy hyperlink redirect and content rendering bugs,
and supported partner on-boarding.
Mobile Web Photo Upload
This
month, we've pushed the 'Nearby' view to the stable version of the
mobile site. Now, with a location-aware device, you can easily identify
articles close to your current location. We've also made ongoing
improvements to photo uploads and the photo upload experience, including
improved messaging around image quality and copyright requirements for
new uploaders in the beta version of the mobile site. The upload
features in general have been a great success, as we've sustained over
1000 unique uploaders
over the last two months. We are continuing to experiment in the beta
version of the site with improvements to article editing, an improved
reorganization of site navigation, Echo notifications, talk pages, and
simplifying discovery of article actions (eg editing and watching). We
plan to launch these beta features over the course of the next month.
MediaWiki Core
MediaWiki 1.21
MediaWiki 1.22
Multimedia
Wikidata deployment
Wikidata
continued to roll out updates to the client (what lives on the various
project wikis) and repository (what powers
wikidata.org) software; see
the wikidata newsletter for more information:
May 3rd and
May 24th.
Additionally, there was Operations-related work to create helpful URL
redirects for entity matching along with fixes to the logging of
autopatrolled edits (which was causing massive database usage and issues
when doing archival dumps). These URL redirects and autopatrol fixes
should go out in June.
Site performance and architecture
Admin tools development
Security auditing and response
We released MediaWiki 1.20.6/1.19.7 and provided security training for developers at the Amsterdam Hackathon.
HipHop deployment
Several engineers at the Wikimedia Foundation met with Facebook engineers to discuss potential deployment of HHVM in 2013 (
summary). We formed the
HipHop mailing list to discuss moving forward with this work.
Quality assurance
Quality Assurance
In
May, QA worked with a number of parties both in and outside the
Wikimedia Foundation to test Echo, VisualEditor, Universal Language
Selector, and other projects. We began an official
QA mailing list.
Beta cluster
In
May, Ariel Glenn helped out setting up missing bits of infrastructure
to the beta cluster. He added a Redis instance (that holds the job
information) and
HTTPS support.
HTTPS will let us write scenarios related to logging in on the wiki or
via a mobile device; it will also let us test out OAuth.
udp2log archiving is now working reliably. Max Semenik has set up an
EventLogging infrastructure on beta, and Niklas Laxström enabled
Universal Language Selector. The Job processing was malfunctioning but
was restored.
Since April 30, the MediaWiki instances are using NFS, which is much
faster than the previous GlusterFS share; pages serving time went from
560 ms to 260 ms.
Roan Kattouw has deployed Parsoid and VisualEditor on beta. Just like
in production, users can enable it in your their preferences under
'Editing'.
Continuous integration
In
the beginning of May, Jenkins/Zuul faced overload for a few days; this
was resolved by upgrading Zuul and tweaking some time-expensive part of
the code. Zuul now lets us define which jobs it triggers by using a
predefined template which makes it easier to add new projects. Zuul is
now faster to report changes back to Gerrit, which was a complaint
during rush hours.
The Wikibase client and repo components are now tested in Jenkins.
All puppet repositories are now verifying the puppet manifests and erb
templates for syntax validity. The Qunit tests being run for MediaWiki
core and VisualEditor seem to be in good shape.
PHP CodeSniffer has been upgraded as well as the standard for MediaWiki
code. We have yet to enforce it though, since the current code base does
not pass the standard.
Browser testing
In
May, we added beta labs as a target for automated browser tests, which
allowed us to create tests for the Universal Language Selector at the
Hackathon in Amsterdam. We shored up a lot of Jenkins builds at the
hackathon as well. We created our first test for VisualEditor, and we
are looking forward to working with Rachel Thomas (as part of the
Outreach Program for Women) to create more.
Analytics
Analytics infrastructure
We
continued our efforts of increasing our monitor coverage of the
different webrequest dataflows. On the udp2log side, we added
monitoring per DC/server role.
Every month, we work on improving the robustness and security of the
analytics-related servers that we run: we moved the multicast relay from
Oxygen to Gadolinium, we upgraded Oxygen to Ubuntu Precise, and we
moved all the Limn-based dashboards from the Kripke labs instance to the
Limn0 labs instance. Continous integration for webstatscollector,
wikistats and udp-filters now works. The
puppet module for Hadoop
has been merged in the Operations reposotiry; this is a big step
forward in moving Kraken from beta to production status. Magnus Edenhill
demonstrated varnishkafka based on Kafka 0.8; on a local machine
varniskafka was able to process 140k msgs/s and we are planning to do
production testing mid June. Last, we separated the Kraken machines from
the other production servers by installing network ACLs.
Analytics Visualization, Reporting & Applications
For the mobile team, we started collecting
pageview counts
for both official and non-official Wikipedia apps. We changed our Kafka
import configuration so that the raw webrequest folders are directly
queryable using Hive. The decision was made to re-platform the UMAPI
codebase; we have spent quite some time specifying
user stories
and had productive discussions about the architecture during the
Amsterdam Hackathon. On the development side, the 'page count' metric
was introduced. We adapted Ori Livneh's Mediawiki Vagrant VM to also
support UMAPI in combination with test data. This will make it much
easier to debug issues and open development up to community members. We
also fixed numerous stability bugs.
Bug management
Mentorship programs
We selected 20
Google Summer of Code and 2
Outreach Program for Women
projects that will be mentored by a total of 32 volunteers. This
represents more than double the amount of projects we had last year. We
received 69 applications from 60 students for Google Summer of Code
2013, from which 9 were also applying to OPW, and 4 OPW-only individual
applications. Google allocated the 21 slots we requested, but we decided
to give one back in order to keep a standard on project feasibility.
Technical communications
In May,
Guillaume Paumier's major focus was on supporting
Tech ambassadors and setting up
Tech news,
an initiative aiming to collaboratively monitor recent software changes
likely to impact Wikimedians, and distribute a weekly summary, free of
technical jargon, to subscribers on their talk page. Two issues of this
weekly summary were published this month; starting with the second
issue, the content is now distributed in several languages if
translations are available. Guillaume also continued to review technical
blog posts, and executed the
move of the Mobile documentation from Meta-Wiki to
mediawiki.org.
Volunteer coordination and outreach
The Kiwix project is funded and executed by Wikimedia CH.
- With openZIM, we have finally released the first version of its standard implementation code: the zimlib. Kiwix was introduced in Debian testing. A new release of Kiwix for Android, with a few bug fixes and improvements, was released. Our first GSoC project (ZIM incremental updates for Kiwix) was prepared and accepted; work has already started with Kiran, the Indian student responsible for this project.
The Wikidata project is funded and executed by Wikimedia Deutschland.
- The Wikidata team worked on 2 major topics in May: the ability to
access data from Wikidata in a Wikipedia article by its label and not
just its ID, and the ability to enter points in time into Wikidata, which for example now makes it possible to enter the date of birth of a person. Magnus Manske blogged about the tool ecosystem that is building around Wikidata. During the next 3 months, the team will be working
with 3 Google Summer of Code students, and 2 other students will be
working with other organizations on Wikidata-related projects. The
codebase has been reviewed by Qafoo. Wikidata-tech,
a new mailing list for discussions related to the development around
Wikidata, was created. Additionally, the team attended the hackathon in
Amsterdam to give tutorials and meet other developers. A prototype of a multilingual map was built there, among other things.
Future
- The engineering management team continues to update the Deployments page weekly, providing up-to-date information on the upcoming deployments to Wikimedia sites, as well as the engineering roadmap, listing ongoing and future Wikimedia engineering efforts.
--
Guillaume Paumier
Technical Communications Manager — Wikimedia Foundation
https://donate.wikimedia.org