WSO2 Carbon Kernel is the base platform for all WSO2 products. With the new version of carbon kernel - 4.3.0, WSO2 has moved to the Git-based source code configuration management (SCM). All the code base is now moved to the WSO2 user account in github.
Before the code base was moved to git, the platform repository in svn had the complete code base of all the products together. Thereby, releasing individual products using this svn-based model was done in chunks. A chunk release consists of one or more product releases. Therefore, with every new chunk release, the individual components that goes into the products in that chunk release were branched internally using directory structures, and then released using separate pom files that groups all the modules (service-stubs, components, features).
When the source code was moved from svn to github, the code base that was in svn had to be refactored into separate individual repositories. With git, everything is based on branches. So the above branching strategy using directories will not work. Therefore, the chunk based release of products has to be changed. For this reason, the platform repository was divided into multiple, individual git repositories by grouping common components. For example, carbon-deployment repository has grouped all components (including service stubs, components and features) related to the deployment of artifacts (webapps, axis2services). These individual repositories can then be released separately and the products depending on these repositories will be released afterwards.
Example: WSO2 Application Server depends on the following individual repositories:
- carbon4-kernel
- carbon-utils
- carbon-deployment
- carbon-commons
- carbon-multitenancy
- carbon-qos
- carbon-identity
- carbon-platform-integration-utils
- carbon-registry
- jaggery
- carbon-governance
For the first release of WSO2 Application Server in git, all of the above repositories have to be released beforehand. But this is needed only for the very first release from git. The subsequent releases of WSO2 Application Server can depend on already released versions of these repositories. These dependent repositories are known as upstream projects of the WSO2 Application Server product. This is the same for other repositories based on WSO2 products as well.
Apart from the above, moving to git also has some added advantages:
Better management for each git repository (based on branches).
External contribution can be made easy with better code visibility.
Tools such as the maven-release-plugin and nexus staging repositories can be used easily.