Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Round 1: Strategic upstream OSS contributions #5058

Open
yuvipanda opened this issue Nov 13, 2024 · 4 comments
Open

Round 1: Strategic upstream OSS contributions #5058

yuvipanda opened this issue Nov 13, 2024 · 4 comments
Assignees

Comments

@yuvipanda
Copy link
Member

yuvipanda commented Nov 13, 2024

This issue tracks one round of doing strategic upstream work by reviewing PRs (see https://github.com/2i2c-org/meta/issues/1289#issuecomment-2443211503) from non-maintainers in the communities we care about as well as making releases when appropriate. The primary goals here are:

  1. Shake out our process for integrating this into our regular planning, so everyone in the team can participate
  2. Provide a place to track what work we are actually doing
  3. Build capacity within our team for doing code review consistently and equitably

Round 1 should continue until the end of January, where we can evaluate the results.

Process

WIP process that will be modified as we go.

  1. We create a subissue of this issue for each PR we want to review
  2. Created subissue gets tracked as a task in P&S sprint planning

Finding PRs

Here's a little python script I have written that prints out a list of PRs that match this description
from github import Github, Auth
from github.Repository import Repository
import functools
import subprocess
import shutil
import os
import sys

@functools.cache
def get_maintainers(repo: Repository):
    print(f'called for {repo.name}')
    return [u.login for u in repo.get_collaborators()]

def main():
    # Get token from `gh`
    if shutil.which('gh'):
        token = Auth.Token(subprocess.check_output(['gh', 'auth', 'token']).decode().strip())
    elif 'GH_TOKEN' in os.environ:
        token = Auth.Token(os.environ['GH_TOKEN'])
    else:
        print("This script needs a GitHub API token to operate", file=sys.stderr)
        print("`GH_TOKEN` environment variable not present and `gh` command not found.", file=sys.stderr)
        sys.exit(1)

    g = Github(auth=token)

    for i in g.search_issues('org:jupyterhub state:open is:pr', sort='created'):
        if i.user.login not in get_maintainers(i.repository):
            print(i.html_url, i.title, i.user.login)

main()
@agoose77
Copy link
Contributor

@sgibson91 and I took a look at jupyterhub/nbgitpuller#359 (#5059).

Overall the PR is indeed simple, and looks correct. We clarified the issue cause, and identified that the suggested PR was a suitable fix. We made a suggestion about future improvements to this work.

We noticed that there is a range of experience in the team. We reflected that this was therefore a good opportunity not only to contribute to OSS, but also to become more familiar with keystone projects in the ecosystem, and in particular, to undertake some peer mentoring in order to narrow the range of experience and skills.

On that note, @agoose77 originally suggested a 30m meeting. This was overly optimistic, and didn't facilitate a good opportunity for peer mentoring.

From @agoose77, thanks @sgibson91 for pairing!

@yuvipanda yuvipanda changed the title Round 1: Strategic upstream OSS support by reviewing non-maintainer PRs Round 1: Strategic upstream OSS Nov 23, 2024
@yuvipanda yuvipanda changed the title Round 1: Strategic upstream OSS Round 1: Strategic upstream OSS contributions Nov 23, 2024
@GeorgianaElena
Copy link
Member

@agoose77 and I paired on #5183 today.

We started by discussing the different approaches we each had in mind for approaching the task, which was very interesting to acknowledge, celebrate and learn from.

We then spent some time dodging docker caching in order to be able to reproduce the warning multiple times.

After getting both of our environments ready for action we realized the PR was a bit more complex than expected because we both got lured into a mindset of wanting to optimize even more. Use used all the time we had set aside for this task (1h) in order for the both of us to become confident with merging the changes and ended up opening a new follow-up issue with our exploratory findings.

All in one it was a very enjoyable pairing session, thank you @agoose77 🚀

@sgibson91
Copy link
Member

Follow-up to #5323

Making a release upstream was a pretty seamless experience tbh since it is very automated through the combination of github-activity, tbump, and CI. I think more guidance could be given around deciding version numbers. I also wasn't sure about merging the changelog PR and opted to bias towards action and self-merge.

@jnywong
Copy link
Member

jnywong commented Jan 27, 2025

Follow-up to #5251:

@GeorgianaElena and I paired up on the nbgitpuller 1.2.2 release. We followed the guidance in the repo's RELEASE.md and it went smoothly! Georgiana explained a lot as she went through the pairing session with me, making references to the JupyterHub Team Compass and explaining the python package template.

Great knowlege-sharing achieved in this pairing session, thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants