Feasibility analysis on shipping CE+EE code as is
An idea was proposed if we could just ship EE as-is to reduce the complexity with 2 repos. This would require open sourcing EE and control enterprise features via EE license only. If there is no license it should act like CE.
Existing proposals
A year ago DZ proposed a high-level plan (https://gitlab.com/gitlab-org/gitlab-ee/issues/2952#note_41016654), but then no detailed plan (and several problems were pointed out) was put in place so it’s still wishful thinking at the moment.
Douwe’s proposal here is crystal-clear and solves any confusion as well as organizational changes: https://gitlab.com/gitlab-org/gitlab-ee/issues/2952#note_41141339
Even though running EE with no EE license we result in CE features, we concluded that this is still not feasible.
Reasons being:
- Problem is that if EE is open sourced, then it’s legal to remove the license check and use EE for free. Point in case: https://gitlab.com/gitlab-org/gitlab-ee/issues/2952#note_40280385
- We would need to revisit the licensing structure:
- Frontend assets. MIT-license for CSS, images… Basically everything under
app/assets
: https://gitlab.com/gitlab-org/gitlab-ce/issues/55519 - All documentation (under
doc/
) is already licensed CC-BY-SA: https://gitlab.com/gitlab-org/gitlab-ce/issues/42891
- Frontend assets. MIT-license for CSS, images… Basically everything under
- We can’t use the current EE codebase to package CE. The code is still mangled and there’s no easy way to drop EE code.
Path forward
We still need to work on CE/EE code organization.
- Main offenders are the views in FE. We can’t ship everything in EE and expect that everything is going to work.
- Migrations are also different between CE and EE.
Areas of regression
We also may have regressed since the CE/EE LoC and files check have been ignored.
- E.g. Serializers and services.
- https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/7885#note_118958647 pointing to https://gitlab.com/gitlab-org/gitlab-ee/issues/6634
- There are still some differences in services/.
- Initializers
- Lib/ folder
- Yorick is working on the models.
@rymai @godfat please feel free to add if I missed anything.