[Proposal] Switch master to next release after M3 #863
Replies: 16 comments 51 replies
-
In general this sounds like a good idea as there aren't many changes to master between M3 and current branch creation date. (Although I wish there was an easier way to cherry-pick PRs to other branches in the GitHub flow to allow changes to go into master and then be cherry-picked to 4.27 branch) Will there be I-builds for the 4.27 after master moves to 4.28? |
Beta Was this translation helpful? Give feedback.
-
That would put extra burden on releng side to update to latest EMF, Orbit, ECF, backport fixes, regen all documentation bundles, put N&N into docs bundles and etc. be done twice - once in master and once in release branch. I am not ready to take more work on that side and I doubt others that did this work would be happy to do more. |
Beta Was this translation helpful? Give feedback.
-
I think one keypoint would be to have true matrix builds in jenkins, e.g. for Tycho we already doing it that way: https://ci.eclipse.org/tycho/job/tycho-github/ As you can see some of the older branches do not build (because no one cares) but currently we have 4.x development and still 3.x (and previously 2.7.x), so performing a "quiet" period would be just create a branch, do a small adjustment of the Jenkins file (for deployment of snapshots), and then people can either develop on master or backport/fix things on older branches. Also cherry picking is quite easy, just fetch the branch (e.g. tycho-3.x), create a new branch (e.g. backport-fix123) then select the commit on the master branch and choose "Cherry-Pick", then push as PR and select the correct target branch. So I think the key-point here is automate stuff as much as possible e.g for P2 I have setup CI-Friendly-Versions, that now only require a single change in the pom to upgrade the whole project to the next dev version. |
Beta Was this translation helpful? Give feedback.
-
I have to say that even opening the new stream is quite cumbersome process with all the different repos to update parent versions, touch features, update Jenkins jobs and etc. |
Beta Was this translation helpful? Give feedback.
-
It would be interesting how many regressions/bug are actually found/fixed in this "quiet-month" so probably one can just reduce the quiet period at all.... I must confess that I have had some things on the table for this release but now its already over again, so probably just M1, M2 (with longer cycles) and then just immediately enter RC with bug-fixes only... and then just release it with shorter delays.
But I think that's independent from when it is done? |
Beta Was this translation helpful? Give feedback.
-
Here are the tasks that needs to be done when switching to new stream
On the new stream using master (will take more than 2 days)
The problems I used face for this work is
We have done this in the past. But it was really painful. I used work on weekends and 24 hours straight to the first part going(moving I-builds to maintenance/release branch). The second part normally takes about a week. I seriously don't want any one to go back to that state. |
Beta Was this translation helpful? Give feedback.
-
@sravanlakkimsetti @iloveeclipse @akurtakov I have now prepared the following PRs:
These will need a review (and then probably a merge if nothing bad is detected). |
Beta Was this translation helpful? Give feedback.
-
Where would they search? This could be searched on GitHub, on a broader web search engine, locally inside the IDE, or with grep... and there are chances that occurrences get found by all of them if inside the repos; less chances if it's an external source. |
Beta Was this translation helpful? Give feedback.
-
I have now added a github action to Tycho that automatically creates a backport to a branch if one adds a given label: So the workflow would be:
A similar workflow would also work the other way round
|
Beta Was this translation helpful? Give feedback.
-
The initial change on any particular bundle or feature at the start of a new stream generally requires a version increment which would very often be wrong in a backport. I don't see a way to handle that automatically though, so just and observation that such a PR will typically need to be modified manually... |
Beta Was this translation helpful? Give feedback.
-
Another important consideration is setting the (API) baseline... |
Beta Was this translation helpful? Give feedback.
-
May I ask if/how we can proceed here? Is anything needed from Tycho/releng script side here, e.g. I opened:
is there any plan for this in this release or are there any technical difficulties we need to solve? Beside this, I must confess that I noticed (again) that I still don't get these release plans: The schedule says
and we already got the reminder, for "no big changes" so here again effectively muting development for another one and a half week? For what is this good for? Can't we have a Given that many contributions are done in free-time it seems quite disturbing to having align with these fixed time-frames, e.g. next "two development weeks" (if I get the calendar right...) will span the easter-holidays where many people are away from their PC, the M2 will already have its quiet-periods... So to summarize: What is left so we can enter a much more continuous development cycle than all these disturbing freeze times ... |
Beta Was this translation helpful? Give feedback.
-
It would be good to read the details here https://wiki.eclipse.org/SimRel/Simultaneous_Release_Plan The Platform is at +0 and +0 projects contribute/provide their contents on the Friday 1week ahead of the scheduled milestone. This is annotated on the calendar. So the Platform tries to build their contribution by Wednesday, and asks people to test that build for sign-off by Thursday so that the final build can be provided on Friday. It asks the team to stabilize and focus the quality (bug/regression fixes) during this one week. ( Note that projects like EMF and Orbit are effectively at -2 because of the platform's schedule where the build is needed by Wednesday two days ahead of the Platform due date.) So the team is being asked to focus on quality for more of four days. But qualfiy, as @akurtakov suggests, seems to be a low priority for many. Of course you can continue to work on your fork's branches continuously and ignore the disturbing freeze times, which is what many do. I suppose an alternative is to fork a branch that will be used for the M1 build in all the repositories, to have builds that use those, and to fix any encountered severe problems in those. But that's a daunting task and who's doing all that work when the actual important focus is continuous development without disturbances. So an alternative would be to continuously "dump" whatever the current state is, whenever it's needed, and hope that quality is either not important or is already ensured as we do for M2... |
Beta Was this translation helpful? Give feedback.
-
@akurtakov I wonder with whom you were fighting a battle? It seems to me that the Platform decides what it wants to do mostly as it sees fit. That's certainly what I do with EMF and Oomph, but then I know exactly what's changing and who's changing it, i.e., me. The Platform has a whole whack of people changing things, and all-too-often things are broken for a short while from day to day. Do you really feel there is no need whatsoever to try to control/manage arbitrary activity right before delivering a stable build for broad downstream consumption? If so, I'm really not sure who or what is stopping you. I don't think it's the Planning Council nor any SimRel rules. And I don't think most of the "whole whack of people" care either. So where is the battle field? |
Beta Was this translation helpful? Give feedback.
-
@merks I already read the link today (again) but as said I don't fully get it, its all quite vague (e.g. milestone dates are at roughly 2-3-week intervals, dates are typically one week apart) and seem to require a lot of in deep knowledge (with all those +X that are described as "projects choose it" but on the other had then restricted by other concerns) and do describe what is happening, but it does not describe why it happens, e.g. lets say platform will not "deliver M1" (how do we do it?!?) what will happen? And yes it is officially a week, *but the mail says (emphasis by me):
So effectively this start 2 days before M1 ... About stabilize things I'm all for it, but is there really a team of people dedicated to these testings while M1 / .. that are doing this exactly at these days? I can only second @akurtakov that my feeling is that it is more "stop all work", and we discover/fix bugs more often at the regular "development weeks". So ideally we would have:
That's why I asked if we need anything from a technical POV, e.g. an automation that creates branches / jobs / ... so there is just a non moving ground where all these processes can run that build the stuff and maybe allow for the " only regression fixes" to get in (maybe discovered already during the usual development that's going on in parallel). |
Beta Was this translation helpful? Give feedback.
-
As a concrete example of "why" the +0... If the Platform builds M1 on Wednesday and the Platform depends on EMF (not only depends on, but redistributes EMF's content), then it's best and ideal that EMF's build happens before the Platform's build such that the Platform builds with and tests with EMF's contribution. Because the Platform builds on -2, though delivers on +0, EMF is effectively at -2. So the "why" for the ordering is to produce some type of build progression based on the dependencies. Of course given there are circular dependencies, and given that people just choose when they want to contribute and which versions of their dependencies they build and test against, this is all nice in principle, but in practice it's more of a free-for-all. As for dedicated teams, no this is all just chaos and a free-for-all. Yes, one finds bugs all the time during development, but unfortunately I also see that regressions are introduced all the time during said development. Moreover, much more time is focused overall on cool new things than on testing and fixing already-reported bugs. Bugs are often reported, even by the Platform developers, but the developers/contributors all too often move on to the more interesting work. This is just human nature and isn't going to change... My sense of the proposal is that it only works if some dedicated team will manage branching all the repos and manage the builds for all those branches. Maybe that team is also responsible for testing; or maybe no one is responsible for that and we just hope people notice bugs while they work on cool things and hope even harder that they will fix those bugs and not just report them. In this way the most people can continue to work on the really cool stuff. As long as I'm not on the dedicated team working on the not cool stuff, I'm 100% in favor of such an approach so I'm sure most people will favor this approach. I think if we properly automate the process to reduce the grunt burden, that this is a workable approach that has significant merit. My biggest concerns is that if we continue with this model through RC1 and RC2, as planned, with virtually no one actually testing the quality of what we are about to deliver to millions of consumers, the quality of what we deliver to the consumers may degrade significantly. So I think in this discussion one should take into account "who is doing the uncool work" and what is the tradeoff of focusing on cool work versus uncool builds and quality testing in terms of what we ultimately deliver. The perception of the millions of people who consume our results must also remain of high priority. I thinks it's possible to achieve all these goals. E.g., if folks regularly update to the latest integration build, which is trivially simple with the Oomph setups, they would be eating their own dog food everyday which could only help improve quality by virtue of extensive testing because of every-day use. |
Beta Was this translation helpful? Give feedback.
-
Looking in the past changes in our release workflow I see a major disruption in development efforts for everyone contributing to the project after M3. This basically "mutes" everyone for a month, PR's got forgotten, external contributors disappointed etc.
On top of that even project contributors are often merge PR's into master after M3 without following the "RC" rules, for various reasons, even failed checks don't prevent them doing that.
Additionally I see a big issue with "maintenance" branches, which aren't even compilable anymore because eclipse.org doesn't run maintenance builds. Most recent case is 4.26 release branch which can't be built today because it uses tycho snapshot 3.0.0 which is simply not available anymore.
The proposal would be: once M3 is declared, immediately:
After M3, contribution of RC1 & RC2 would be done from the "release" branch.
Benefits I see:
If there are no technical issues, I would propose to start doing that with 4.27 M3.
Thoughts?
Beta Was this translation helpful? Give feedback.
All reactions