calamares/CONTRIBUTING.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

214 lines
7.7 KiB
Markdown
Raw Normal View History

2020-09-30 10:53:04 +02:00
<!-- SPDX-FileCopyrightText: no
SPDX-License-Identifier: CC0-1.0
-->
# Contributing to Calamares
2020-11-18 13:22:48 +01:00
Welcome to Calamares! We're happy that you would like to add
something to Calamares. This contribution guide should help you
get started. The guide is not exhaustive: most of it points
to other documents that you will need.
## Code of Conduct
The Calamares community -- of developers, translators, and downstream (distro) users --
aims to be courteous, professional, and inclusive. Harrassment, discriminatory
statements and abuse are not tolerated. In general, we apply the
[KDE Code of Conduct](https://www.kde.org/code-of-conduct/) and the
[GNOME Code of Conduct](https://wiki.gnome.org/Foundation/CodeOfConduct) (the
rules of decent behavior in both communities are pretty much the same).
> See the [CoC section on the wiki](https://github.com/calamares/calamares/wiki#code-of-conduct)
> for a longer text. To report a problem, please contact the maintainer,
> Adriaan de Groot, or the KDE Community Working Group.
## Join the Conversation
GitHub Issues are **one** place for discussing Calamares if there are concrete
problems or a new feature to discuss.
Issues are not a help channel.
Visit Matrix for help with configuration or compilation.
2020-11-18 13:22:48 +01:00
2021-06-15 11:29:49 +02:00
Regular Calamares development chit-chat happens in a [Matrix](https://matrix.org/)
room, `#calamares:kde.org`. Responsiveness is best during the day
in Europe, but feel free to idle.
2021-06-15 11:29:49 +02:00
Matrix is persistent, and we'll see your message eventually.
2020-11-18 13:22:48 +01:00
**Note:** You need an account to access Matrix. It doesn't have to be a KDE account,
it can be on any Matrix homeserver.
2021-05-19 15:21:05 +02:00
* [![Join us on Matrix](https://img.shields.io/badge/Matrix-%23calamares:kde.org-blue)](https://webchat.kde.org/#/room/%23calamares:kde.org)
2020-11-18 13:22:48 +01:00
## General Guidelines
Pull Requests are welcome!
It is often a good idea to start a Pull Request early, with just work-in-progress,
so that the overall approach can be discussed before you put a lot of work
into something. Or file an issue describing what you would like to do.
If you are writing code, stick to the existing coding style and apply
the coding-style tool before you commit. It's not my favorite style,
but at least all of Calamares is consistent and the tool helps it
stay that way.
If you are writing documentation, use *en_US* spelling.
If you are doing cool stuff, let us know (on Matrix or through issues).
2020-11-18 13:22:48 +01:00
**Do** fork Calamares to try new things, **don't** keep your fork to
yourself, **do** upstream things as much as you can. When you make cool
new things, it's best for the whole Calamares-using-community
to build new things that are configurable and applicable to other
distributions than your own. So keep other folk in mind. There is
also the [extensions](https://github.com/calamares/calamares-extensions)
repository for somewhat-more-specialized modules and examples.
### Commit Messages
Please try to use `[module] description` as the first line of a commit
message. Follow regular git commit-message recommendations: write what
and why -- especially the **why** for a change. When modifying a module
under `src/modules/`, write the name of the module, e.g. this made-up example:
```
[packages] Enable dnf5 as package-manager
DNF version 5 prefers the name 'dnf5' to avoid confusion with
older DNF, even when a compatibility name 'dnf' is available.
```
It's OK to list multiple modules; don't bother listing a module
and its QML variant separately.
Use `[libcalamares]`, `[libcalamaresui]` and `[calamares]` for changes
in those directories as appropriate.
There are various exceptions, and metadata files follow other conventions.
When in doubt, use `git log` to see what kind of **previous** commit messages
have been used for a given file.
### Attribution
Remember that your git commit contains your git username. This becomes part
of the public information in the Calamares repository. There is no way
to change this later.
When you contribute a PR, feel free to add a few lines in the `CHANGES`
file, which describes each release. Just add them to the section
for the next release, and it can be sorted out when the PR is merged.
Remember to add your preferred name in the list of contributors for
the release -- names are sorted alphabetically and case-insensitive.
If you don't add anything to `CHANGES`, don't worry, something will
probably be added later in a `Changes: credits` commit.
> Please do **not** update the `AUTHORS` file. This is done automatically,
> but irregularly, based on the git usernames in commits (and some social
> knowledge about Calamares contributors).
2020-11-18 13:22:48 +01:00
## Building Calamares
Up to date
[building-Calamares](https://github.com/calamares/calamares/wiki/Develop-Guide)
instructions are on the wiki.
### Simple Build in Docker
You may have success with the Docker images that the CI system uses.
Pick one (or more) of these images which are also used in CI:
- `docker pull docker://opensuse/tumbleweed`
- `docker pull kdeneon/plasma:user`
- `docker pull fedora:40`
See the `nightly-*.yml` files in directory `.github/workflows/` for
the full list of Docker images that are used in CI.
Then start a container with the right image, from the root of Calamares
source checkout. Start with this command and substitute `opensuse/tumbleweed`
or `kdeneon/plasma:user` for the `$IMAGE` part.
```
docker run -ti \
--tmpfs /build:rw,exec \
--user 0:0 \
-e DISPLAY=:0 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v .:/src \
$IMAGE \
bash
```
This starts a container with the chosen image with a temporary build
directory in `/build` and the Calamaressources mounted as `/src`.
Run the script to install dependencies: you could use `deploycala.py`
or one of the shell scripts in `ci/` to install the right
dependencies for the image (in this example, for openSUSE and Qt6).
- `cd /src`
- `./ci/deps-opensuse-qt6.sh`
Then run CMake (add any CMake options you like at the end) and ninja.
There is a script `ci/build.sh` that does this, too (without options).
- `cmake -S /src -B /build -G Ninja`
- `ninja -C /build`
To run Calamares inside the container, or e.g. `loadmodule` to test
individual modules, you may need to configure X authentication; a
simple and insecure way of doing that is to run `xhost +` in the host
environment of the Docker containers.
### Dependencies for Calamares 3.3
> The dependencies for Calamares 3.3 reflect "resonably current"
> software as of September 2023. For Calamares 3.2 dependencies,
> which are 2017-era, see the `CONTRIBUTING` file in that branch.
2020-09-30 10:53:04 +02:00
Main:
* Compiler with C++17 support
* CMake >= 3.16
2020-09-30 10:53:04 +02:00
* yaml-cpp >= 0.5.1
* Qt >= 5.15 or Qt >= 6.5
2023-09-10 21:40:37 +02:00
* KDE Frameworks KCoreAddons >= 5.78
* KDE extra-cmake-modules >= 5.78 (recommended; required for some modules;
2020-09-30 10:53:04 +02:00
required for some tests)
* Python >= 3.6 (required for some modules)
2023-09-12 10:14:03 +02:00
* Boost.Python >= 1.72.0 (required for some modules if WITH_PYBIND11 is OFF)
2020-09-30 10:53:04 +02:00
Individual modules may have their own requirements;
these are listed in CMake output.
Particular requirements (not complete):
* *fsresizer* KPMCore >= 20.04
* *partition* KPMCore >= 20.04
2020-09-30 10:53:04 +02:00
* *users* LibPWQuality (optional)
2020-11-18 13:22:48 +01:00
## Configuring and Deploying Calamares
[Deployment](https://github.com/calamares/calamares/wiki/Deploy-Guide)
instructions are on the wiki.
## Translating Calamares
Calamares translations are done on Transifex.
The [translator's guide](https://github.com/calamares/calamares/wiki/Translate-Guide)
on the wiki explains how to get involved there.
## Testing Calamares
There is a [testing guide](https://github.com/calamares/calamares/wiki/Test-Guide)
on the wiki. It is possible to test most parts of Calamares in isolation,
but the real proof of the pudding comes with an actual installation
of *some* distro using Calamares.
The UI components should get some specific usability testing instructions soon.
2020-09-30 10:53:04 +02:00