WARFRAME Wiki
Advertisement
WARFRAME Wiki

Research on this wiki's solution stack.

Last updated: Mon, 27 May 2024 23:25:42 +0000 (UTC) by User:Cephalon Scientia

Diagrams[]

Wiki Architecture[]

WARFRAME Wiki's Architecture
Layer Primary languages Programs and software
Frontend JavaScript Outside of the wiki (third-party scripts/scrapers/bots/APIs)
Wiki's JS scripts Dev wiki's JS scripts
(through MediaWiki:ImportJS)
Fandom JS scripts Scripts loaded by ResourceLoader
(e.g. jQuery)
Source editor and VisualEditor
(wikitext editors)
HTML Article content as presented to readers
Wikitext Article content source code Templates Magic words and parser function calls
CSS Wiki's MediaWiki:Common.css Fandom Theme Designer Fandom Design System
Backend Lua
(Scribunto subset)
Wiki's Lua modules Fandom Dev wiki's Lua modules Ported Lua modules from external sources Libraries included w/ Scribunto
(e.g. mw.site, mw.html, mw.text)
PHP MediaWiki engine
Wikitext to HTML parser
Fandom MW extensions
(see Special:Version)
Third-party MW extensions Extension:Scribunto
MediaWiki Action API
Fandom's Discussions API
See DiscussionPost and DiscussionThread controllers

Fandom Products[]

Fandom products may or may not tailor to Warframe Wiki stakeholders.

Fandom Products
Sector Products/Services
Technology Fandom wikis, Gamepedia wikis, proprietary MediaWiki extensions, Fandom Mobile App
Data research/Big Data Fandomatic, FanDNA[1][2]
Gaming Cortex, GameSpot (GameFAQs, Giant Bomb)
Marketing Fandomatic
Media and Entertainment Twitch channel, Metacritic, in-house news stories, Screen Junkies YouTube channel, TV Guide
Retail Fanatical

MediaWiki Architecture[]

General MediaWiki Architecture[3]
User layer Web browser
Network layer Varnish
Apache webserver
Logic layer MediaWiki's PHP scripts
PHP
Data layer File system MySQL or SQL-based database (program and content) Caching system

Sample Production-Level Architecture[]

Photo-4
“It's taking longer than I calculated.”
This page is actively being worked on and may not be completely correct. Please assist in making this page accurate. See WARFRAME Wiki:Research on ways to perform research on this game. Click here to add more info.

If you were to host your own MediaWiki application on the cloud, here are the sample pieces that would make up the architecture:

  • Microservices architecture
    • MediaWiki - web application
    • Nginx - webserver and reverse proxy
    • Redis - caching
    • MariaDB - database
    • ElasticSearch - search engine
    • Podman - app containerization
    • Kubernetes - container orchestration and monitoring
  • Hosting services
    • Cloudflare - content delivery network
    • AWS - cloud computing
      • Regions:
        1. us-east-1 US East (Virginia)
        2. us-west-1 US West (N. California)
        3. ca-central-1 Canada (Central)
        4. eu-central-1 Europe (Frankfurt)
        5. sa-east-1 South America (São Paulo)
        6. ap-southeast-1 Asia Pacific (Singapore)
    • Storj - decentralized object storage for image assets
    • Quay.io - container image registry
    • GitLab - code repository
  • Other services/tools
    • Plausible - privacy-focused web analytics
    • GitLab CI/CD - continuous integration and delivery
    • Helm - Kubernetes package manager

Fandom[]

Code and Frameworks[]

  • JavaScript - frontend
  • TypeScript - frontend
  • React - frontend framework
  • Vue - frontend framework
  • Sass - CSS language for styling
  • Node.js - backend JS runtime environment
  • Webpack - JS module bundler
  • Babel - JS transcompiler and polyfill
  • PHP - backend for MediaWiki and its extensions
  • Java - backend for proprietary microservices
  • Scala - backend, can be compiled to Java bytecode
  • Swift - backend for iOS applications[4]
  • Objective-C - backend for iOS applications
  • iOS SDK
  • MediaWiki - wiki engine

JS Libraries[]

These can be found via the browser developer console's JS debugger:

  • BlockAdBlock - Anti-adblock
  • core-js - core JS library
  • RxJS - reactive extensions library for asynchronous event driven functions
  • js-cookie - cookies API
  • reflect-metadata - metadata reflection API
  • Redux - predictable state container for consistent code behavior regardless of environment
  • IDB.js - IndexedDB API wrapper
  • Lodash - utility library for arrays, numbers, objects, strings
  • TrackJS - error logging utility
  • deepmerge - recursive merging of objects
  • Immer - immutable data structures
  • LazySizes - image lazyLoader
  • post-quecast - in-house API for communicating between iframes and windows through callbacks

Advertisements and Marketing[]

Data Analytics[]

Data Storage[]

  • MySQL - SQL relational database system for MediaWiki
  • Redis - in-memory key-value database as a caching layer for frequently accessed data
  • RabbitMQ - message broker to control flow of data
  • MongoDB - NoSQL database system
  • Mcrouter - caching layer[6]

Content Delivery Networks[]

Hosting and Cloud Computing[]

Continuous Integration and Deployment[]

Design[]

Internationalization and Localization[]

Project Management[]

  • Jira - ticket management and issue tracker
  • Confluence - wiki platform for internal documentation and knowledge sharing

Communication[]

  • Slack - IRC and instant messaging
  • Zoom - for video conferencing for meetings

Mobile Development[]

  • Swift - programming language for iOS development
  • Xcode - Apple's IDE for iOS development
  • Kotlin - programming language for developing on Android
  • Android Jetpack - libraries for Android development

Customer Support[]

  • Zendesk - platform for managing customer support tickets

APIs[]

  • Mailgun - transactional email API for scalable email delivery
  • WIREWAX - interactive video players via an iframe player API

User Experience Testing and Feedback[]

Wiki[]

Code and Frameworks[]

  • Lua - faux backend for scripts that are hooked to MediaWiki's wikitext parser
  • Extension:Scribunto - embedding Lua scripts in Module namespace, running scripts on articles via PHP wikitext parser, additional and modified Lua base libraries
  • Extension:ParserFunctions - collection of simple parser functions to be called on articles
  • Extension:DynamicPageList3 - query tool for articles with specific properties
  • Module:Math - Lua Math library extension
  • Module:Table - Lua Table library extension
  • JavaScript - frontend
  • Core JS modules loaded by ResourceLoader
    • mediawiki - base module; contains interface to MediaWiki's Action API, URL manipulation, article properties, local web storage, loading dependencies, wiki configuration values, etc.
    • jQuery - DOM manipulation, internationalization, and some user interactivity
    • OOUI - JS library for responsive web UI and applications
  • Tooltips - wiki tooltip JS module
  • I18n-js - internationalization for JS scripts
  • I18n - internationalization for Lua scripts
  • Unified Community Platform (UCP) - Fandom's wiki platform running on MediaWiki
  • json.lua by Tyler Neylon for debugging Lua 'database' scripts in browser console

Wiki Enhancements[]

Main article: MediaWiki:ImportJS

Data Storage[]

  • NoSQL-like Lua tables in Module namespace
  • JSON files
  • File management system that comes with MediaWiki (e.g. File namespace)

Continuous Integration and Deployment[]

  • Module namespace - code repository
  • MediaWiki - version control
  • Testharness - test suite

Internationalization and Localization[]

Project Management[]

Communication[]

  • Discord
  • On the wiki via article comments and talk pages

Media[]

APIs[]

Text Editors[]

Edit Automation and Tools[]

  • AutoWikiBrowser - editing browser for automation
  • Pywikibot - collection of Python libraries and scripts for automation
  • Google Translate - translation tool for simple words and phrases
  • Descript - audio transcription for in-game dialogue
  • MATLAB - programming language and environment for statistical simulations and visualizations
  • Matplotlib - Python plotting library for visualizations
  • Web development tools - inspect element in Google Chrome, Firefox, and Microsoft Edge for debugging

Media Creation and Editing[]

  • Inkscape - vector graphics editor
  • GIMP - raster graphics editor
  • FontForge - font editor
  • Audacity - audio editor
  • ffmpeg - command line tools for converting audio and video formats
  • Blender - computer graphics software used for video editing
  • VLC media player - video and media player
  • Desmos - online graphing calculator for math visualizations
  • Graphviz - Graph Visualization Software for building visualizations

References[]

  1. (n.d.) . Fandom Mediakit. Fandom. Accessed 2022-11-30. Archived from the original on 2022-11-30. "FanDNA is Fandom’s proprietary entertainment research service that analyzes the behavior of Fandom’s 315 million monthly users to help entertainment brands understand the complex forces that drive fan behavior.".
  2. Maas, Jennifer (2023, April 11). Which Video Games Should Streamers Adapt? New Data Proposes Netflix ‘Fortnite’ Series, ‘God of War’ at Apple Over Amazon and More (EXCLUSIVE). Variety. Accessed 2023-04-15. Archived from the original on 2023-04-15. Interview with Fandom CMO Stephanie Fried and sample business insights based on FanDNA, "These insights are based on Fandom’s first-party platform, cross-visitation data pulled using its proprietary data platform FanDNA, and tracks Fandom’s top 10 gaming wikis for fans of each streaming platform.".
  3. (2022, July 18). Manual:MediaWiki architecture. Wikimedia Foundation. Accessed 2022-08-09. Archived from the original on 2022-08-09.
  4. (2022). Senior iOS Software Engineer. Fandom. Accessed 2022-08-10. Archived from the original on 2022-08-10.
  5. 5.0 5.1 5.2 5.3 (2021, November 10). Privacy Policy. Fandom. Accessed 2022-05-22. Archived from the original on 2022-05-21.
  6. User:Mech.wikia (2022, October 3). Replacing memcached proxy - a bumpy road from Twemproxy to Mcrouter. Accessed 2022-11-01. Archived from the original on 2022-11-01. Previously used twemproxy.
  7. (2022). Staff Machine Learning Engineer. Fandom. Accessed 2022-08-10. Archived from the original on 2022-08-10.
  8. (2022, April 4). Statistics. Fandom. Archived from the original on 2022-04-04. Database dumps are downloaded from s3.amazonaws.com.
  9. https://fandomdesignsystem.com/?path=/story/introduction--page
  10. 2022-08-23 Mobile Theme Designer design feedback sessions
Advertisement