Illustrated drawing of Amadeus Maxmimilian StadlerIllustrated drawing of Amadeus Maxmimilian Stadler

Amadeus Stadler

Published August 18, 2021

Just like a more traditional content management system, Mattrbld allows you to collaborate on content with colleagues, team members, friends and more. This article will provide you with an overview of how collaboration works in Mattrbld, while the related sub-articles will go into more detail on specific aspects such as users, roles and permissions.

Core Concept

Since Mattrbld is based on Git, its collaboration model also follows the decentralised collaboration model of Git. Every member of a project has their own copy of the entire project on their local device and can work on it regardless of their internet connection.

When changes are synced, typically when first opening a project or syncing local changes back to the central repository, Mattrbld will first fetch a list of changes from the central repository and compare these changes to the state of the locally present project. It will then proceed to merge the two versions of the project into a single up-to-date one, if necessary.

While this process will in most cases just work automatically, there may be rare instances where two different people (or the same person on different devices) modified the same line in the same file. Since there’s no automated way to determine which change is the “right” one, the files will not be able to be merged automatically and the entire sync process will be aborted. This is called a merge conflict.

At the moment, Mattrbld does not offer a way to resolve conflicts from its UI, since this topic is hard to implement well for non-technical users and deserves to be done right. You can learn more about this in the limitations article.

If you run into any syncing errors because of merge conflicts, you might have to discard local changes in the affected files before being able to sync properly.

Mattrbld is built in such a way that the risk of merge conflicts is minimised, since most parts of the application, even most configuration options live in their own files. These would, under normal circumstances, not be modified by multiple people at the same time. However, please be aware that the more users collaborate on a project and the more irregular the syncs happen, the higher the risk for conflicts will be.

Collaboration in Mattrbld is asynchronous and decentralised, you will not see what other members of a project are doing or have done until you sync your local changes or fetch remote changes into your local copy. However, thanks to Git, all changes to a project will be recorded and signed by their respective authors. This means that every individual change can be listed, for example in the project dashboard, and traced back to the person who made it. It also allows for any change to be undone and rewound by a developer using the Git CLI.

Project Members, Roles and Permissions

On top of the collaboration model of Git, Mattrbld provides a way to minimise unintentional mistakes while editing content using the application. Every member of a project can be assigned an individual role, which can then be used to control what they see in the Mattrbld UI and what actions they may perform through it.

Since Mattrbld runs entirely on the user’s device, these access control features are implemented purely on the client-side. This means that they do not offer any protection against users who are deliberately trying to cause harm.

Please rely on the access control features of your Git provider if you need real security!

In the following articles, you will be learning how to add users to your projects, what the default roles are and how to add custom roles, as well as how these roles can be used to assign certain permissions to groups of users.