I think I’m more confused now, sorry :-). There are 3 branches in your proposal, staging
, passing
, and master
? If we have staging
, why do we need passing
? Or is that the same as master
?
In either case, though, I think this would essentially recreate the situation that we have right now – bitbucket master is the staging branch, GitHub master is the passing/master branch. The frustration with this setup is not only that bitbucket is invisible currently (this would be fixed with your proposal), but also that there is a mismatch between PR targets and the actual development head. This has created frustration in the past, because passing tests on a PR to master
/passing
don’t mean that they pass on the development head and vice/versa. Even with automation that tests both (essentially what we now have between GitHub and Bamboo), you still get this moment where you’ve tested your code, believe that everything is fine, make the PR, and then things don’t work, because master is behind the development head, or manifests haven’t been updated yet etc. The reason for the failure would be more visible, but I do think it would still be frustrating to people.
Define “change”. In my (and Kent’s/Curtis’ I assume) proposal master
never changes either apart from new commits, which I assume your proposal also has, otherwise nothing ever happens (the proposal would add new commits to master
to fix global consistency issues if they had not already been caught at PR time). I might be wrong, but I think the difference between the two proposals is that one has to be locally always working (for all checks that are runnable within the repo), but not necessarily globally (checks with other repos), and the other (yours) is always globally working?
In terms of solidity: that’s what versioned releases are for. We explicitly do not want people to check out the CAmkES master branch and expect that to work with the seL4 master branch. We were trying to achieve that with pushing out only globally consistent versions to GitHub, but that a) didn’t really work (we still had failures because sometimes we need/want to push manually), and b) it seems to be holding up development.
I don’t think we need to have development versions that always fully work with everything. We do need code that is is always releasable, but that might lag behind development.
Managing dozens of pull requests as separate development branches seems like a lot of overhead that maybe can be managed with automation, but it also has to be. I don’t think we currently have the time and resources to write a whole development branch dashboard. In the other proposal, GitHub basically is that dashboard.
Maybe we’re not actually that far apart, the main difference seems to be which branch PRs are targeted to and which is named what (master vs staging). I think I should start writing this up with slightly more detail so it becomes clearer. There are also multiple parts to this:
- GitHub being the main host for everything
- policy change on what GitHub master means (to what bitbucket master currently is), including a
passing
branch to preserve releasability
- port test infrastructure to more open foundation management
The last part can be done more incrementally than the first two.