Open Source 101

Arunima Chaudhuri
Codess.Cafe
Published in
8 min readAug 31, 2023

Hello readers! I am Arunima Chaudhari, an upcoming grad student at NIT Warangal and your buddy for this blog. I have been involved with open source for almost 2 years now. You can find more info about me here. Through this blog, I aim to help you get started with open source. So without any further adieu, let’s get started!

Note: The views represented in this blog are the personal views of the writers and not of Codess.Cafe.

What is open source?

Open source refers to a specific approach to software development where the source code of a software application is made freely available for anyone to view, use, modify, and distribute. This concept encourages collaboration, transparency, and community-driven development. Here are some examples of commonly used open-source software:

1. Mozilla Firefox: It’s a web browser that allows you to explore the internet. It’s developed openly by a community of volunteers who work together to make it fast, secure, and customizable.

2. WordPress: It’s a popular platform for creating websites and blogs. With WordPress, you can easily customize your website’s appearance and functionality. Its open-source nature allows developers to create plugins and themes to extend its capabilities.

3. VLC Media Player: This is a versatile media player that can play various audio and video formats. It’s open source and available for free, and it’s known for its compatibility and wide range of features.

These are just a few examples, but there are many more open-source software projects available for different purposes. Open source is not just about coding. It is much more about the amazing communities, collaboration, learning together, and helping each other.

Why should one contribute to Open Source?

Contributing to open source offers numerous benefits:

1. Learning and Collaboration: Collaborate with diverse individuals, gaining insights and learning opportunities.
2. Networking: Connect globally, building valuable professional relationships and mentorship prospects.
3. Skill Growth: Develop technical and soft skills, enhancing communication, teamwork, and leadership.
4. Inclusivity: Embrace diverse perspectives, fostering empathy and respect.
5. Patience and Empathy: Learn patience and empathy, overcoming challenges and disagreements.
6. Teamwork and Leadership: Cultivate teamwork and leadership skills through active participation.
7. Feedback Culture: Embrace feedback for growth, refining skills, and fostering improvement.
8. Giving Back: Make a positive impact, contribute to innovative solutions, and build a better future.
9. Technical Proficiency: Showcase technical skills with tangible contributions.
10. Real-World Experience: Gain practical experience on projects used widely, impressing potential employers.

When to start?

The right time to get started with open source is whenever you feel comfortable and have a basic understanding of coding and version control. Whether you’re a beginner looking to learn, a student seeking structured opportunities, a professional aiming to showcase skills, or simply someone passionate about a project, there’s a place for you in the open-source community.

Starting small, like fixing bugs or improving documentation, allows you to learn the collaborative process and gradually contribute more. The open-source community values diversity and welcomes contributors at all skill levels, so don’t hesitate to jump in whenever you’re ready.

I started with basics like correcting spelling or grammatical errors, adding links or images, and translations to different languages (it can be easily done with Google Translate). Then I started working on adding basic features like padding/icon/margin. Then I worked on adding features like adding a nav menu, improving responsiveness or adding some other small features. This helped me slowly navigate the codebase and at the same time contribute and add value to the project. I also referred to the merged PRs to further understand the project.

Prerequisites:

Having a good knowledge of Git, GitHub, and Version Control is important for contributing to open-source projects. Open source projects are welcoming to contributors at various skill levels. You can start contributing to open source and improve your skills along the way. The open-source community is generally supportive and willing to guide newcomers through the process.

Various Open-source programs:

→ Beginner level

  • GirlScript Winter of Contributing (GWOC)
  • HacktoberFest
  • GirlScript Summer Of Code(GSSOC)
  • JGEC Winter Of Code

→ Intermediate level

  • MLH Prep Fellowship
  • MLH Fellowship

→ Advance level

  • Google Summer of Code
  • Google Season of Docs
  • LFX Mentorship Program
  • Async API Mentorship Program
  • Outreachy

Watch this video of Kunal Kushwaha to get an idea of the various open-source programs that you can participate in. Participating in open-source programs is not a prerequisite for contributing to open-source projects.

Through dedicated contributions to projects like CNCF and Layer5, I garnered substantial knowledge and skills without direct affiliation with open-source programs. I meticulously documented my contributions across multiple organizations in a GitHub gist, which significantly contributed to my selection for esteemed open-source initiatives like the MLH Fellowship and LFX Mentorship. Active engagement in open-source communities, coupled with consistent contributions, not only yields valuable learning experiences but also acts as a gateway to prominent open-source programs, fostering a rewarding journey of growth and recognition.

How to contribute: Getting started

→ Joining Open Source Communities**
1. Explore and Connect:
- Explore web development projects on the GSOC website.
- Leverage platforms like Twitter to discover relevant communities.
2. Engage in Channels:
- Join public community channels and review their code of conduct.
- Introduce yourself, highlighting your skills and interests.
3. Participate Actively:
- Attend community meets, subscribe to newsletters, and contribute time.
- Extend your involvement by volunteering for community initiatives.
4. Learn Through Observation:
- Study code reviews, merged pull requests, and open issues.
- Absorb communication styles among community members.
5. Begin Your Contributions:
- Identify beginner-friendly projects with clear instructions.
- Collaborate with members to address issues or introduce features.
- Utilize Git and GitHub for efficient contribution management.

Remember, patience and adaptability are key. Customize your approach to suit each community’s dynamics. These steps provide a foundational guide to start your open-source journey.

If you’re still uncertain, review past pull requests and issues for structural insights. This offers practical exposure to Git, GitHub, and the basics of PRs and issue management. Embrace the collaborative ethos of open source as you embark on this rewarding adventure.

Solving complex issues:

As you progress in your open-source contributions, you’ll transition from solving simple issues to tackling more complex challenges. Here are some practical steps to help you make this transition successfully:

1. Understand the Project:

  • Familiarize yourself with the product or project you’re contributing to by using it extensively.
  • Read and comprehend the contributing guidelines and code of conduct thoroughly.
  • Study the project’s documentation to gain a deeper understanding of its structure and functionality.

2. Set up the Project Locally:

  • Follow the instructions provided in the README.md or CONTRIBUTING.md file to set up the project on your local system.
  • If you encounter errors during setup, ask for assistance in the community’s public channels or forums.

3. Learn from Past Talks and Merged Pull Requests:

  • Watch conference talks or presentations related to the project to gain insights and knowledge.
  • Review merged pull requests to understand how previous issues were addressed and solved.

4. Solve Simple Issues:

  • Begin by solving 2 to 3 good first issues in the project. These can be simple tasks like improving documentation, making small UI changes, or fixing minor bugs.
  • Completing these tasks adds value to the project and helps you understand its repository structure.

5. Take on More Challenging Issues:

  • After gaining confidence from solving simple issues, challenge yourself by tackling more complex problems within the same project.
  • Seek assistance from other contributors through public channels or mailing lists if you get stuck for an extended period.

6. Effective Communication:

  • Engage with other contributors and seek help in public channels or mailing lists instead of direct messaging individuals.
  • Prior to asking questions, conduct research by Googling technical terms and referring to project documentation.
  • Practice asking good questions by following guidelines shared in a helpful Twitter thread.

7. Practice Patience:

  • Understand that getting answers to questions or receiving reviews on your pull requests may take time.
  • Be patient and continue working on other aspects of the project while awaiting feedback.

8. Break Tasks into Smaller Chunks:

  • Divide complex tasks into smaller, manageable chunks.
  • Focus on one piece of code at a time to make the overall process more approachable.

9. Adhere to Code Style and Development Process:

  • Ensure that your contributions align with the project’s coding standards and style guidelines.
  • Follow the established development process when submitting your contributions.

By following these steps, you can progress from solving simple issues to tackling more complex challenges in open-source projects. Remember to stay dedicated, continuously learn, and leverage the community's support.

Good open-source practices:

Here are some good open-source best practices to keep in mind when contributing to or maintaining open-source projects:

  1. Guidelines and Context: Understand project guidelines and goals, aligning contributions and code with the project’s standards.
  2. Start Small: Begin with minor tasks to build familiarity and trust, gaining confidence in the codebase.
  3. Code Quality: Write clean, well-documented code that follows project conventions and naming.
  4. Documentation: Provide clear documentation for your contributions to aid understanding and use.
  5. Effective Communication: Engage respectfully, seek and provide feedback, and embrace global collaboration.
  6. Version Control: Use version control well, with clear commits, branches, and regular updates.
  7. Community Support: Contribute by assisting, testing, and sharing knowledge within the project community.
  8. Respect and Inclusion: Interact patiently, respectfully, and inclusively with diverse contributors worldwide.

These practices nurture productive collaboration, project quality, and a supportive open-source environment.

Open Source is a vibrant and inclusive community that thrives on collaboration and innovation. By taking the plunge into open-source contributions, you join a global network of passionate individuals who are shaping the future of technology. Don’t be intimidated by the perceived complexity; remember that every journey begins with a single step. Your contributions, no matter how small, are valuable and appreciated. Each line of code, every bug fix, and documentation improvement helps propel projects forward. Best of luck on your open-source journey!

If you found it helpful, please hit the clap button, leave a comment, and follow Codess.Cafe for more such articles!

Codess.Cafe: LinkedIn | YouTube | Website | Medium | Twitter

--

--