Open consideRatio opened 3 years ago
I'm a big fan of anything that:
I'm not too worried about 2 here because it's quite common to release frequently in this world, so I'm +1 on this.
Maybe something to discuss at team meeting?
@choldgraf I've added an agenda item for this in the upcoming team meeting!
My summary from the meeting is:
@choldgraf suggested that we try and automate (1) as much as possible.
It this an accurate summary, @manics @minrk @sgibson91?
I believe so - I think there are some less defined tasks for point 2, toward keeping releases flowing on other repos.
Things discussed:
This is all related to our ongoing discussion of stale pull request reviews and issue triage, and a general challenge of staying on top of lots of repos. Making release is 'just another task' to stay on top of, with its own inputs and challenges.
💯 to github_activity
: https://github.com/jupyter/notebook/pull/6014
I think the simplest thing to start with is make a GitHub action in the Team Compass that opens an "It's time to create a release 🎉" issue. This could either simply be a checklist of instructions to release Z2JH, or it could be something a bit more full of information, like lists of pull requests that need attention etc.
I just wrote something similar to this for the 2i2c weekly team syncs, do people think something like that could be useful for our purposes as well? (say, every 3 months or something, and focused around releases and such?) e.g. here is one update issue and it is generated by this gh action which runs this python file to grab lists of issues
One challenge with the "stale pull requests" situation is that you don't want those lists to become overwhelming. E.g., I think BinderHub has like 34 open PRs, so knowing where to start is a challenge.
his could either simply be a checklist of instructions to release Z2JH
I like this, especially if it's as simple as possible. Maybe it'll add output from github activities, and make a full release when merged?
Releases take work separate from regular maintenance (merging PRs, etc), so I want us to decouple these as much as possible
Instead of some fancy GitHub Action to remind us would a recurring calendar appointment do?
I think the solution to "too many open PRs" is to pick one, anyone, by any method you like and work on that PR. I don't think displaying, categorising, automating and slicing&dicing them in a new way will help with moving open PRs forward.
Agree re: PR work, but I want to separate that from automating releases. I think GitHub action opening a PR that you can hit 'merge' on to make a release will be very helpful in making releases. Making a release should be mostly independent of any currnetly open PRs - otherwise it becomes difficult to stick to timeframes for releases given limited maintainer time.
Maybe we could do something with `workflow_dispatch, with the tag passed in as a parameter? https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/
Trying to drive this onward I'm delineating the following action points as first steps to:
surfacing information about what repos have unreleased work waiting to go. Long ago (I think on our old rackspace multipurpose server), I had this release-page app running to give a quick overview of repos with unreleased work. We could revive this or merely take inspiration. I suspect the github API can be used without maintaining clones like that one does, and this could perhaps even be a purely client-side app like all my pulls.
On a weakly-related note, I like the concept of "do-nothing scripting" as a prompt for humans to go through the correct steps of a manual process, e.g. making a release, as it lowers the activation energy for more people to take on the responsibility of carrying out that procedure. It also works as a skeleton to begin automating processes around, as you fill in the different sections to actually do the task instead of "do nothing". https://blog.danslimmon.com/2019/07/15/do-nothing-scripting-the-key-to-gradual-automation/
I love the do-nothing scripting idea!
Jupyter Releaser has now been tested against jupyter_server, we'll make a discourse post and PYPI release next week.
We have not adopted a "release pulse" or similar, and I don't think we will want to coordinate this much around releases. But, we have also got a lot of projects into a state where making releases is easier by having automation and RELEASE.md notes where the notes often end up saying "write a changelog using github_activity and wait for approval/merge (see notes) and use tbump like this".
I suggest we go for a close here
There's https://github.com/jupyterhub/team-compass/pull/394 that addresses this issue. Looking over it now, it looks it's more of a release reminder with some helpful links? Similar to these release planner tracking issues https://github.com/jupyterhub/zero-to-jupyterhub-k8s/issues/3091
@consideRatio, do you there's value into updating https://github.com/jupyterhub/team-compass/pull/394 to have it as a release planner tracking issue that we could either trigger ourselves or have it as a cron job (or both), instead of opening them from scratch?
@consideRatio, do you there's value into updating https://github.com/jupyterhub/team-compass/pull/394 to have it as a release planner tracking issue that we could either trigger ourselves or have it as a cron job (or both), instead of opening them from scratch?
@GeorgianaElena I don't think so currently, but maybe pivoted to something similar. I'll mention the pivot idea later but I suggest #394 is closed to be re-opened if pivoting.
I currently (but not before) believe that a top-to-bottom approach to drive releases isn't going to work well. I believe the biggest challenge with a top-to-bottom / org-to-project approach is that we end up with a too large task.
I think we would benefit from pivoting towards helping individual projects get releases out more regularly by providing org-wide standards and other things that can be done org-wide to assist individual projects on the project level. I think the creation of jupyterhub/jupyterhub-python-repo-template was such work and has helped a lot already.
The repo template allowed us to define a RELEASE.md
and a .github/workflows/release.yaml
file that we could be adopted across projects. For some project it meant getting releases out via gitops for the first time, for others it meant that we got the procedure a bit streamlined via tbump. Overall the jupyterhub-python-repo-template helps us standardize release practices among other things, which helps individual projects get releases out easier.
I see #394 as attempting to assist z2jh get a release out by providing overview. What if we try to do something similar for all projects, not making it z2jh specific?
I'm thinking that org-wide automation could perhaps help individual projects get an issue regularly updated with the state since last release. I'm thinking such issue would be similar to what #394 aimed to generate, for example latest release and date and opened and merged PRs since latest release. For comparison, here is a screenshot from #394:
@yuvipanda suggested that we could perhaps adopt a regular release cycle for Z2JH, so that we would cut a release every 2-3rd month for example. @yuvipanda quoted documentation from
pip
I think this sounds good, but want to consider adopting something similar across our organization's repos and have a "pulse" of releases that starts with leaf projects that doesn't depend on other projects and finishes with the distributions that depend on a lot of projects.
A release pulse
A progressive adoption