Lua scripting

We're working to support Lua as a scripting language for MediaWiki end users, including Wikipedia editors. You can try out the prototype now at http://scribunto.wmflabs.org/.

Rationale
Templates and ParserFunctions were introduced to allow end users of MediaWiki to replicate content easily and build tools using basic logic, effectively turning wikitext into a limited programming language.

However, complex templates have caused performance issues and bottlenecks.

This project aims to make it possible for MediaWiki end-users to use a proper scripting language that will be more powerful and efficient than ad-hoc ParserFunctions-based logic.

See also Scripting, Extension:Scribunto.

The example of Lua's use in World of Warcraft is promising; even novices with no programming experience were able to make large changes to their graphical experiences by quickly learning some Lua.


 * hashar, sumanah, also Minetest (http://minetest.net) has recently implemented a similar system, though it mods the server more than the client, from what I've seen it's driving people to learn Lua so they can add in their ideas, something not possible with C++
 * sumanah: the secret of WoW is that they managed to expose an API which is very easy to understand
 *  hashar: heard of Celestia? It's a planaterium software of sorts. Uses Lua for scripting. When I was in 9th grade, me and (also!) everyone around were able to learn and use it without much of a problem at all.

Roadmap

 * See relevant portions of Roadmap for latest details on this project.

Documents

 * Extension:Scribunto - MediaWiki extension page for this tool
 * User requirements: notes
 * Specifications:
 * Software design document:
 * Test plan:
 * Documentation plan:
 * User interface design docs:
 * Schedule:
 * Task management:
 * Release management plan:
 * Communications plan:
 * Status updates
 * Explanation of why Tim's preferred language is Lua
 * /Meeting_2012-01-25
 * Tutorial on using Lua for MediaWiki templates
 * Extension:Scribunto/Deployment priorities
 * Extension:Scribunto/Brainstorming