Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 368193

Summary: [EDP] Code moves are too hard
Product: Community Reporter: Wayne Beaton <wayne.beaton>
Component: Architecture CouncilAssignee: eclipse.org-architecture-council
Status: CLOSED MOVED QA Contact:
Severity: normal    
Priority: P3 CC: david_williams, Ed.Merks, john.arthorne, pwebster, stepper
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard: stalebug

Description Wayne Beaton CLA 2012-01-09 15:03:00 EST
To move code from one eclipse project to another currently requires a Restructuring Review. The EDP defines Restructuring Reviews as relatively flexible things that can be used to refactor a project or projects, change scope, move code, etc.

To just move some code from one project requires:

1) Creation of review documentation;
2) IP Log approval for the source project; and
3) One week of community review.

The review is then followed by the actual process of moving code, committers, CQs, Bugzilla records, etc. with assistance from EMO staff.

For restructuring reviews in general, I have been accepting very concise documentation (very often delivered as Bugzilla comments) that describe the change. As far as reviews go, I think this is pretty lightweight. Can we do better?

Backing up a bit, it's probably a good idea to revisit why we do these reviews at all. The main idea is to make sure that the community gets a chance to understand what's happening and react/respond to the change. With that in mind, I find myself questioning if a week-long review period is enough? 

I tend to fall back on the idea that if the community cares about the change, then they've probably been listening all along and should know about it. If the involved projects haven't been talking about the change publicly and end up surprising their community with the change, then we have a different sort of problem.

This then brings me back... if the projects have been keeping their respective communities in the loop, then why do we need to spend a week at all?

Maybe it's enough to replace the notion of a review with an announcement that contains a description of the change and discussion of how the community has been involved with the process? A move review could be as simple as stating that some chunk of code needs to be moved from one project to another, combined with a pointer to the mailing list entry that started the conversation about the move.

To summarize:

1) Create documentation that describes the change;
2) Post it on the communication channels used by the projects;
3) Address concerns raised in those communication channels;
4) When the discussion wraps up, bring the change to the attention of the respective PMCs for their approval; and
5) Tell the EMO what you did.

We leave it to the PMCs to decide in step 4 if further discussion is required before granting approval.

Thoughts?
Comment 1 David Williams CLA 2012-01-12 12:10:38 EST
My view is that a "move review" is not all that hard, and a week's wait is not that onerous. 

BUT, I do really like the idea of leaving more up to the PMCs. Perhaps it could be stated by leaving out the "1 week review" requirement, and add something to  "PMCs Approve", similar to "bring the change to the attention of the
respective PMCs for their approval (as part of their approval, the PMCs should state how long the community review period was; at least one week a typical, but may be longer or shorter depending on the projects, the code that is moving, and the PMCs judgment)".  [You know how I like things wordy :) ]
Comment 2 John Arthorne CLA 2012-01-12 17:17:49 EST
I tend to agree that a code move shouldn't need a big process. The obvious key element is that the project committers and leadership at the destination project agree to it (since it involves potentially adding commit rights for the committers associated with the code). There often isn't much community impact involved. To think of it another way, if I move code from one directory in my repository to another, no review is needed. Moving to another repository is not a much bigger step modulo commit right changes.

Another point to consider is whether there is a process distinction between copy and move. If I want to copy code from one Eclipse project to another, what process is required outside of ensuring the project IP log is correct in the destination project? Does this fall under move review or something else? If copying code doesn't require a review, then it seems move can be reduced to:

- copy code from project A to B (update IP log, no review)
- hold committer election in project B for any new committers associated with the code
- committers of project A eventually delete the copied code from project A if they have no need to reproduce old builds (no review needed)
Comment 3 Wayne Beaton CLA 2013-08-21 12:11:15 EDT
The EDP 2011 discusses the notion of requiring a Restructuring Review for the movement of "significant chunks of code". 

--
A Restructuring Review may include the movement of significant chunks of code. A move is considered significant if it has an impact on the community (i.e. if segments of the community will notice that the code has moved). This may include entire projects, bundles, and features, but likely excludes small fragments, code snippets and individual files. The IP Log of all moved code must be reviewed prior to the start of the review period (this, typically, is a subset of the project's IP Log). If all of the code is moved out of a project, a Termination Review for that project can be combined with the Restructuring Review.
--

I believe that this provides an escape clause for "insignificant chunks of code", or functionality that has low impact on the community.

Perhaps we might consider:

* Changing "chunks of code" to "functionality";
* Making it explicit that the PMC should be included in the decision of whether or not functionality is "signficant"
Comment 4 Wayne Beaton CLA 2013-08-21 12:23:04 EDT
(In reply to comment #2)
> Another point to consider is whether there is a process distinction between
> copy and move. 

I think that there is. Copying doesn't disrupt consumers of the source project. I think that copying code between projects falls into the category of adding code to a project and is more of an IP Due Diligence issue than an EDP issue.

> If I want to copy code from one Eclipse project to another,
> what process is required outside of ensuring the project IP log is correct
> in the destination project? 

That's how I read the IP Due Diligence poster.

> Does this fall under move review or something
> else? If copying code doesn't require a review, then it seems move can be
> reduced to:
> 
> - copy code from project A to B (update IP log, no review)

FWIW, as long as the "Author" field is set correctly on the commit record, you're good-to-go on the IP Log.

> - hold committer election in project B for any new committers associated
> with the code
> - committers of project A eventually delete the copied code from project A
> if they have no need to reproduce old builds (no review needed)

We require a review for the move because it may have an impact on consumers. It seems to me that deleting code from a project would have an at least similar impact on consumers. Maybe "deleting/archiving significant functionality" should
be listed as a potential reason to hold a Restructuring Review.

i.e. "A Restructuring Review may include the movement or deletion/archival of significant functionality."
Comment 5 Eike Stepper CLA 2013-08-29 13:47:47 EDT
(In reply to comment #3)
> [...] A move is considered significant if it has an impact on the community
> (i.e. if segments of the community will notice that the code has moved).

To what extend is the possible impact of a code move between projects different from the impact of independent code changes in both projects that lead to the same effect?
Comment 6 Eike Stepper CLA 2013-08-29 13:53:59 EDT
I mean, if a project takes versioning seriously it already must increase the minor version for API additions and teh major version for API removal. A release with review is required already in both cases. So where's the value in mentioning code moves explicitely?
Comment 7 John Arthorne CLA 2013-08-29 15:45:25 EDT
(In reply to comment #6)
> I mean, if a project takes versioning seriously it already must increase the
> minor version for API additions and teh major version for API removal. A
> release with review is required already in both cases. So where's the value
> in mentioning code moves explicitely?

If you move a plugin from one source repository to another, it does not necessarily impact any of the source code in that plugin. So I don't think this is related to versioning. The main impact of a move is that it changes who has commit rights to that source code. This is my ideal version of a low process move review:

 - The move is announced on the project mailing list for both the source and destination project. The committers on the source and destination project vote on that change. If successful, the project lead of destination project opens a bug against EMO, with a pointer to those two vote threads, and the EMO implements the rest of the move.
Comment 8 Wayne Beaton CLA 2013-08-29 15:49:51 EDT
(In reply to comment #7)
>  - The move is announced on the project mailing list for both the source and
> destination project. The committers on the source and destination project
> vote on that change. If successful, the project lead of destination project
> opens a bug against EMO, with a pointer to those two vote threads, and the
> EMO implements the rest of the move.

Why does EMO need to be involved? If anything, you may need to request Webmaster help; that's a different thing.

Should the PMC(s) be involved?
Comment 9 Eike Stepper CLA 2013-08-30 02:25:39 EDT
(In reply to comment #7)
> If you move a plugin from one source repository to another, 

Implying that the "other" one also belongs to another project?

> it does not
> necessarily impact any of the source code in that plugin. So I don't think
> this is related to versioning. 

I believe that this is because features are considered at most second class components. I prefer to consider them kind of API because they define what's available or not. I think the consumable output of a project is ultimately induced by a set of root features. All additions of sub features or plugins should lead to an increased minor feature version. All removals of sub features or plugins should lead to an increased major feature version. With these rules moves, like any other content changes, are adequately reflected in the feature/project versions and lead to release reviews.

BTW. of course it's very hard to maintain feature versions because of their transitive content relationships. That's why Ed Merks and I have developed a special Version Management Tool that automates this completely in a similar way as API Tools do it for Java APIs.

> The main impact of a move is that it changes
> who has commit rights to that source code. This is my ideal version of a low
> process move review:
> 
>  - The move is announced on the project mailing list for both the source and
> destination project. The committers on the source and destination project
> vote on that change. If successful, the project lead of destination project
> opens a bug against EMO, with a pointer to those two vote threads, and the
> EMO implements the rest of the move.

I still think that a special review should not be needed. I agree that the change of commit rights to the "old" code should be documented, but the release review of the project that formerly owned that code must list removed code/functionality anyway. Why not just require/encourage to document where it has gone, in case it hasn't been just deleted?
Comment 10 Wayne Beaton CLA 2015-09-27 20:35:51 EDT
Defering.
Comment 11 Eclipse Genie CLA 2017-09-17 03:41:32 EDT
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.
Comment 12 Eclipse Genie CLA 2019-09-08 12:38:07 EDT
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.
Comment 13 Eclipse Genie CLA 2021-10-25 12:00:32 EDT
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.
Comment 14 Frederic Gurr CLA 2021-12-22 10:50:47 EST
This issue has been migrated to https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/issues/145.