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.