From First-Time Open-Source Contributor to Intern!

From First-Time Open-Source Contributor to Intern!

Hi! My name is Sheila Kahwai. I am a Python developer based in Nairobi, Kenya.

Throughout my life, I have always committed to Plan A. I needed to put all my efforts into one project to ensure it worked. It is called ‘tunnel vision’, I hear. Plan B felt like uncertainty or giving up.

I was thrust into the world of tech in 2014 when I started pursuing a Computer Science degree. I say ‘thrust’ because tech was more of a backup. You know, in case my aviation dream did not pan out. Let me save you the suspense, it did not pan out! Even so, my passion for tech didn't take until May of 2022 when I joined the ALX Software Engineering Program.

Since becoming a born-again coder, I have watched lots of software developer videos on YouTube from ‘A day in the life’ to ‘How I would learn to code if I could start over again’. One gospel has stood out; contributing to Open-Source. I did not understand why it was so important but I knew it was something I had to do if I planned on becoming successful in my new Plan A.

In my quest for opportunities to contribute to open-source, the search algorithm did its thing. I came across the Outreachy Internship program on Twitter and I was sold. “What is Outreachy?”, you ask. Outreachy is an internship program that supports diversity in free and open-source software. It is a 3-month paid and remote internship that runs from May to August and December to March every year. It is open to applicants from around the world who face under-representation, systemic bias, or discrimination in the technology industry of their country. You really should check it out!

Without wasting any time, I filled out my initial application. After a month of silent prayers and hopeful sighs, I got the email; “Congratulations…” yey!!! But then came the grueling yet fulfilling, 5-week-long contribution period. I chose to contribute to Project JupyterHub. As we in Kenya say, “Wueeeh!” It was tough as a first-time contributor but Alas! I was doing it!!! By the end of that period, I felt like I had run a marathon. I had to take a week-long break because I needed it. I deserved it!! After another three weeks of waiting, came another email; “Congratulations!....” I ugly cried my little eyes out this time! Plan A was finally panning out. Everything felt right in the world.

I just began my internship with JupyterHub and want to tell you a little about it. The first time I heard of JupyterHub, my mind went straight to Jupyter Notebooks, which I learned isn't completely accurate! The end-user only briefly interacts with JupyterHub at the point of user authentication.

JupyterHub has four main components:

  • The Hub: It is the heart of JupyterHub. It handles user authentication and creates(spawns) the Notebook server.

  • The Proxy: It handles client-server requests and forwards them to the Hub

  • The Authenticator: It manages user access to the system

  • The Spawner: It serves up single-user notebooks.

So each component has its own testing suite built using the Pytest Framework. This complex work becomes repetitive since there are a lot of similarities between the testing suites. That is where I come in.

For the next 13 weeks, my project involves creating a reusable JupyterHub pytest plugin. This involves identifying reusable hub functionalities and creating fixtures within the plugin based on these functionalities. This will make testing the components and their various implementations easier, more efficient and promote the maintainability of the JupyterHub Project. I will cover more on this in the upcoming blogs as I document my Outreachy internship journey with JupyterHub.

It is going to be an uphill battle but as I learned in ALX, we are not meant to do easy things. We do hard things and we do them well!! And with the help of the welcoming JupyterHub community and my mentor, Georgiana Dolocan, I am sure to succeed in this mission.

So join me on this 13-week-long journey as I maneuver through this massive code base, knees shaking, heart thumping, sweat drenching, and all.

Connect with me on Twitter :)