DEV Community

Cover image for Collaborating to Slack as an Open-Source Developer
Henrique Sagara
Henrique Sagara

Posted on

Collaborating to Slack as an Open-Source Developer

Introduction

Are you a beginner developer looking to gain more experience and wondering where to start? This blog post is for you!

One of the best ways to build your skills is by contributing to open-source projects. Recently, I tackled an issue in the SlackAPI GitHub Repo. At the time of writing, my pull request (PR) has been accepted by one of the maintainers, it has passed all the CI builds and just got merged!🙌

In this post, I’ll share my journey fixing this issue, the challenges I faced, and the lessons I learned along the way.

Issue

The issue I worked on was about handling URLs in the Slack API. Specifically, the code was not appending a trailing slash (/) to the base_url if it was missing, which could lead to inconsistent or failed API calls.

For example:

  • Without the trailing slash: https://slack.com/api
  • With the trailing slash: https://slack.com/api/

The missing trailing slash caused subtle issues that needed to be addressed to ensure reliability. My goal was to modify the code to automatically append the slash if it wasn’t provided.

You can find the original issue here: #1541.

Challenges

Finding the Right Files to Edit

As a beginner tackling a large codebase, my first challenge was finding where to make the changes. Navigating through unfamiliar directories and understanding the project’s structure took time. Reading the documentation and stepping through the code helped me locate the relevant files.

Writing the Fix

Once I identified the file (base_client.py), I drafted a solution to ensure the base_url ended with a /. However, before implementing it, I reached out to the maintainers for guidance. They pointed out that similar logic should also be applied to two other files: async_base_client.py and legacy_base_client.py. This was a great reminder of the importance of clear communication and pre-discussion in collaborative projects.

Here’s the updated code snippet for appending the trailing slash:

if not base_url.endswith("/"):
    base_url += "/"
Enter fullscreen mode Exit fullscreen mode

This simple change ensured that all API calls would use a consistent base URL. I replicated this logic in the other two files as well, maintaining consistency across the different clients.

Adding Tests

Testing was a critical part of this fix. I added new tests in the test_web_client.py file to verify that the base_url was corrected if it was missing the trailing slash. For example:

Here’s a simplified version of one of the tests I added:

    def test_base_url_appends_trailing_slash_issue_15141(self):
        client = self.client
        self.assertEqual(client.base_url, "http://localhost:8888/")

    def test_base_url_preserves_trailing_slash_issue_15141(self):
        client = WebClient(base_url="http://localhost:8888/")
        self.assertEqual(client.base_url, "http://localhost:8888/")
Enter fullscreen mode Exit fullscreen mode

Takeaways

Importance of Testing

Before submitting your PR, test your changes thoroughly. Writing unit tests, running existing tests, and using debugging tools are crucial steps to ensure your code works as expected. By automating tests for edge cases, you can catch potential errors early and increase confidence in your solution.

Follow the Contribution Guidelines

Every open-source project has its own contribution guidelines. Make sure to read and follow them carefully, as they outline coding standards, testing requirements, and PR submission processes. For example, SlackAPI provided clear instructions on setting up the development environment and running tests.

Communication Is Key

Pre-discussing your changes with maintainers can save time and prevent unnecessary back-and-forth. In my case, it ensured I applied the fix to all relevant files, making the solution more comprehensive.
Don’t Be Afraid to Ask for Help

If you’re stuck, don’t hesitate to ask questions. Open-source maintainers and contributors are often supportive and willing to help newcomers.

Final Thoughts

Contributing to open source can feel intimidating at first, but it’s one of the best ways to grow as a developer. You’ll learn to work in a team, navigate large codebases, and write production-ready code. Plus, it feels amazing to see your work being used by others!

If you’re a beginner developer, I encourage you to explore open-source projects, find an issue that interests you, and take the plunge. The SlackAPI GitHub Repo is a great place to start!

Have you contributed to an open-source project? Share your experience in the comments below! 🚀

Top comments (0)