Welcome to C4process. A website dedicated to promote and discuss the Collective Code Construction Contract (C4).
Not to be confused with the C4 Model for visualising software architecture.
Why does this site exist?
To promote the Collective Code Construction Contract (C4). To research its use in practice, not limited to Open Source/Free Software projects, but as part of an exploration to transpose the principles of the C4 process to other fields of community-led behaviours and actions.
The C4 Process from a user/contributor perspective
The Collective Code Construction Contract (C4) is an evolution of the github.com Fork + Pull Model, aimed at providing an optimal collaboration model for free software projects. This site explores its feasability also beyond those.
The process relies heavily on using a software forge like Github, Gitlab, Codeberg, Forgejo or other, similar projects. To make things easy and accessible, also to newbies and people that just want to share one single change/patch, the typical workflow is mainly just:
- State a clear problem in an issue you open at the upstream repository of the project.
- Ideally propose a solution too
- Start working on the changes needed using the Fork And Pull workflow
- Follow the discussion in the issue to see if you need to make changes to your proposed solution
- Once satisfied with the solution, submit the changes as a Pull Request
- See if the Pull Request gets merged or if you need to make more changes, fix mistakes and oopsies.
- After the merge and after agreeing the problem is solved, close the issue
Rinse and repeat.
The “Fork And Pull” Workflow explained
Understanding and using the “Fork & Pull” model is essential for the C4 process. It mainly means to use Pull Requests to propose changes and bugfixes.
Reduced to its simplest form, it goes like this:
- Fork the upstream at their forge of choice. (I prefer Forgejo :)
- Git clone that fork to your local machine
- Work on something and commit your changes to your local clone/fork
- git push your changes to your fork at the forge
- Use the forge to create a pull request that you send upstream
- Wait for upstream to merge, but also be ready to make changes, depending on feedback from upstream
Rinse and repeat.
Roles in the C4 process
The C4 process typically distinguishes between 3 main groups of people (and aims to fill at least two of these groups with as many (and diverse) people as possible:
Contributors These are people sharing Pull Requests as described above with the project. They can be regulars. They can be there for just on single Problem/Solution topic. They do NOT commit code straight to the repository. That’s the job of the
Maintainers Here we find the people that merge pull requests. They should only check (not judge!) pull requests for formal correctness and merge as fast as possible, because we want code, not discussions :)
Administrators Watch over the project health. Propose (and decide) on who should be promoted to Maintainer. They also have the important task to say NO with ultimate authority. NO can be said to (aspiring) Contributors who cause disturbances in the community. The Administrator(s) will discuss with the maintainers if they something going against the principles and interests of the project.
Dive deeper
The best introduction to the Why and How of the C4 process is the annotated walkthrough that you can find at Chapter 4 of the book “Social Architecture”, which is a recommended read to understand more about the history and philosophy of C4.
You can find the repositories and source code of this site at the C4 process organisation at Codeberg. Feel free to join us as contributor! Feel free to join the discussion in the discuss repository!
License — GPLv3 or later
The content of this website and the C4 process RFC are licensed under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
Internet of People
This site is by people for people. To share, learn and implement solutions. It has no trackers, no cookies, no ads. It’s a project that focuses on solutions, not problems.
Who builds this site?
Right now (2024-12-20) it’s just me, Jan Wildeboer. I am an Open Source/Free Software veteran with a clear focus on positive progress in the communities that surround me — be it virtual or real. My main interests are in finding pragmatic, easy to implement ways of creating communities that help to change a lot of small things for the better. My daytime job is Red Hat EMEA Evangelist. I am a long time member of the United Transnational Republics and work since many years on fully decentralised Identity Ownership, which I think is needed to establish a global democracy. My superpower is patience combined with listening and learning.
I am looking forward to have this website being run by a community of people from all over many places and me reducing myself to keeping it working and causing change. I am not relevant. Ideas are bigger than people and ego.