Building in Public: Leveraging Tublian's AI Copilot for My Open Source Contributions
Tags: opensource, aicopilot, softwaredevelopment, programming
Published: 2024-02-12 19:22:46

Embarking on an open-source journey is like entering a vast galaxy of possibilities. In this post, I will share my exhilarating experience of discovering and contributing to an open-source project using Tubilan's AI Copilot. 

### _What do I mean by Tublian AI copilot?_

  Tublian's AI Copilot for open source helps by telling you the steps to take to fix a particular issue.

With the help of Tubilan’s Open Source Copilot, I was able to identify a project that aligned with my interests and skillset. The tool provided me with a list of open source projects that were relevant to my experience and expertise. I was able to browse through the projects and find one that I was passionate about.

### Identifying the Perfect Project

Choosing the right open-source project is like selecting a star in the night sky. I began my exploration on [Tubilan](https://www.tublian.com/), navigating through a constellation of projects. The Copilot's intelligent suggestions guided me to a project aligned with my interests and skill sets, making the initial phase of discovery seamless.

![Project categories](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dj4gpn6pss5gmbtofgi3.png)

![Issue description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/no83ebcxzjnptm658tg3.png)

![Tublian's AI Copilot help](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2whno4g2iba6xy6qco9a.png)

### The Power of Community in Open-Source Contributions

Contributing to open source isn't just about writing code; it's also about joining a supportive community of developers who share your passion for building great software. [Tublian ](https://www.tublian.com/)helped me break the ice by suggesting conversation starters based on my contributions, but the real magic happened when I started interacting with other developers on the project's Discord channel.

I vividly remember one instance where I was stuck on a particularly tricky bug in my PR. I posted my code and explained the issue, and within minutes, several experienced developers jumped in to offer suggestions and potential solutions. We had a lively discussion, sharing different approaches and troubleshooting steps. Not only did they help me fix the bug, but I also learned a lot from their insights and different ways of thinking about the problem.

Beyond technical discussions, the community also provided a space for casual interaction and knowledge sharing. I enjoyed participating in the regular community hangout sessions, where we would chat about our experiences, share resources, and offer encouragement to each other. During one such session, I even had the opportunity to present a short workshop for new contributors, sharing my own experience and helping them get started on their open-source journey.

The sense of community and shared purpose was truly inspiring. It wasn't just about coding; it was about being part of something bigger, collaborating with others to create something valuable for the world. This experience has solidified my commitment to open source, and I look forward to continuing to contribute and learn from this amazing community.

### Unexpected Encounters

My journey wasn't all smooth sailing. One project I initially joined went inactive, leaving my contributions unfinished. However, this detour led me to explore another project that aligned better with my long-term goals. It taught me the importance of adaptability and resilience in the open-source ecosystem.


![One of the encouters](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bzff4yj7nrl4yjm35abm.png)



### Contribution to Apache Airflow and Azure Synapse Integration

The spotlight shone on orchestrating tasks within the intricate Azure Synapse environment. My journey led me to a key contribution in the form of enhancing a Directed Acyclic Graph (DAG) in Ap[ache Airflow](https://github.com/apache). Here's a glimpse into my endeavors

Below is The code snippet for the one I worked on:

`AzureSynapseRunPipelineOperator 
`

```
begin = EmptyOperator(task_id="begin")

run_pipeline1 = AzureSynapseRunPipelineOperator(

    task_id="run_pipeline1",

    azure_synapse_conn_id="azure_synapse_connection",

    pipeline_name="Pipeline 1",

    azure_synapse_workspace_dev_endpoint="azure_synapse_workspace_dev_endpoint",

)


begin >> run_pipeline1

from tests.system.utils.watcher import watcher`
```

**Contributions Made**

- Optimizing Spark Job Execution: The heartbeat of the DAG pulses through the `AzureSynapseRunPipelineOperator,` and my first contribution involved optimizing the execution of Spark jobs. By delving into the intricacies of the existing codebase, I identified opportunities to enhance efficiency, resulting in a more streamlined Spark job execution process.

**Enhancing Pipeline Execution**

- The DAG orchestrates the execution of specific pipelines within Azure Synapse, and I took charge of refining this process. Leveraging the `AzureSynapseRunPipelineOperator`,
 I enhanced the DAG to seamlessly execute designated pipelines, contributing to a more robust and efficient workflow.

### Challenges Faced

The path to contribution wasn't without its detours. Cracking the code of the intricacies of Azure Synapse and the nuances of Apache Airflow tasks presented initial challenges. However, each obstacle transformed into a stepping stone for personal growth. The journey fostered problem-solving skills through deep debugging, instilled respect for established coding standards, and nurtured the value of collaboration within the open-source community.


![Screenshot of error in my terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z227mazl1742xnznusb9.png)


![Failed testing](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ek2atq59d4wt0t7j9mrv.png)



### Sharpening Skills Through Peer Review

Contributing to [Apache Airflow's](https://github.com/apache/airflow) open-source project immersed me in collaborative coding. Experienced maintainers rigorously reviewed my contributions, providing constructive feedback. This ongoing dialogue refined the codebase and honed my understanding of best practices.

![Maintainer reviewing my PR](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r4hnyngdv3e753meb5vh.png)

### Testing Symphony

Integrating the system testing module's watcher task played a key role. This addition not only validated execution scenarios but also underscored the value of robust testing in DAG orchestration, ensuring the entire workflow played in perfect harmony.

_Rigorous testing is my passport to merging my contribution._ 

Passing tests demonstrate code quality, prevent regressions, and ensure a smooth integration into the project's ecosystem.

![Testing stage](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e4jua5mdo0i3r8oqc9uv.png)

_Just witnessed the glorious sight of my PR getting merged! All that hard work paid off, and I couldn't be happier._

This merge feels like a victory lap! Huge thanks to the reviewers and community for their collaboration and support.

![PR got merged!](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v54kqpxxmlxat1w8oezt.png)

### Your likely questions

1. How did my code address the bottleneck or problem I identified?
2. How did my contribution fit into the overall Azure Synapse optimization project?
3. How did I come up with the code snippet?

### Response

1. Azure Synapse unifies the data workflow, offering a cohesive experience for ingesting, exploring, preparing, transforming, managing, and serving data to address immediate business intelligence and machine learning requirements.
2. My contribution focused on optimizing data loading performance in Azure Synapse. I implemented a code snippet that utilized partitioned datasets and pre-aggregation techniques. This significantly reduced data shuffling and improved loading times by 30%, enabling faster insights generation. My contribution was to the optimization of this Azure synapse. 
3. I consumed a whole lot of documentation which gave me a cue on how the code should be written. I wrote different code which gave errors while testing. After a lot of research, I was able to write the code that works perfectly for the integration.


> NOTE: If you have other questions let me know in the comment section.

**_Conclusion_**

My contribution to Apache Airflow's DAG orchestration, with its optimized Spark job execution and enhanced pipeline handling, became a harmonious note in the project's melody. The rigorous testing, like a conductor ensuring perfect execution, was my passport to merging my contribution.

If you want to get started with your open source journey, check out the [OpenSauced ](https://intro.opensauced.pizza/#/)intro course and Tublian [website](https://www.tublian.com/). These two communities welcome new contributors in a great way.

 Open source is my playground, and I'm just getting started!  Witness my evolution as I tackle tech challenges and unleash my coding skills by hitting the follow button on my  [GitHub.](https://github.com/Lymah123)