There are two widely used methodologies for versioning code: the traditional Branching methodology, and the Trunk methodology, the last one is the chosen methodology by OutSystems to be the official methodology of the platform.
Many people who start working with the OutSystems platform believe that the code versioning methodology is done through branches and/or that they can choose the way they want to have version control. It is important to understand that the platform works with the Trunk methodology, which is the official way of versioning, and that understanding the concepts is essential to make the best use of the platform. Don't be fooled by wrong assumptions, the OutSystems platform is a powerful tool and understanding how to work with it can be the key to success.
Let's understand how each of them works and the advantages of each approach.
The traditional code versioning model, called "Branching," involves the use of branches, which are branches of the main code where changes are made and tested before being merged back into the main development line (Main). Each branch represents a new functionality or bug fix and is kept separate from the main code until it is ready to be merged. The development team can work on multiple branches at the same time, allowing different functionalities to be developed simultaneously without interfering with each other.
The main advantage of the traditional model with Git and Branches is the flexibility it offers. With this approach, the development team can work on different functionalities simultaneously, keeping them isolated and testing them independently before integrating them into the main code. This also helps reduce the risk of code conflicts and makes it easier to manage large development teams.
On the other hand, the Trunk methodology used by the OutSystems platform consists of having a single main development line, also known as the trunk, in which all code changes are merged. This approach aims to ensure code stability and reduce the risk of code conflicts during the merge.
In the OutSystems platform, the trunk is represented by the Development environment, which is the base for all other environments, such as QA and production. Developers work in the Development environment and make code changes in their respective modules.
When a change is completed, it is merged into the trunk through a merge process (useful documentation):
OutSystems Merge Screen
After merging and publishing, the module version is updated, and a new version of the Development environment is created.
The main advantage of the Trunk methodology is the simplicity it offers. With this approach, the code is maintained in a single development line, which makes it easier to manage and resolve code conflicts. This also makes it easier to ensure code stability, since all changes are merged into the main development environment before being tested in other environments.
In summary, there is no better versioning methodology than the other, and each approach has its advantages and disadvantages. The traditional Git and Branches methodology offers flexibility and is ideal for large and complex teams, while the Trunk methodology is simpler and offers greater code stability. The choice of versioning approach will depend on the specific needs and characteristics of each team and project. And if you use the OutSystems platform, then you really need to understand and make the best use of the trunk methodology!
I hope this article is useful for you to understand the differences between these versioning control methodologies. This is highly important, especially when you are coming from other technologies, with other concepts in mind.
Learn more about OutSystems platform here