DEV Community

olive ren
olive ren

Posted on

Using an AI Coding Tool to Contribute to Open Source Project

Intro
As an aspiring product manager with not a whole lot of experience in contributing to open source projects, I’m eager to learn and grow my technical skills.

Open source projects present a fantastic opportunity for beginners like me to collaborate with experienced developers and gain hands-on experience in software development.

In this article, I’ll explore how I can leverage AI coding tools to contribute to Intuit’s Player UI project.

For those new to the concept, open source software is publicly available for anyone to use, modify, and share. Platforms like GitHub serve as hubs for these projects, allowing developers from around the world to work together seamlessly. To help everyone stay on the same page, I’ve included a glossary of key terms related to open source contributions and the tools we’ll discuss.

Term list (for those who are new to Github and Open Source):
Open Source: Software anyone can use, modify, and share.
GitHub: The go-to platform for developers to collaborate on projects and track changes.
Repository (Repo): A project’s home base, where all its files and history live.
Pull Request (PR): A way to suggest changes to a project, sparking discussion before merging.
TypeScript: A coding language, powerful version of JavaScript that adds types for safer coding.
Player UI: Intuit’s toolkit for creating sleek, cross-platform user interfaces.
Flow-based Architecture: A design style that emphasizes how data moves through an app.
AI Coding Tool: Smart software that helps you write and improve code effortlessly.
Contribution: Your chance to enhance an open source project, whether through bug fixes or new features.
Process:
There are 139 Intuit Open Source Repos and I don’t think I could go through each one by one. So I asked Perplexity.ai and Devv.ai for help.

Image description

First Prompt:

look at the intuit open source projects: https://github.com/intuit as a aspiring product manager who also wants to learn the technical stuff, and has some experience in typescript, which project should i choose to start with a simple contribution?

Image description

I asked this to Gemini 1.5 Pro on Devv.ai and it gave me a really lazy answer

Image description

Super Lazy Response :(
So I asked my good ol’ friend Claude Sonnet 3.5, who recommended Intuit’s Player UI and gave a good explanation for why I should do that:

Image description

Not Lazy and Very Helpful :)
I also asked Perplexity.ai which Repo I should pick, and it recommended Karate Labs, a unified framework for API test-automation, mocks, performance-testing and UI automation. Sounds interesting, but the last pull request was opened a month ago, so I decided to try Player UI instead.

Next steps, look at the Player UI Github Page and take notes for learning and prompting later on. There are a few sub cagegories of repos, so I asked Devv:

Player UI has a set of sub repos, can you look at each, explain them, and pick one for me?

And.. it hallucinated, of course.

Image description

Imaginary Repos :(
Those repos do not exist lol. So I kindly reminded Devv of the actual repos.

I was recommended to work on the main Player repository because it’s actively maintained and has a larger community around it. Since it was updated pretty recently (5 days ago), I thought it was a good choice.

Thus, I started a new thread and selected the player-ui/player repo for Devv as context. Devv will look through the repo and use it as context for our conversation.

Image description

Devv Let’s you use Public Repos as Context
To prevent myself from not being able to identify hallucinations from Gen AI, I took my time looking at Player UI and really understand what it is about.

I asked Devv some more questions about the repo based on the documentation I read. This is what I learned:

Player UI is a framework that helps Intuit developers build cross platform interfaces, kind of like React/React Native and Flutter which I am familiar with
Player UI uses typescript, thus benefiting from everything typescript has. (What Are the Benefits of Typescript?)
Flow-based Architecture: Player UI uses a flow-based architecture, which is different from the component-based architecture of React or the widget-based architecture of Flutter. In Player UI, you define a flow of screens and transitions between them. Here’s an example:

There are also other things like Data-binding, plugin systems etc.

Image description

Now time for contributing, or not?
I asked:

what is a good first contributtion for this repo? balance contribution impact and ease of implementation. here are some of the past pull requests…

I was recommended to work on the documentation first.

But fter going back and forth with chats and rummaging through the project, I realized that I wanted to learn more about the project before making a crappy pull request adding extra work to contributors.

Here’s my plans for next steps:

  1. Read more pull requests from the past and look at issues

  2. Try Player UI out as a user and see how the experience is like, if there are any gaps or not

  3. Decide on a contribution I can make that is the perfect intersection of my skill level and impact.

I hope I follow through my plans and will update here!

Thanks for reading so far! I hope you got encouraged to try contributing to an open source project yourself :) It is a great way to learn.

Top comments (0)