jupyterhub / team-compass

A repository for team interaction, syncing, and handling meeting notes across the JupyterHub ecosystem.
http://jupyterhub-team-compass.readthedocs.io
62 stars 33 forks source link

An organization wide release pulse every X month? #384

Open consideRatio opened 3 years ago

consideRatio commented 3 years ago

@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

Our release months are January, April, July, October. The release date within that month will be up to the release manager for that release. If there are no changes, then that release month is skipped and the next release will be 3 months later.

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

choldgraf commented 3 years ago

I'm a big fan of anything that:

  1. Reduces the amount of human judgment time needed to make decisions
  2. As long as it doesn't harm the stability or reputation of the tools we release (e.g. by releasing half-baked tools)

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?

consideRatio commented 3 years ago

@choldgraf I've added an agenda item for this in the upcoming team meeting!

yuvipanda commented 3 years ago

My summary from the meeting is:

  1. Let's try this out just for z2jh, just shipping what's in master in set times. We don't have extra maintainer time to try and get things 'to a particular state' before releases, so just do them point-in-time.
  2. Don't explicitly sync other projects releases to this 'distribution release', but try to make releases more often.

@choldgraf suggested that we try and automate (1) as much as possible.

It this an accurate summary, @manics @minrk @sgibson91?

minrk commented 3 years ago

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.

blink1073 commented 3 years ago

💯 to github_activity: https://github.com/jupyter/notebook/pull/6014

choldgraf commented 3 years ago

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.

yuvipanda commented 3 years ago

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

betatim commented 3 years ago

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.

yuvipanda commented 3 years ago

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.

manics commented 3 years ago

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/

consideRatio commented 3 years ago

Towards action

Trying to drive this onward I'm delineating the following action points as first steps to:

First steps

Relevant but not the focus of this issue

Future steps

sgibson91 commented 3 years ago

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/

minrk commented 3 years ago

I love the do-nothing scripting idea!

blink1073 commented 3 years ago

Jupyter Releaser has now been tested against jupyter_server, we'll make a discourse post and PYPI release next week.

consideRatio commented 1 year ago

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

GeorgianaElena commented 1 year ago

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 commented 1 year ago

@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.

Pivot idea

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:

image