Clarify the wording around CE to EE ports: backport/upport/upstream merge etc.
Wording for porting a CE change to EE, or an EE change to CE, is sometimes confusing. We should clarify that and document it in https://docs.gitlab.com/ee/development/automatic_ce_ee_merge.html.
Backporting
Backporting is the action of taking parts from a newer version of a software system or software component and porting them to an older version of the same software. It forms part of the maintenance step in a software development process, and it is commonly used for fixing security issues in older versions of the software and also for providing new features to older versions.
- In our case, CE isn't an older version of EE, nor EE is an older version of CE. EE actually builds upon CE, their "version" are always the same (once CE has been merged into EE).
- We could also consider EE to be an older version of CE since the only time it's not older is when all the CE commits are in EE (i.e. most of the time it's "older" than CE).
- That all being said, using "backport" for porting CE changes to EE sounds weird as we often think if EE as an "enhanced" version of CE, thus a "newer" version.
Upstream
In software development, upstream refers to a direction toward the original authors or maintainers of software that is distributed as source code, and is a qualification of either a bug or a patch. For example, a patch sent upstream is offered to the original authors or maintainers of the software. If accepted, the authors or maintainers will include the patch in their software, either immediately or in a future release. If rejected, the person who submitted the patch will have to maintain his or her own distribution of the author's software.
Upstream development allows other distributions to benefit from it when they pick up the future release.[1]
The term also pertains to bugs; responsibility for a bug is said to lie upstream when it is not caused through the distribution's porting and integration efforts.
- Technically, if we consider EE a "fork" of CE that builds upon it, we can consider CE to be an upstream of EE.
- When we refer to CE upstream or "Upstream merge", it's correct since we merge the upstream project (CE) into the downstream one (EE).