===============
Developer Guide
===============
This section of the documentation is designed to assist MCCS developers.
It is organized according to the `Diataxis `_ framework:
The "Tutorial" part covers simple step-by-step instructions to learn
the basics of deploying, testing and contributing to the MCCS software.
The Explanations part provides in-depth information about various
parts of the project. It is rather verbose, but the information
provided is useful for understanding the project and its components.
The third part, "How-to Guides", has a series of practical guides to
accomplish various different tasks.
The Reference part provides more technical information. It currently
contains a list of properties for Tango Devices in ska-low-mccs.
Prerequisites
-------------
There are a few specific prerequisites for developers to be able to
contribute to the MCCS project.
Programming
^^^^^^^^^^^
Underlying the MCCS project is the `Tango `_ framework, which
is integrated using the `PyTango module `_ .
Understanding concepts such as devices, attributes, commands will be very useful for new
developers and the `Tango documentation `_
does an excellent job of covering them.
Tools
^^^^^
MCCS uses a variety of tools to help with development, testing and deployment.
The most important ones are:
- `Poetry `_ for dependency management and packaging.
- `GitLab `_ for version control and CI/CD.
- `Docker `_ for containerization.
- `Helm `_ for managing Kubernetes applications.
There are other tools used in this project (linters, formatters, etc.), but the ones listed above
are the most important for developers to be familiar with.
Additionally, the team uses `K9s `_ for managing Kubernetes clusters,
`VSCode `_ as a code editor (with dev containers), and
`Minikube `_ for running a local Kubernetes cluster. These are
not required, but they appear in the documentation.