Semantic MediaWiki and related extensions
README

Development policies and practices | Architecture guide | Technical insights | Testing | Pull request

Objective

This document should help newcomers and developers to navigate around Semantic MediaWiki and its development environment.

The main objective of the Semantic MediaWiki software is to provide "semantic" functions on top of MediaWiki to enable machine-reading of wiki-content and allow structured content to be queried and displayed by means of employing different backends including:

Development policies and practices

Polices

The general policy of the Semantic MediaWiki software and the development thereof is:

Conventions

Some conventions to help developers and the project to maintain a consistent product and helps to create testable components where classes have a smaller footprint and come with a dedicated responsibility.

Best practices

Architecture guide

Technical insights

Testing

The Semantic MediaWiki software alone deploys ~7400 tests (as of July 2019) which are required to pass before changes can be merged into the repository.

Tests are commonly divided into https://github.com/SemanticMediaWiki/SemanticMediaWiki/blob/master/docs/technical/glossary.md "unit" and https://github.com/SemanticMediaWiki/SemanticMediaWiki/blob/master/docs/technical/glossary.md "integration tests" where unit tests represent an isolated unit (or component) to be tested and normally doesn't require a database or other repository connection (e.g. triple store etc.). Integration tests on the other hand provide the means to test the interplay with other components by directly interacting with MediaWiki and its services. For example, about 80% of the CI running time is spend on executing integration tests as they normally run a full integration cycle (parsing, storing, reading, HTML generating etc.).

For an introduction on "How to use `PHPUnit`" and "How to write integration tests using `JSONScript`" see the relevant section in this https://github.com/SemanticMediaWiki/SemanticMediaWiki/blob/master/tests/README.md "document".

Continuous integration (CI)

The project uses Travis-CI to run its tests on different platforms with different services enabled to provide a wide range of environments including MySQL, SQLite, and Postgres.

Create a pull request

Before creating a pull request it is recommended to:

First PR

Preparing a PR

In an event that you encountered a problem, ask or create an issue.

See also


About | General disclaimer | Privacy policy