Diving into the GitHub Octernships program with OpenSauced
Tags: career, beginners, opensource, github
Published: 2023-08-24 13:08:00

In my last blog post, I shared how I got selected for the GitHub Octernships program and how you can too. If you haven't read it yet, you can check it out [here](https://dev.to/opensauced/how-open-source-helped-me-get-a-github-octernship-4f69). For this post, I'll talk about what I actually did in the Octernship, how it helped me improve as an open source developer and grow professionally.

## What we worked on
Anush (my fellow Octern) and I knew that we would work on a chrome extension because of the assignment that we did to get selected. What we didn't know, was the new things we were going to learn, and the amazing people we were going to meet.

When we started work on the open-sauced/ai chrome extension, it didn't even have a name, so yes, we were excited about being the proud maintainers and writers of the first few lines of code of a potentially big and impactful project.

I kicked things off by setting up the base for the extension popup with React, after a meeting with Anush and OpenSauced's founder, Brian. Before this, only one issue existed with people from the OpenSauced team discussing what the extension could possibly become.


[![Highlight screenshot](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uoysyttni6pd2cehyzgw.png)](https://insights.opensauced.pizza/feed/101)

After this, we requested another contributor who's work Brian really liked to work on the User Profile page, they helped us without hesitation and set up some really important context and a beautiful profile page with [this PR](https://github.com/open-sauced/ai/pull/36). Anush worked on adding the "Share OpenSauced  Profile" button to GitHub's UI, and other critical bug fixes and performance improvements, while I did the "View on OpenSauced" button.

We worked on a lot of code injection features to modify GitHub's UI and make a simple bridge to OpenSauced that will help us retain and find new users. If you want to know **how** we did that, [this](https://dev.to/opensauced/how-to-change-a-webpage-ui-with-a-chrome-extension-jn8) might be a good future read.

For the first 2 months, our work involved working on the extension's frontend and interacting with the OpenSauced API.
For the next two, we changed our focus to AI!

## The Pivot
An important part of making products is knowing what sells, and to start focusing on exactly that because that's what will bring people to your app, website, or even chrome extension in this case.

Brian had a great idea of integrating AI features into the extension, and Anush and I were thrilled to work on these. Essentially, these ideas were GPT-wrappers, but integrating them into GitHub was the hard part (selecting and appending content from and into the GitHub UI).

We started with the first feature and were done in a few days. 

This feature was a way for contributors to summarise their pull requests and add AI-generated descriptions to them. We summarised the PR by getting the source code or the commit messages that the contributor added. This was a great start. As part of the settings panel in the popup, users could configure the parameters for content generation, like the tone, temperature etc.

![Chrome extension panel with AI configuration](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/41ia11r07ftr3ua9nezz.png)

Next, we worked on AI features to assist developers during code review. These were a set of 3 features. The first one was implemented initially, and all 3 were merged into a dropdown later. 

These features included:
- Generating tests for the selected lines of code during PR review.
- Generating refactor suggestions.
- Generating code explanations.

This was another important feature that allowed us to dream up new features and to attract contributors who were excited about the applications of AI. We worked on these AI wrapper features for about a month, and then we switched to the last phase of features planned for the chrome extension.

## RepoQuery 
[RepoQuery](https://github.com/open-sauced/repo-query) is an AI tool to index public GitHub repositories and answer user queries about them.
The idea for RepoQuery came from one of Anush's projects that he made for a hackathon, DocQuery. DocQuery does the same thing that RepoQuery does, but for documents.

Anush worked on the backend for RepoQuery with Rust and Qdrant, while I worked on the frontend chat dialog that would appear on the home page for every repository on GitHub, and also the CLI based interactions for repo-query for [open-sauced/pizza-cli](https://github.com/open-sauced/pizza-cli).


![RepoQuery Demo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hlilo4qvvwv9yx0psu1z.gif)



You can start using RepoQuery now by installing the [OpenSauced/ai chrome extension](https://opensauced.ai/).
This was the work that we have been doing for the last few weeks.

## Blogs
Technical writing and communication are a really important skill that every developer must know to share their ideas and knowledge with other members of the community. Blogging is something I always wanted to do but procrastinated about.

I wrote and published my first blog as part of the GitHub Octernships program, and worked with a professional content writer for the first time too. Bekah is the Developer Experience Lead at OpenSauced, and has a lot of experience writing content. She even taught technical writing to University students, so I knew I was in good hands.

She read through all my blogs and reviewed them, which requires a lot of patience and skill that I admire.

After I wrote my first blog, I reached 500 followers on dev.to in no time, and crossed the 1k mark with the second one. This was only possible due to the audience Bekah and other writers for the OpenSauced team had gained over a long period of time.

I've written 3 blogs up until now, and have liked writing content, so I’m looking forward to writing more!

## Other Repositories
Over the last few weeks, the chrome extension has just needed some bug fixes here and there, and a few QOL improvements. Since it’s been nothing too challenging, Anush and I switched our focus to other OpenSauced repositories to keep challenging ourselves and continue learning new things. Brian and John, an experienced developer at OpenSauced, have supported us in exploring new ways to contribute too.

I made a pull request that integrates RepoQuery with the OpenSauced/pizza-cli CLI application written in Go. Go is a great beginner-friendly language and I always wanted to contribute to a Go-based open source project, which I could do thanks to the Octernship and OpenSauced.

I’ve also  worked on the core product for OpenSauced, [the insights project](https://github.com/open-sauced/insights). I've added a few features in the last week, to both the backend API written in NestJS and the frontend made with NextJS. I had not worked with NestJS before, but Brandon, the maintainer of the [api.opensauced](https://github.com/open-sauced/api) repository helped me get started in the most calm and supportive way possible, which honestly, I wasn't expecting from a senior dev with so much to do (he is also the founder of an Angular based meta framework called Analog).

I look forward to continue working on all three of these repositories and possibly even more in the coming months, thanks to the help and support I've received from the developers at OpenSauced.

## What's Next?
I have 2 months until my octernship ends, and I plan to be as useful as I can during this period. I hope to get a remote developer job in the future on the basis of the work I've done during my 6 month octernship, so I need to do as much as I can to put myself out there. I also plan to continue writing blog posts for OpenSauced whenever I get some free time and, of course, continue maintaining OpenSauced/ai and contributing to the various other OpenSauced repositories even after my Octernship ends.

I wish people who have read my Octernship blog posts good luck and hope they get selected for the program too!