Every team member works on EE side
TL;DR: Work on EE and merge EE into CE regularly. CE to EE merges will still have to be done since community contributors will continue to work on CE.
Let's discuss one more idea. What if we worked on EE side always?! It solves the problem when developer needs to reimplement CE feature when we merge it to EE just because developer does not see whole picture. This almost completely solves problem with conflicts because removing stuff is much easier then creating :) (I mean merge EE->CE) If you are working on feature that should be on EE side only you should merge it to CE yourself because you only know it and it will prevent feature to be introduced in CE during EE->CE merge (it's 5% of MRs). Of course we would need to do CE->EE merges because there are some public contributions.
The first steps needed here is to merge EE to CE and keep the same code. It can be easy done by following steps:
- Copy CE files to temporary directory
- Pull EE master
- Recovery files from temp directory
- Commit
Pros
- conflicts will mean removing code, which is usually easier
- developer won't forget to update EE (https://gitlab.com/gitlab-org/gitlab-ee/issues/715#note_17358450):
one case where working on EE first would really help is where we develop something that has an impact on something in EE, but we forget about it because there's nothing mentioning that code in EE! For instance, if we add something that needs to be in ElasticSearch, or something that will impact on approvals.
Cons
- everyone on the team will have to work on EE, but issues would remain in CE...
- community contributors will still work on CE, and won't see "the whole picture", but that's probably 5% of the code...
Any thoughts?
References: https://gitlab.com/gitlab-org/gitlab-ee/issues/715#note_15020398 https://gitlab.com/gitlab-com/infrastructure/issues/836#note_19679676
cc @rymai