Wikimedia Platform Engineering/REST proposal/status

Last update on: 2013-02-monthly

2012-11-06
 Federico Lucignano is one of the main developers on this effort. He will be doing API stuff for Wikia for the next 5 months. Wikia wants to attract motivated app developers and companies using Wikia's products to use the API. They also want to make the APIs more standards-compliant (a RESTful interface, using HTTP verbs), but that's a high-level goal. Mobile-related work is first, driving the direction of some of Federico's work, but this redesign would improve the whole platform, including the enterprise.

Wikimedia and Wikia want to work together on this. Wikimedia Foundation also wants to avoid boxing ourselves into special-purpose, specific apps. Right now we're in the very early stages and I believe Wikia's going to put out an RFC -- the initial research we discussed during the kickoff meeting is starting this week.

2012-11-monthly
Wikia wants to attract motivated app developers and companies using Wikia's products to use the API. They also want to make the API more standards-compliant (a RESTful interface, using HTTP verbs), but that's a high-level goal. Mobile-related work is first, but this redesign would improve the whole platform, including the enterprise. The Wikimedia Foundation and Wikia want to work together on this; The Wikimedia Foundation also wants to avoid boxing ourselves into special-purpose, specific apps. Wikia developer Federico Lucignano is currently working on a Request for comments on the REST proposal.

2012-12-03
Updates from Wikia:


 * Finishing evaluating ROA as the underlying REST architecture for the RFC
 * Defined the possible format for scope-defining parameters (both hierarchical and single-level)
 * Started identifying the core set of resources to be exposed via the REST interface, evaluating overloaded Post as a way to allow for 3rd party extensions to a resource
 * Completed the outline for a first revision of a protocol-agnostic router/dispatcher model along with the core set of classes of the API framework

Next step: finalize the first set of docs and move the discussion to a larger group including API designer and Tech leads.

2012-12-monthly
Wikia has completed a preliminary prototype (deemed to be disposed of after all the valuable data has been collected) in order to validate the design and its core concepts, identify and explore possible issues and test limits imposed by the platform. It will allow be used to explore the usage of PHP 5.4's new features to ease the implementation of a maintainable versioning system (the prototype abuses PHP's implementation of namespaces in some cases, this is not meant to persist in the final prototype but was rather a stress test), test human-readable formatting for responses when called by specific clients, and measure overhead added by the software abstraction.

As a result, some pain points and alternative routes have been identified on which research work will be carried on in late January/beginning of February 2013, leading the team closer to a final implementation and related RFC. The code will be available for a short time in a dedicated branch at Wikia's app repository at Github.

2013-01-monthly
No relevant progress for January; the next focused R&D sprint will start on Feb 4, the main goal being addressing the issues identified in late December, for further information see December's monthly update.

2013-02-monthly
The focused R&D sprint has led to remove all the remaining obstacles identified previously and Wikia has identified a new, larger dedicated Product team to get to a final implementation of the REST API following the directions set by the existing prototype and internal RFC; the team (API/Data) is the same one in charge of Search and all the related API's, this will ensure a better integration of this product into the new API strategy. At the moment of writing the knowledge transfer required for the team to start this new phase has just begun and the team has to first to complete the current work on another project already in progress. In the meantime the RFC will be made public for review and feedback.