Extension:Scribunto/Deployment priorities

This list is completely unofficial, but it reflects my current thoughts about what the priorities are prior to widespread deployment of Scribunto/Lua to Wikimedia wikis.

Must have

 * Support for Lua in mwlib (Collection extension)
 * (39610) Scribunto should support global module invocations

Should have

 * (39605) Auto-categorize Scribunto module pages that contain errors
 * (39606) Auto-categorize pages containing script errors from Scribunto module invocations
 * → ok
 * (39646) Scribunto needs sane Unicode string support
 * Can use a pure-Lua UTF-8 decoder, like the one in require('luabit/utf8.lua')
 * → mw.ustring allows to treat UTF-8 strings
 * with support for at least  and   formats; and
 * 280 thousand pages on the English Wikipedia use its w:en:Template:Birth date and age template, and they all expect to be able to obtain the current date in a broken down form so that they can do calendar arithmetic.
 * Other templates also use the current date and time. See w:en:Template:Indian population clock for example.
 * A Lua program should be able to obtain everything that non-Scribunto templates can obtain through.
 * → "*t" and "!*t" works. Moreover mw.language allows to get localized object to have local time (and not server local time)
 * Lots of English Wikipedia templates have default title to name of current page semantics.
 * Some templates have special behavior depending on the fact that name=title or not.
 * → mw.title included. mw.title.getCurrentTitle is a table with lot of data related to current page (including title)
 * and
 * Lots of English Wikipedia maintenance templates effectively do the  trick.
 * Non maintenance templates use this to prevent including article categories in other namespaces (i.e. docs or talk pages).
 * → mw.title included. Same than page title.
 * Of course, these can be done in Lua. But these encoders are used frequently.  The English Wikipedia's citation templates need to URL encode COinS data, for example.  A C implementation would be faster than a Lua one.
 * → mw.uri library does this stuff.
 * Same as the encoders above. This is used a lot.
 * → same
 * and
 * Navigation boxes on the English Wikipedia need these for their "v&middot;d&middot;e" links.
 * → same
 * and
 * → mw.title + mw.uri should do the work.
 * An  equivalent.
 * The English Wikipedia uses this in templates as diverse as w:en:Template:infobox country and w:en:Template:article for deletion/dated.
 * → mw.title.new allows to create titles for any page, and to test if it exists or not.
 * the string library is broken on strings that come from template parameters if they include some tags (i.e. &lt;nowiki> and &lt;pre>). string functions act as if they can only see the special encoding of the first tag (example: passing " my string  " to a template is see by the module as a 39 bytes length string (whatever the string content), which is the length of the encoded "&lt;pre>" tag. This also prevent string functions to search or modify the "real" string content. See bug report
 * The English Wikipedia uses this in templates as diverse as w:en:Template:infobox country and w:en:Template:article for deletion/dated.
 * → mw.title.new allows to create titles for any page, and to test if it exists or not.
 * the string library is broken on strings that come from template parameters if they include some tags (i.e. &lt;nowiki> and &lt;pre>). string functions act as if they can only see the special encoding of the first tag (example: passing " my string  " to a template is see by the module as a 39 bytes length string (whatever the string content), which is the length of the encoded "&lt;pre>" tag. This also prevent string functions to search or modify the "real" string content. See bug report

Can have

 * (39609) Limit scope of title-based syntax highlighting
 * → done. Subpage /doc is treated as a documentation page, automaticaly included at the begining of module page. It also allows to add categories.

Won't have

 * Speed problems!

Deployment following
These dates can be later than the true ones, because they are followed by final users.