Project:Software

From lgbtDB
Jump to navigation Jump to search

Most of the software stack utilized in can be found at Version page.

Main Stack

MediaWiki

MediaWiki is the core wiki engine upon which lgbtDB runs. It provides the page editing, namespaces, revision history, user accounts, and wiki syntax that make collaborative editing possible. lgbtDB uses MediaWiki to allow human editors to contribute text, formatting, templates, and to manage access control. Documentation for MediaWiki can be found here.

PHP

PHP is the server-side scripting language in which MediaWiki (and many of its extensions) are implemented. lgbtDB depends on PHP to parse requests, run extension hooks, render HTML, and manage the logic of the wiki system. The version and configuration of PHP (e.g. memory limits, module enablement) determine performance and compatibility with extensions. The PHP manual provides information on the various functions, configuration, and information on version-specific behavior.

MariaDB

MariaDB is the relational database engine used by lgbtDB to store pages, revisions, user data, extension tables, and structured data metadata. It is a drop-in replacement for MySQL, commonly used in wiki deployments for its performance and active development. The database stores the core content and metadata that MediaWiki and Wikibase access.

ICU

The ICU (International Components for Unicode) library is used by MediaWiki (and other software) to provide Unicode and locale-sensitive operations (such as string normalization, collation, text segmentation, case folding, and locale-specific formatting). lgbtDB needs ICU so that multilingual labels, sorting, case-insensitive matching, and internationalization behave correctly.

Pygments

Pygments is a syntax-highlighting library (written in Python) used by MediaWiki's SyntaxHighlight extension to render source code blocks (e.g. in <syntaxhighlight> tags) with color and formatting. lgbtDB includes Pygments so that code snippets, templates, or example scripts embedded in pages are rendered attractively.

Lua

MediaWiki supports running Lua modules via the Scribunto extension; Lua code is used in many templates to compute values, parse strings, or generate dynamic output. lgbtDB uses Lua modules to encapsulate logic that would be cumbersome in wikitext templates (for example, generating labels, formatting data, conditional checks). This reduces duplication and increases maintainability of templates.

LilyPond

LilyPond is a music engraving program that converts textual music notation into beautifully formatted sheet music (PDF, SVG). lgbtDB rarely, but occasionally, includes musical notation (e.g. representing hymn tunes, queer musical works, or notation embedded in pages) and LilyPond allows those to be rendered cleanly. It may be invoked via extensions or external rendering pipelines.

Elasticsearch

Elasticsearch is a powerful full-text search and indexing engine. lgbtDB uses Elasticsearch (via MediaWiki's CirrusSearch, Elastica, WikibaseCirrusSearch, or similar) to provide fast, full-text search across pages, labels, descriptions, and structured data. Without Elasticsearch, default wiki search is much slower and less capable of ranking results, filtering, or scaling.

Installed Extensions

Wikibase

Wikibase is the extension that turns a MediaWiki site into a structured data repository, allowing lgbtDB to store items, properties, statements, qualifiers, references, and to support semantic queries. It is the foundational software enabling lgbtDB to act like a "mini-Wikidata" for LGBTQIA+ topics, enabling structured data, SPARQL queries, reconciliation, etc.

Hosting

Wikibase.Cloud

lgbtDB is hosted by Wikibase.Cloud, a managed hosting platform specialized for Wikibase instances. It provides maintenance, backups, updates, and infrastructure so that lgbtDB need not manage servers, installation, or downtime logistics. Wikibase.Cloud is free, open-source, and GDPR-compliant.

External Software Components

Bots

Many of the automated scripts and bots that add, update, or maintain data on lgbtDB are implemented in Python and leverage the WikibaseIntegrator library. This library wraps the Wikibase and MediaWiki APIs and SPARQL endpoints to allow programmatic creation, modification, and querying of items, properties, and statements. lgbtDB uses it for bulk imports, synchronization, bot maintenance tasks, and data validation.