kubernetes / community

Kubernetes community content
Apache License 2.0
12.01k stars 5.17k forks source link

1:1 hour mentoring process improvements #2657

Closed parispittman closed 3 years ago

parispittman commented 6 years ago

After conducting some tests and a retro, we discovered the following that needs to be corrected before a full scale launch can happen.

Automation if the coordinator or person setting up the event is sick, ooto, etc., it will block the entire process. Getting this automation right is P0 or coming up with a team of people to coordinate.

Ideal workflow: [for all of this to happen in GitHub with an issue or PR template with full automation] mentee applies via some kind of form, mentor is auto-matched with limited to no human involvement (based on criteria below in the 3rd bullet), calendar is sent with populated information, meeting happens, everyone is happy

Mentee Info

  1. preferred name and pronouns, github id, slack id
  2. 1:1 hour activity choice
  3. $said_choice tools/misc
  4. dev enviro set up?
  5. exp with Go (if applicable)
  6. exp with the following (q about yaml, containers, our testing infra, etc.)

Mentor Info (for mentees as fyi)

  1. preferred name and pronouns, github id, slack id
  2. what sig/wg(s) are you most active in

Process Improvement

parispittman commented 6 years ago

@jeefy is working on an automated calendar widget that would be kicked off from an issue template

misterikkit commented 6 years ago

Thanks for distilling all this!

On the topic of automating calendar invites, might also be good to automate an email reminder 24h in advance.

For #s 5 and 6 on mentee info, I wonder if those can be turned into a more generic, "what level of help are you looking for?" that could range from dev enviro setup to code/config syntax to very specific k8s stuff.

Since you propose that mentees need to do more prep for pair programming, that might turn some contributors off. I still think it should be there, but we could provide an off-ramp where the contributor goes, "well I don't know what help-wanted issue or concept to work on" and the mentoring session can be about answering those questions instead.

misterikkit commented 6 years ago

Would this proposal force all mentees to make their requests public?

parispittman commented 6 years ago

Agreed to auto email reminders! That's a good one.

Re need an issue to work on: That's a suggested activity for mentor/ees to choice from now. "AMA" I need to get a script/doc together for the mentors that explains just that. I've been thinking about a "training", too, for mentors once we have more of this laid out since some of these concepts/way of doing this are new.

Re mentees public requests: We are playing around with that now. Ideally would like to make this as private as possible where personal info is concerned; at the very least have separate process or anonymous process for this reason.

fejta-bot commented 5 years ago

Issues go stale after 90d of inactivity. Mark the issue as fresh with /remove-lifecycle stale. Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle stale

mrbobbytables commented 5 years ago

/remove-lifecycle stale

fejta-bot commented 5 years ago

Issues go stale after 90d of inactivity. Mark the issue as fresh with /remove-lifecycle stale. Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle stale

jeefy commented 5 years ago

/remove-lifecycle stale

fejta-bot commented 5 years ago

Issues go stale after 90d of inactivity. Mark the issue as fresh with /remove-lifecycle stale. Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle stale

parispittman commented 5 years ago

/remove-lifecycle stale

markjacksonfishing commented 5 years ago

@misterikkit would you be open to pairing with me on this task to drive it to completion?

markjacksonfishing commented 5 years ago

/assign markyjackson-taulia

markjacksonfishing commented 5 years ago

I am going to take this on. I will draw from the team to see where I can extract various bits

misterikkit commented 5 years ago

@markyjackson-taulia Hey that sounds like fun - what's the actual task though?

markjacksonfishing commented 5 years ago

@misterikkit It would require you and I to refine the existing 1:1 mentoring process and make it easy to understand and community-friendly. Something of a well defined guide that a mentor can follow and a mentee understands

misterikkit commented 5 years ago

I'm happy to contribute to this! I'm misterikkit on slack. Maybe we can coordinate there.

markjacksonfishing commented 5 years ago

Perfect!

markjacksonfishing commented 5 years ago

@misterikkit and I are meeting this coming week (invite sent after discussing via dm) to discuss and breakdown the task in to workable chunks

fejta-bot commented 4 years ago

Issues go stale after 90d of inactivity. Mark the issue as fresh with /remove-lifecycle stale. Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle stale

markjacksonfishing commented 4 years ago

/remove-lifecycle stale

I continue to work on this

chris-short commented 4 years ago

It's the new year, when were we talking about this?

markjacksonfishing commented 4 years ago

It's the new year, when were we talking about this?

I think we have a calendar to talk about this Friday

hh commented 4 years ago

A Templated Startup Process

At @ii we use a templating system to capture our pairing worksflows based on org-mode.

We may find it useful to cherry pick some ideas from it and create a few templated ways to start a mentoring session.

It's also great in that the output is available in text, markdown and an html presentation.

It may get even more interesting if we integrate asciinema

https://github.com/kubemacs/kubemacs/tree/master/org/cncf/apisnoop#environment-for-docker-init

variables

We set some variables for the list of repositories, who is pairing together and the specific workflow/org file.

Note that our workflow has a test-writing.org as the target, which brings up an auditsink that logs to apisnoop so you have a way to query what your kubernetes interactions are doing in cluster as far as the groups and hopefully matching to sigs.

KUBEMACS_GIT_EMAIL=hh@ii.coop
KUBEMACS_GIT_NAME="Hippie Hacker"
KUBEMACS_TIMEZONE=Pacific/Auckland
KUBEMACS_INIT_DEFAULT_REPOS='https://github.com/hh/apisnoop.git'
KUBEMACS_INIT_ORG_FILE=apisnoop/test-writing.org

docker run to create local cluster

We start with only requiring docker, but we map the docker socket of the host, into the container, which includes kind + kubectl. We think invites to nearly anyone being able to do this locally, though we could just as easily use a k8s community hosted cluster.

This brings up kubemacs as a stateful-set so we know the name of the container is kubemacs-0

docker run \
       --env-file $ENV_FILE \
       --name kubemacs-docker-init \
       --user root \
       --privileged \
       --network host \
       --rm \
       -it \
       -v "$HOME/.kube:/tmp/.kube" \
       -v /var/run/docker.sock:/var/run/docker.sock \
       $KUBEMACS_IMAGE \
       docker-init.sh

kubectl exec attach

By default the above will connect and use osc52 to populate the clipboard with the content to paste to the other person.

I use the terminal via an OSC52 terminal, but the web works pretty good too. We are currently using @tmate-io

Both emacs and vim work quite well in cluster.

Another kiwi @chrisbarret made some software we use to explore the cluster from within emacs. kubernetes-el

tmate

Tmate provides both ssh and web urls. The ssh urls can be pasted directly into terminals. The tmate binary by default uses the services hosted by tmate.io.

I paired recently with the created of tmate @nviennot to ensure anyone could bring it up inside kind locally and just use a tmate.1.1.1.2.xip.io address successfully.

We should probably run a service at pairing.k8s.io and default our configuration to use it.

kustomization for pairing.k8s.io

I published my work with @nviennot here:

https://github.com/kubemacs/kubemacs/tree/master/manifests/tmate

But we would need to get wg-k8s-infra involved to run it there.

osc52 (kubectl exec populating clipboard)

Since we work in cluster, we need a way for the terminal to back-haul copy/paste to the OS clipboard over kubectl exec. If we use a browser, I think we won't need it, but I really like working in my local terminal.

While not necessary, it's nice to have OSC52 support, and each OS has at least one option. It should be noted that both vim and emacs support OSC52.

Linux

working

not working (yet)

Most others are based on libvte, which still needs support.

Windows

working

not working (yet)

OSX

working

I can't recommend iTerm2 enough:

not working (yet)

hh commented 4 years ago

The last comment was created by exporting this file as markdown: https://github.com/humacs/humacs/blob/master/org/kubernetes/community/sig-contribex/mentoring-hour.org#mentoring-hour-improvements

markjacksonfishing commented 4 years ago

This is awesome. Thank you

markjacksonfishing commented 4 years ago
Screen Shot 2020-04-25 at 4 27 02 PM

This is the concept I am thinking about.

  1. Mentee wishing to be mentored fills out the google form. Via automation, a PR is opened with appropriate mentoring subproject labels.

  2. Either manually or via automation, the form is matched with available mentors for the given SIG the mentee has requested

  3. A doodle template is sent to the mentor who selects open slots and sends back to the mentee.

  4. Mentee selects slot and via automation, a calendar invite is created and sent to both mentee and mentor.

  5. Meeting happens

  6. At the end of the day of the calendar invite a survey is sent to the mentee and mentor. Once both are received back, the issue is updated and put in status for review (or we can close it)

cc: @nikhita @idvoretskyi @parispittman @mrbobbytables

hh commented 4 years ago

/cc

markjacksonfishing commented 4 years ago

@nikhita @idvoretskyi Any thoughts on the above?

markjacksonfishing commented 4 years ago

Per @jberkus For item 2: Leave this manual so we can learn more about the process.

markjacksonfishing commented 4 years ago

Per @jberkus

  1. A doodle template is sent to the mentor who selects open slots and sends back to the mentee.
    • Add communication preference for the mentor
    • If no response, an alert (can be email but slack is prob best) of some type is sent to the mentoring subproject
fejta-bot commented 4 years ago

Issues go stale after 90d of inactivity. Mark the issue as fresh with /remove-lifecycle stale. Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle stale

markjacksonfishing commented 4 years ago

/remove-lifecycle stale

fejta-bot commented 3 years ago

Issues go stale after 90d of inactivity. Mark the issue as fresh with /remove-lifecycle stale. Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle stale

fejta-bot commented 3 years ago

Stale issues rot after 30d of inactivity. Mark the issue as fresh with /remove-lifecycle rotten. Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community. /lifecycle rotten

fejta-bot commented 3 years ago

Rotten issues close after 30d of inactivity. Reopen the issue with /reopen. Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-contributor-experience at kubernetes/community. /close

k8s-ci-robot commented 3 years ago

@fejta-bot: Closing this issue.

In response to [this](https://github.com/kubernetes/community/issues/2657#issuecomment-808924752): >Rotten issues close after 30d of inactivity. >Reopen the issue with `/reopen`. >Mark the issue as fresh with `/remove-lifecycle rotten`. > >Send feedback to sig-contributor-experience at [kubernetes/community](https://github.com/kubernetes/community). >/close Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.