A year ago the JupyterHub/Binder teams participated in our first (and only) round of Outreachy. We learned many things along the way, and decided to put together some best practices (original thread here).
We’re posting this information here in the hopes that it is useful to others in the community, and other teams within Jupyter. This post will be marked as a wiki post, meaning that anybody can add their own experiences or links.
In addition, here is the JupyterHub
outreachy repository which was used in organizing the application process ahead of time.
The experience was really valuable, and everybody agreed we should participate in Outreachy many more times if possible
It is a significant time investment, in terms of planning, management, and technical execution. Be realistic about the bandwidth we’ve got to mentor.
Preparing for applications is very important - ensuring that issues are well-scoped, labeled, and fit into the broader goal of the project were crucial.
In short, these are the tasks that should be completed before starting the Outreachy process:
- come up with future internship project ideas
- come up with sources of a lot of micro tasks for applicants
- plan for mentor time and funding
- ensure that your contributor and onboarding documentation is excellent
Prepare before applications come in
Preparing for applicants is the most time-consuming part. It is a crucial step in getting good applications, and empowering the prospective applicants to be effective in addressing issues. Here are some main takeaways
Use a separate repository for the application phase. Populate it with information about the project, how Outreachy interns could help out, and a large collection of issues to tackle.
The project(s) should have a clear roadmap. Having a roadmap helped prospective interns learn what the project was trying to accomplish, and helped contextualize the issues they decided to work on.
Include information about the organization, team, etc, as well as instructions for how they should go about tackling Outreachy issues
There should be strong contributing documentation for novice contributors, in order to help them get started contributing to the project. For example, a
CONTRIBUTING.md document, or contributor pages in the project’s documentation.
Have a long list of micro-tasks for applicants. These are the tasks that potential Outreachy interns may help with, and they’ll require a lot of reviewing during the selection process. This is the hardest part of the Outreachy process. They should entail lots of discrete PRs that are easy enough to do for newcomers, but non-critical enough that they don’t require immediate resolution (note that many applicants will start work and move on without finishing). Set aside a lot of time to review and assist applicants on these micro-tasks during the application period.
Be encouraging, positive, and clear when describing micro-tasks as well as issues for the internship itself. It is really attractive to applicants if the team comes across as supportive, helpful, and productive.
During the internship
Choose well-scoped internship projects. These should be reasonably scoped for 12 weeks. Make sure the intern project clearly fits in with the goals of your roadmap (you don’t want an Outreachy project that feels totally tangential, and that nobody else is interested in). Pick tasks that are important to be done, but not crucially blocking on the project. Prepare “stretch” goals to allow some buffer if the intern is really productive.
Be responsive and supportive to requests for help. Remember that Outreachy is a learning opportunity and an internship, and your commitment is to supporting the intern throughout the process.
Engage other members of the community. Ask them to review PRs and Issues that the interns open, and to chime in with their own thoughts (or encouragement). This is also easier if you’ve scoped a project that fits in with the team’s roadmap.