# 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

# Communication and integration

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

# Development concepts

# Build, test, deploy

Common tool chains, and patterns.
TBD.

# Configurability

Aim of having white label services, for generic Wikibase usage.
TBD.