This document lists the tools and systems we use for Sivelkiria OS development. | Category | Tool | Justification | | ------ | ------ | ------ | | Primary server operating system | [Ununtu Linux](https://ubuntu.com/) | Free and stable. | | Version control system for source code | [git](https://git-scm.com/) | Industry standard. Provides handy branches and tags model, local history lookup, merge tools, etc. | | git server | [GitLab](https://gitlab.com) | Supports merge requests, CI, markdown docs rendering, branch protection, user management, etc. Has API to integrate with CI or other systems easily. | | CI/build server | [Jenkins](https://jenkins.io/) | Provides many useful modules and views, integrates with GitLab. Able to set job parameters before launching it. Cross-platform. | | Web server | [Nginx + Apache](https://habr.com/ru/post/267721/) | Using Nginx as a frontend and Apache as a backend seems a good option when we have to proxy multiple servers (GitLab, Jenkins, etc.). | | Mail server | TODO | | | DNS server | TODO | | | Task tracker | TODO | [Redmine](https://www.redmine.org/) is a big free project with many options available. GitLab also contains task tracker, but using it seems questionable. | | Version control system | Custom (GitLab + Jenkins + PHP + Database) | Non-typical task can't be easily resolved using standard software. See [this document](interface-tracking.md) for details. | | OS kernel primary language | C++ | Combines C low-level features and OOP support. | | Low level build system | [CMake](https://cmake.org/) | Makes it easy building same code for different platforms while still controlling each compiler's attributes. Generates projects for all popular IDEs. | | High level build system | TODO | Must be cross-platform and easy to maintain. Error control, splitting work into targets, improved log support are mandatory. | | ARM testing VM | QEMU | Open source and free. | | Check code | cppcheck | Show more warnings |