Me, Yaw and Jeff at GSoC Mentors Summit '18 (Google Campus, Sunnyvale)
A few weeks ago, I attended the Google Summer of Code (GSoC) Mentors Summit with @yanokwa, @Jeff_Beorse, and @downey. It was an amazing experience and I would like to thank @LN and @yanokwa for serving as org admins and giving me this opportunity.
At this year’s summit, I learned three big lessons that I will use to improve ODK’s code and community going forward.
- Focusing on writing user docs and inline developer docs while writing new code
- Improve the organization of the GSoC program in our community by structuring some of the processes
- I was amazed to see the exceptional use of Trello for keeping the volunteers occupied and also using it as a tool to understand the action items. I am looking forward to discussing the pros and cons of the addition of another tool with the community.
Over the three day summit, there were a lot of sessions going on in parallel so I was only able to attend a few of them. I took notes and I’ve summarized the highlights from those sessions below. If any of these notes give you an idea of how we can improve our community, please let me know so we can work on the improvements together!
Documentation
- Some people prefer docs living closer to the code (not feasible in case of ODK which has a lot of repos and a centralized documentation for all)
- Inline developer documentation provides a lot of contexts while writing user-documentation
- Promote Documentation Driven Development (DDD). When someone contributes to the code, the same person should add the docs in the same PR or a link to an issue (ODK does it already)
- Tooling should make it as frictionless as possible to add docs (sphinx)
- Automation that takes screenshots during tests, and integrates the screenshots in the docs (might not be feasible in ODK’s use case where docs and code do not reside in the same repo)
- We need to encourage tech writing, and also make it part of the developer culture.
- README-driven development. You’re responsible for writing the test cases and docs as well as the code.
- GSoC projects should include writing the docs for the code as well
Search for mentors
- Trello checklists mentioned below under “Volunteers” heading
- Mentors should have a personal interest in the project and the global goals of the project
- Early start looking for GSoC students
- Finding mentors by organizing meetups
- Sharing the word using social platforms
- It's okay in not being a super-coder mentor but it’s important to be a social and motivating one
- Bonding period very important for predictions. The earlier the better. The longer the better.
- Mentors lacking responsibilities drifting off: structure the process more. Schedule meetings.
- Make the mentoring process more structured
- One org alternates between
- even week: a one-on-one meeting between the student and their mentor(s)
- odd week: all students/all mentors meeting
- Get on social media to recruit students
- Announce mentoring opportunities during regular project meetings
Retaining students
- Give people responsibility & roles so that they have a sense of ownership
- Show the career benefits of staying involved
- Continue meeting even after it ends
- Invite students at conferences/meetups
- 4Rs (Mifos) - Reward, Recognition, Recommendation, Referral
- Make it a pre-requisite for students to get involved in other ways (code reviewing)
- Publish articles or videos recognizing students.
- Keep on people who have been rejected but had great proposals
- Offer to send them a certificate/t-shirt for their work
- Help with recommendation letters
- Maybe will help them get accepted to GSoC the following year
Volunteers
- The main focus was on how to use Trello board to keep a track of volunteers (visibility restricted based on the type of board) entering and leaving the projects and use that info to motivate people and direct people to useful tasks which need volunteers
- Why it is required? - Github only shows commit history and it is difficult to keep a track of the actual contribution of volunteers
- Trello has features which have proven to be super-useful to automate/remind tasks related to management or motivation of volunteers
- Some use cases mentioned
- Keeping a track of new contributors who need motivation/guidance and following up with them
- Sometimes people lose interest in a project because they don’t know what to work on
- Checklist of user-life
- Trello board life-span.
- Look and check for a PR
- Look for new forum user intro
- Look for new issues/replies
- Check social network
- Having a public board which is visible to everyone
- Ongoing tasks: Stuff that needs to be done regularly (Code review)
- Roadmap items: Development stuff that needs to be planned and discussed
- Released items: Tasks that are completed are moved into this
- Example Trello board
- A private board to keep a track of all contributors
- Having all references of the user on different platforms (GitHub, forum, slack, email)
- Keeping a checklist of user-life i.e. milestones for the contributions made and also using that to give badges in the forum. This helps in indicating if someone is ready for being a GSoC student/mentor, trusted reviewer
- Eg. Introduction on slack/forum, PR submitted, Issue opened, Made a significant contribution, Code reviewed,
- Use Trello’s feature to make the card turn yellow if we haven’t engaged with that person lately
- Trello can be integrated with GitHub, slack and other tools to keep stuff automated to a certain extent but maintaining this board takes up a significant amount of time
- Suggestions to use separate boards for GSoC/Outreachy program
Mentor/Mentee Relationship
- Recommend mentors to read Google's guidelines or create a new one because larger sized guidelines have counterproductive results
- Recommended mentors to ask mentees to regularly update the community / write blog posts with the weekly / bi-weekly progress
- Use community bonding period to create a bond between students and the community by setting up video conferences, discussing the project
- Communicate with students in public! It’s important that students must bond with the entire community and just with the mentors.
- Make it mandatory to write a blog post every 1-2 weeks
- Story - Students have to go to a public event and show the idea
Quality of Software
- Quick summary: ODK already has a pretty solid development-release-cycle which along with governance makes the release cycle structured
- The focus was on how to decide when a release should be made based on the stability of the software
- Use Net Promoter Score (NPS) to get user feedback
- Handle public negative feedbacks/complaints gracefully. People usually do not realize that an actual person is responding and become harsh. Try emailing/messaging them (twitter/play store/mailing list/forum) and understand the reason for their review. Use a profile pic of yourself and not an avatar.
- Ship experimental features along with the production release (may not be applicable to all projects). The only condition is that the experimental feature should not cause any kind of data loss to the user.
- Experimental button for voluntarily opt-in for the experimental feature