As an enthusiastic participant in the open source community, we were excited to participate in the Outreachy technology internships program again this year, which focuses on women and underrepresented groups. It's a way GitLab can give back, and as a bonus, Outreachy's principles intersect with our Diversity, Inclusion and Belonging value.
About the Outreachy program
Initially, Outreachy began as the Open Source Program for Women (OPW) at GNOME. The program was successful and grew quickly. Today, Outreachy has grown into the largest global technology internships program that provides opportunities for women and underrepresented groups to work on open source projects.
Currently, Outreachy is independently organized with the help of many volunteers, or sponsored help. For example, Cindy Pallares is a GitLab employee and helps with organizing Outreachy as a site reliability engineer.
Outreachy is a paid technology internship program that runs twice a year for three months. During that time, interns can work in areas like programming, user experience, documentation, illustration and graphic design, or data science. In this technology internship program, participants work remotely with experienced mentors from prominent FOSS communities like Git, Mozilla, Linux kernel, GNOME, Wikimedia, and many others.
One of the benefits of the Outreachy technology internship is that the interns do not need to be students. It's a great opportunity for people who are coming back into the workforce after a hiatus, or who are navigating a career change into tech. This technology internship program is unique because it incorporates skill sets beyond engineering – which creates a broader range of skill sets represented in the open source world. The Outreachy internship is remote, making it more relevant than ever during the pandemic by helping interns gain experience working on an all-remote team.
GitLab is one of the organizations that sponsors the Outreachy technology internship program, and we hope that by sharing our experience we can encourage more tech organizations to join us in participating in Outreachy as corporate sponsors.
Outreachy interns work on Git
More than 90% of the professional applications created today are built using open source components, according to a 2020 Tidelift survey. One of the fundamental open source technologies we leverage at GitLab is the Git project, so we chose to sponsor an Outreachy intern to work there.
GitLab sponsors an Outreachy intern to work on one of the most critical open source technologies that it relies on: The Git project.
Christian Couder, senior backend software engineer at GitLab, who works on Git full-time, introduced the GitLab Developer Relations team to the Outreachy opportunity during the winter of 2017-2018 round. An experienced mentor for other programs like Google Summer of Code, Christian thought that it would be great to mentor an intern through the Outreachy program as well. Since the number of mentored interns and the need to sponsor them increased over the years, GitLab has sponsored an Outreachy intern for the Git project since winter 2019-2020.
Outreachy at Git works similarly to the Google Summer of Code (GSoC) program. Git participates in GSoC in the summer and Outreachy in the winter. These programs consist of the Git project finding mentors and project ideas for individual participants to work on. Then there is a selection step, which includes working on a micro-project (a small code-related change), as part of the application process, and writing a proposal for a project to work on during the internship. After the interns are announced, they begin to work on their projects. Typically, Git tries to provide two mentors per intern to provide the best possible experience for the mentee.
The mentors used to be long-time Git developers, but more and more Outreachy and GSoC alumni have returned to the program as mentors, indicating the power of these programs.
The mentors volunteer some time each week to help their mentees by answering questions, providing suggestions, reviewing contributions, etc. Contributions still have to be sent by participants to the Git mailing list as patches. Then, other experienced Git contributors review the contributions before they are integrated into the Git code base by Junio Hamano, the Git maintainer.
Meet the Outreachy interns
We met with the Outreachy interns at Git to learn more about their experience participating in the winter 2020-2021 Outreachy technology internship program. In the next section, the Outreachy interns shared what the experience was like, in their own words.
Charvi Mendiratta: A self-taught programmer with an interest in robotics
This section was written by Charvi.
I am a recent graduate from the electronics field in India, a self-taught programmer with internship experiences working on mobile robotics projects, and I aim to pursue a career as a software developer. - Charvi
It turned out to be difficult to find a job as a software developer because of my background in electronics and because I lacked professional programming skills. Also, there are very few job opportunities for recent graduates in software engineering roles, especially those related to robotics.
Due to these challenges, I decided to try out open source in parallel with brushing up my skills. I supposed that open source contributions would be the best way to get hands-on experience with projects that required real-life problem solving skills, and I wanted to learn to convert my code into deployable software. That's why I decided to apply to the Outreachy program.
Besides wanting to learn more about creating enterprise-grade code, I have always been interested in being part of the open source community. I first learned about open source work culture from my college programming community. I remember the old days when I attended an open source event called 'Software Freedom Day' at my university. That's where I first learned about different open source programs like Outreachy.
Over the course of my three month internship, I worked on cleaning up and improving the Git interactive rebase, which is a useful git command to rewrite or modify the commit history. - Charvi
About Charvi's Outreachy project
My work on Git's interactive rebase, which was mentored by Christian and Phillip Wood, will help users who want to rework their commits and make it easier for users to improve the quality of their contributions. When teams practice code review, for example, it's very useful to rework commits to make them better or easier to understand before a reviewer steps in, and to fix them when reviews point to problems.
First, I added the options '-c' and '-C' to the present
fixup command in the interactive rebase. The
fixup command adds the functionality to edit the commit message of the specific commit listed in the interactive rebase (see merged patches). This work is based on the original patch series, started by Phillip.
Then, I worked on the follow-up patches and introduced some improvements after discussing the user interface of the added options with the Git community. Next, I worked on adding the new feature to
git commit --fixup that allows to prepare the "amend!" and "reword!" commit, as an alternative to the present
fixup! commit. It works with
git commit --autosquash and will help to fix-up the content and commit message of the specific commit from the command line (see merged patches).
Joey Salazar: An engineer with international experience
This section was written by Joey.
As a female engineer from Costa Rica, who graduated in China through a full scholarship, it has been a challenge to find opportunities with mentoring for my transition from IT into programming. - Joey
Even though I worked five years in IT (OS, networking, and storage), and was certified in Linux+ and CCNA through self-learning before beginning my software engineering studies, most companies and organizations seem eager to hire mid-senior level developers. Very few seem willing to invest in helping people get to that level, or in finding ways to build on any preexisting IT experience. As an open source advocate, it was through my research of open source technologies and the open source space that I came across community groups such as WomenWhoCode, which was where I learned about Outreachy.
About Joey's Outreachy project
My favorite thing to work on, probably because of my background in privacy advocacy, was adding the foundations of HTTPS connection support for the Git protocol by following up on a patch started (and shared by) long-time Wireshark developer, Richard Sharpe. – Joey
My work on Git protocol support in Wireshark, which was mentored by Git developers employed by Google, Emily Shaffer and Jonathan Nieder, will help users debugging Git or any Git using software (like GitLab). This work helps production teams or developers understand what's going on between Git clients and servers, so they can better troubleshoot or optimize how Git works. This project will help demystify Git and its inner workings in the tech community.
As Wireshark is "the world’s foremost and widely-used network protocol analyzer", improving the way it dissects and presents the Git protocol to the user is helpful and important. Traffic interception and analysis is part of many user's workflows – from students, to researchers and advocates. For a few years, Git's dissector in Wireshark was bare-bones, and supported only raw traffic transmitted over regular TCP transport – my work is helping to change that.
By starting with base functionality and building on top of other member's work, Joey and her mentors added parsing of the multiplexing (sideband) version in use (if any) to Wireshark's dissector for the Git protocol. Next, they added parsing for the specific version of the Git protocol that is used, following up on an MR to parse the Git protocol version, did some refactoring on an MR to refactor Git packet line dissector, and began the foundations for Git protocol's testing suite.
Today the Git dissector now includes more functionality and error handling, as well as HTTPS transport support – all of which was done through GitLab's platform.
Outreachy mentor shares experience
Christian, the Outreachy mentor and GitLab team member who worked with Joey and Charvi, shares what the experience was like in his own words.
There are many rewarding parts to being a mentor. I really enjoy seeing mentees gain confidence over the weeks in their abilities to contribute significantly by themselves.
Since Git is used by more than 80% of the developers in the world, I hope that the Outreachy interns get the feeling that they can improve things even in small ways for millions of people and that their work can have a global impact. - Christian
I also really enjoy it when former mentees want to continue contributing to the Git community after their internship. Outreachy alumni contributions can take many forms. Sometimes they continue to contribute on the same topic as their project, sometimes they participate in related discussions, even 10 years later. One of our mentees was recently hired to work full-time on Git. And it is of course great when they want to become mentors, so they can give back to the program and increase the number of people who can get mentored.
It's great too that Outreachy, Google, and sometimes the Git project itself all provide funds for former mentees to come to in-person Git events or open source-related conferences. Meeting mentees in-person is very rewarding. At in-person events, the interns can also meet a number of Git-related companies and people, and of course, learn even more about Git and open source. For some of them, it was the first time they traveled outside of their country or could visit a different continent.
Mentorship comes with challenges
The most challenging part of being a mentor is the fact that the Git codebase is getting bigger and more complex as Git evolves and gains features all the time.
This makes it hard for participants to stay on track when the internship starts. They sometimes have to trust that following the process we suggest will lead them to better and better understanding until they can find their own way and become autonomous.
Outreach interns share their key takeaways
We asked Joey and Charvi to share some of the ways that the Outreachy technology internship has impacted them.
Joey has a better understanding of herself
This section was written by Joey.
My Outreachy internship helped me better define the type of team and community that I'd like to join and which will benefit the most from the wide range of skills that I can offer. – Joey
Outreachy was an amazing help, not only in technical areas, but also with soft skills. For example, I formed a solid understanding of Git. Now I can use
git cherry-pick and
git rebase, as well as squash, comfortably since I understand better what they do, and how. Those Git commands gave me lots of trouble when I was a junior developer for BIND, and now they don't give me trouble anymore. I also reinforced fundamentals in C -- implementing pointers and references without panic and knowing about vtables -- and I learned how to write test cases in Python.
A crowning achievement was finding balance between patience and impatience, and between autonomy and guidance.
Charvi has fallen in love with the open source world
This section was written by Charvi.
Outreachy helped me start my open source journey. - Charvi
I have always been fascinated with the open source work culture as a way to learn, share, and grow. I finally got wonderful working experience too, since both Outreachy and the Git project are prestigious organizations.
I learned a lot throughout the entire internship, starting from when the Outreachy contribution period began before I qualified for the internship. On the technical side, I enhanced my C programming and debugging skills, learned to write neat code, learned about shell scripts, and developed a deeper understanding of Git commands and about the Git project workflow.
Apart from this, my internship helped me improve my communication skills, make connections with amazing software developers, and become more confident in myself. I am sincerely thankful for the Outreachy program, Git community, and my mentors, Christian and Phillip. It was an amazing learning journey.
So what's next?
Now that the Outreachy internship has concluded, both Joey and Charvi are ready to leverage their skills and experience working on the Git project to future work in FOSS. Learn more about Charvi's experience and Joey's experience by following the links.
GitLab's continued internship opportunities
GitLab is proud to have sponsored and mentored an intern for the Git project during the most recent round of Outreachy technology internships. We hope to someday qualify for our own Outreachy interns to work on the GitLab FOSS project (which celebrates 10 years in October 2021).
This summer, GitLab will also be participating for the first time in Google Summer of Code 2021. We look forward to mentoring engineering students through that technology internship program.
In addition to participating in these two great technology internship programs, GitLab held its first engineering internship program in 2020 with great success. As a result, GitLab will continue to hire interns for various projects and teams in an ongoing fashion, with a specific focus on recruiting interns from underrepresented groups in engineering.
We look forward to supporting these programs that help foster diversity in open source and the wider tech industry, and are excited for the year ahead!