Lua scripting/status

Last update on: 2012-04-19

2011-08-31
Volunteer Victor Vasiliev worked on a MediaWiki extension to embed scripts into pages; this was a result of discussions over the years about replacing ad-hoc template- and ParserFunctions-based logic by a more efficient and powerful solution. Tim Starling discussed the extension with Victor to become more familiar with his work, and researched other alternatives. He (Tim) wrote a PHP extension embedding a Lua interpreter, and added support for it to the existing Lua MediaWiki extension for backward compatibility.

2011-09-30
Tim Starling did some prototyping and testing on this project. He created a test harness that can be used to trial the various approaches, and made a Wikitext-to-Lua template converter to test the relative performance. 

2011-10-31
This project was mostly on hold in October.

2012-01-26
We made a decision to move forward with Lua. Details coming to wikitech-l

2012-01-31
A team of Wikimedia engineers agreed on Lua as the language to implement as a production-ready replacement for MediaWiki markup-based templates. Tim Starling will lead this effort after the 1.19 deployment and Git migration.

2012-04-05
Tim Starling is currently working on the replacement of ordinary wikitext markup with Lua and says that he is halfway done, and hopes to finish in the next few weeks.

2012-04-19
Tim's work continues. The standalone engine is working and Tim is working on a standard library (it's pretty small so far). Lua can't yet call templates. There will be two ways of passing text (Tim will post to wikitech-l later about it). Parser integration features are remaining, and Tim may ask WMF's Features team for help. We'd like to give people a sandbox/console feature so people can play with it (this would be a CodeEditor feature request).

The Lua timeline is part of the site performance timeline. We aim for Scribunto and its Lua engine to start running on a small, simple test wiki in Labs in May, so other people can start to try it out. Then the aim is to get feature complete, deploy to mediawiki.org, leave it there a few months to look for technical problems and to discuss it with the community, and only later deploy to all other wikis. Per the Goals timeline, it will be early 2013 by the time of rollout to WMF sites.

To help prepare for this, Tim will lead tutorial sessions at Berlin Hackathon 2012. There will be an intro to programming in Lua (for people who have programmed in other languages before) and an intro to programming for people who have only ever made wikitext templates. In both cases, he'll show simple examples of how to convert a wikitext template into Lua. At the end, every participant will have actually converted a real MediaWiki template into Lua.