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[]
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
|
Fandom Products[]
Fandom products may or may not tailor to Warframe Wiki stakeholders.
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[]
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[]
“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:
us-east-1
US East (Virginia)us-west-1
US West (N. California)ca-central-1
Canada (Central)eu-central-1
Europe (Frankfurt)sa-east-1
South America (São Paulo)ap-southeast-1
Asia Pacific (Singapore)
- Regions:
- Storj - decentralized object storage for image assets
- Quay.io - container image registry
- GitLab - code repository
- Other services/tools
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[]
- Google Ad Manager
- JW Player - video player with integrated ad support
- Fandomatic - In-house data collection and advertising platform, see https://fandomatic.com/ for more details
Data Analytics[]
- Python - data analysis
- Jupyter Notebook - data analysis
- Google Analytics[5] - web analytics service
- Google Tag Manager - web tracking
- Snowplow - behavioral data platform
- MediaWiki's included analytics
- Quantcast[5] - web analytics service
- comScore[5] - web analytics service
- LiveRamp's Authenticated Traffic Solution[5] - anonymous audience tracking/authentication service without third-party cookies or mobile identifiers (i.e. anonymous data collection to target specific audiences)
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[]
- Nginx - web server
- Amazon Web Services[7]
- Amazon EC2 - virtual machines
- Amazon S3 - object storage[8]
- AWS Lambda - serverless computing
- Amazon Redshift - data warehouse
- Amazon EMR - cloud big data platform
- Amazon Virtual Private Cloud
- AWS Identity and Access Management - permissions manager for AWS services
- AWS SageMaker - machine learning platform for MLOps
- Amazon CloudWatch - monitoring
- Google Cloud Platform
- Firebase - mobile and web development platform
- Terraform - infrastructure as code for cloud management and automation
- Consul - service mesh network, works with Terraform to facilitate communication between cloud services
- Vault - management of secrets, tokens, API keys, and other sensitive data
- Envoy - proxy for services that are built on a distributed cloud architecture
Continuous Integration and Deployment[]
- GitHub - code repository
- Git - version control
- Jenkins - build, test, and deployment
- Kubernetes - deployment automation
- Docker - containerization
- Prometheus - event monitoring and alert system
Design[]
- Adobe Photoshop
- Adobe Illustrator
- Storybook.js[9] - UI development, testing, and documentation
Internationalization and Localization[]
Project Management[]
- Jira - ticket management and issue tracker
- Confluence - wiki platform for internal documentation and knowledge sharing
Communication[]
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[]
- Validately by UserZoom - Platform for UX testing and collecting user feedback[10]
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
- OggPlayer - single button audio player
- ReferencePopups - reference popup widget
- Discord - Discord widget on sidebar
- ProfileTags - user tag management on User namespace
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[]
- I18n-js - internationalization for JS scripts
- I18n - internationalization for Lua scripts
- Translation matrices on Special:BlankPage/I18nEdit
- Independent sister wikis
- Public Export endpoint
Project Management[]
- In Project/WARFRAME Wiki namespace. See WARFRAME Wiki:Projects.
Communication[]
- Discord
- On the wiki via article comments and talk pages
Media[]
- GIMP - image manipulation
- FFmpeg - command line utility for video and audio manipulation and conversion
- Blender - video editing
- Audacity - audio editor
- Screenshot capture programs - in-game and Steam's screenshot capture
- FontForge - font editor
APIs[]
- Public Export endpoint
- World State endpoint
- warframestat.us API
- Internet Archive APIs
- MediaWiki Action API
Text Editors[]
- Source editor - default source wikitext editor
- VisualEditor - WYSIWYG wikitext editor
- Visual Studio Code - source code and text editor
- Notepad++ - source code and text editor
- Sublime Text - source code and text editor
- Replit - online IDE for Lua snippets and sandbox
- CodeMirror - web-based text editor used by MediaWiki's source editor on Fandom
- https://regex101.com/ - RegEx editor and tester
- Cyrilex - RegEx tester and visualizer
- https://latexeditor.lagrida.com/ - WYSIWYG LaTeX editor
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[]
- ↑ (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.".
- ↑ 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.".
- ↑ (2022, July 18). Manual:MediaWiki architecture. Wikimedia Foundation. Accessed 2022-08-09. Archived from the original on 2022-08-09.
- ↑ (2022). Senior iOS Software Engineer. Fandom. Accessed 2022-08-10. Archived from the original on 2022-08-10.
- ↑ 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.
- ↑ 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.
- ↑ (2022). Staff Machine Learning Engineer. Fandom. Accessed 2022-08-10. Archived from the original on 2022-08-10.
- ↑ (2022, April 4). Statistics. Fandom. Archived from the original on 2022-04-04. Database dumps are downloaded from s3.amazonaws.com.
- ↑ https://fandomdesignsystem.com/?path=/story/introduction--page
- ↑ 2022-08-23 Mobile Theme Designer design feedback sessions
- Pudełko, Katarzyna (2022, January 12). Working @Fandom.com: Ad Engineering. Medium. Accessed 2022-03-12. Archived from the original on 2022-03-12.
- Kowalczyk, Bart (2021, August 31). Working @Fandom.com: SiteX. Medium. Accessed 2022-03-12. Archived from the original on 2022-03-12.
- User:JacekThePie2 (2022, October 3). Working @Fandom.com: Data Engineering. Fandom. Accessed 2022-11-01. Archived from the original on 2022-11-01.
- Będziechowska, Julia (2023, November 27). Deep Learning Models in Production - Julia Będziechowska | WiMLDS Poznań 20th meetup, Fandom Office. YouTube. Archived from the original on 2024-02-24.
- Special:Version