# Crosscutting Concepts

Crosscutting Concepts

# Domain concepts

You can read more about Wikibase's data model in the Glossary.

# User Experience concepts (UX)

# User Interface

User interfaces which were built prior to 2017 use either OOUI (opens new window) or jQuery UI (opens new window).

There are several applications which are written in Vue (opens new window) and TypeScript (opens new window).
JavaScript and CSS dependencies are managed through npm. Optimization and minification of files is done through Webpack (opens new window).
There is a central Vue components library in development as part of the Wikidata/Wikibase Design System (opens new window). In the future, ideally, all frontend components will be using it.

The project Termbox, which delivers the terms section of an item page on mobile, uses Vue and vue-server-renderer (opens new window) to achieve server side rendering (opens new window).

# Internationalization (i18n)

The system is made usable in international settings in the following ways:

# Security concepts

The development conforms to established security best practices (opens new window).

Security code review is performed by WMF's Security Team (opens new window) for every new feature.

# Architecture and design patterns

Recurring patterns within the system.

# Dispatching

Wikibase, particularly Wikibase Repository and Wikibase Client, make use of a Dynamic Dispatch (opens new window) pattern. This is most notably used for switching internal service implementations based on the type of entity being interacted with.

A few different implementations of the dispatching pattern currently exist, the most notable difference being:

  • Default / fallback implementation available in some implementations
  • Callbacks that act as factory methods passed into dispatching code, rather than concrete implementations (see Wikibase's Topics/EntityTypes (opens new window))
  • Multiple implementations able to be called for a single entity type

# “Under-the-hood” concepts

# Persistency

How / where to store and retrieve data.
TBD

# Process control

TBD

# Communication and integration

How to integrate with other systems, how to communicate (i.e. sync, async, pub-sub…)
TBD

# Exception and error handling

What errors to handle, how to handle exceptional situations.
TBD.

# Parallization and threading

How to parallelize tasks, how to create/spawn/manage processes.
TBD.

# Plausibility checks and validation

i.e. client-side validation, how to verify/check data, input, results.
TBD.

# Business rules

i.e. how to use a rule-engine, how to implement/configure business rules, how to change those…
TBD.

# Batch processing

How to process data in batches (i.e. offline processing).
TBD.

# Reporting

How to create reports, how to gather the required data, how to render the results.
TBD.

# Development concepts

# Build, test, deploy

TBD

# Code generation

TBD

# Migration

TBD

# Configurability

TBD

# Operational concepts

# Administration

TBD

# Management

TBD

# Disaster-Recovery

TBD

# Scaling

TBD

# Clustering

TBD

# Monitoring, Logging

TBD

# High Availability

TBD

# Load balancing

TBD