![]() |
Migrate your account | Wiki Discord |
---|
WARFRAME Wiki:Modules
The WARFRAME Wiki relies on many Lua modules to automate content creation at scale to deliver accurate, relevant, and timely information to wiki readers.
Rationale[edit source]
Since WARFRAME is a live-service game with regular updates and hotfixes, there is a need for a up-to-date community-ran repository of knowledge to document the latest information on the game. As software, video games store their game objects as structured data which means that there is a relatively easy way to translate in-game items to more programmatic representation in the form of data with attributes and properties.
Using Lua scripts in the Module namespace, we are able to share a single source of truth of most game objects by storing them on the wiki's Data Stores. This way editors can:
- Deduplicate effort spent editing articles, only needing to edit one place to have all the relevant articles updated with that data
- Reduces the need of external scripts or editing tools like AutoWikiBrowser
- Thus lowers the barrier of entry to mass-editing articles
- Reduces the need of external scripts or editing tools like AutoWikiBrowser
- Maintain content that tend to be repetitive in structure (e.g. wikitables with hundreds of rows)
- Perform data processing and statistical analysis (e.g. data aggregation, probability distributions)
Issues[edit source]
- Lua scripts are ran in a sandboxed environment on the MediaWiki wiki engine, being restricted to 50 mebibytes of memory usage and 7-seconds CPU runtime
- Cannot use web APIs in Lua scripts
- No native version control or DevOps in developing Lua scripts in Module namespace
- No code reviews, CI/CD, code branching, different environments (development, staging, production)
- Have to manually copy code from a test page to production or directly edit production code
- Lack of tooling around developing Lua scripts in a MediaWiki context
- Niche development community
- Hard to create unit tests for code
- Not traditional web development
- No native database query language
- No programmatic CRUD operations in updating data stores without external scripts
- High-level programming may not be as performant as using more lower-level languages (e.g. developing PHP extensions that run on MediaWiki)
- This is an issue that concerns wiki farm infrastructure and software engineering team more than wiki editors/administrators