2.2 KiB
3. Combined Codebase
Date: 09/04/2019
Status
Approved
Context
Historically Alfresco has had a bad experience of having a monolithic codebase in SVN. The main issue with this was the inability to easily work on feature branches, resulting in frequent conflicting changes. To make matters worse this was seen as hard to move to git, since GitHub has/had a maximum limit on repository size and there were several large binary artifacts stored in the Alfresco history [1].
More recently the Alfresco codebase has been split into a large number of small git repositories [2].
This proposal is to merge the various git repositories together. By doing this we aim to:
- Remove the effort of creating releases of library projects.
- Allow tests to be written on the same branch (in the same repository) as the production code (i.e. facilitate TDD).
- Make it easier for everyone (especially people outside the team and new starters) to find the 'right bit' of code.
Decision
We will merge the search-related repositories together and preserve their history. We will not attempt to merge code that other teams also need (for example the TAS test utilities or the alfresco-data-model projects).
Consequences
An epic has been raised containing the next steps [3]. Broadly speaking these are:
- Merge the alfresco-solr-client library with the SearchServices repository.
- Merge the insight-engine, insight-jdbc and insight-zeppelin repositories.
- A consequence of this is that future releases of these artifacts will share version numbers.
- Put all the end-to-end tests in a single testing project.
- Merge the (public) SearchServices code into the (private) InsightEngine repository and set up a mirror so the community code is still publicly editable.
- Merge the tests with the production code.
- Merge the build scripts with the production code.