Some days ago we officially launched YaK, which is our open source tool for deploying infrastructures everywhere. Because the core component of Yak is open source, can you contribute if you want. Contributions are more than welcome, the project is hosted on GitLab. If you are already familiar with Git, forks and merge requests there is not much you can learn here. If you are not, then this post is for you.
The first step you need to complete is to “Fork” the official project:

It is totally up to you if you go for a private or public fork. In this case I am forking into my own namespace on GitLab:

Once you’re done, you have a copy of the official repository:

At this point you could already go ahead and start to do modifications directly in your browser:

I prefer to clone the repository to my workstation. There I have all the tools I need and I don’t need connectivity to GitLab all the time:

dwe@ltdwe:/var/tmp$ git clone [email protected]:daniel.westermann/yak.git
Cloning into 'yak'...
remote: Enumerating objects: 1846, done.
remote: Counting objects: 100% (144/144), done.
remote: Compressing objects: 100% (62/62), done.
remote: Total 1846 (delta 63), reused 144 (delta 63), pack-reused 1702
Receiving objects: 100% (1846/1846), 738.03 KiB | 2.02 MiB/s, done.
Resolving deltas: 100% (955/955), done.
dwe@ltdwe:/var/tmp$ cd yak/
dwe@ltdwe:/var/tmp/yak$ ls
ansible.cfg collections components configuration COPYING Dockerfile docs install inventory licenses manifest.yml README.md servers set_os_headers.sh yak_dev_repos.sh
</pre>
If you do not want to create a new fork when the original project is moving forward, you should follow the upstream project:
dwe@ltdwe:/var/tmp/yak$ git remote add upstream https://gitlab.com/yak4all/yak.git
dwe@ltdwe:/var/tmp/yak$ git fetch upstream
From https://gitlab.com/yak4all/yak
* [new branch] 24-extend-the-role-artifacts-to-support-any-further-artifact-providers -> upstream/24-extend-the-role-artifacts-to-support-any-further-artifact-providers
* [new branch] devel -> upstream/devel
* [new branch] main -> upstream/main
Let’s do a small contribution, commit that, and push to our main repository:
dwe@ltdwe:/var/tmp/yak$ sed -i 's/below parameter/the parametere below/g' docs/setup.md
dwe@ltdwe:/var/tmp/yak$ git commit -m "Fix working" -a
[main fdea959] Fix working
1 file changed, 1 insertion(+), 1 deletion(-)
dwe@ltdwe:/var/tmp/yak$ git push
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 388 bytes | 388.00 KiB/s, done.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
To gitlab.com:daniel.westermann/yak.git
b55134c..fdea959 main -> main
Now it is time to create a merge request on the original project:

What we ask you, is to merge against the “devel” branch:


That’s it. Now you have to wait until someone with appropriate permissions does the merge:

Have fun with your contributions.