Open Source 101: A Developer's Blueprint for Getting Started
Tags: opensource, beginners, career, programming
Published: 2023-12-17 06:34:57

Welcome to the exciting world of open-source development! Whether you're a seasoned coder or a programming enthusiast looking to dive into collaborative coding, this guide is your comprehensive blueprint to kickstart your journey.

##What is Opensource ?


![opensource](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0x49nx0cl6n2tvyf34na.png)

Imagine software as a recipe for a dish. When a chef creates a recipe, they write it in a way other chefs can follow to make the same dish. Now, think of open source as sharing that recipe with everyone.
In the world of computers, the software is like a recipe that tells the computer how to do specific tasks. With open source, the software's creators share the instructions (called source code) with everyone. This means anyone can see how the software works, change it to fit their needs, and even share their version with others.
So, instead of keeping the recipe a secret, open source lets everyone be part of the cooking process. It's like a big kitchen where chefs (developers) work together, share ideas, and make the recipe better for everyone. This way, the software becomes a collaborative effort, benefiting from the skills and creativity of many people. Examples of open-source software are popular recipes that chefs worldwide contribute to and improve over time.

####OSS - Open Source Software####

Open Source Software refers to software whose source code is available to the public. Users can view, modify, and distribute the code, fostering collaboration and transparency.

**Examples of OSS**: Linux, Firefox, Python, GIMP, LibreOffice etc... 

####CSS - Closed Source Software####

Closed Source Software refers to proprietary software whose source code is not distributed to the public. It is considered proprietary, entrusted, and exclusive, with restrictions on access

**Examples of CSS**: Microsoft Windows, Adobe Photoshop, etc...

## What is Github?

![Github](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kx4ws7nftdys6vl47y9k.png)

- GitHub is a leading platform for open-source development, facilitating global collaboration on diverse projects. Using Git for version control, enables easy forking, modification, and merging of code. 
- With a user-friendly interface and features like issue tracking and pull requests, GitHub streamlines collaborative development, promoting transparency and community engagement. 
- Developers leverage GitHub to share, collaborate, and benefit from the collective expertise of the open-source community, fostering innovation in software projects.

###Repository :

![Repo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3dxtwmiqbr66ybibth2k.png)

A Repository is a data structure for storing Documents and application source code. a repository can track and maintain version control

1. A repository, or "repo" is a central storage for code and files, facilitating collaboration and version control in software development.
2. Platforms like GitHub offer tools to host and manage repositories, enhancing teamwork and tracking changes in projects.

##Basic Terminologies in Opensource:

- **Source Code:** Human-readable instructions written by programmers to create software.
- **Repository:** Storage space for project files, hosted on platforms like GitHub.
- **Version Control:** System for tracking changes in source code over time, often using Git.
- **Fork:** Creating a personal copy of a project for independent modification.
- **Pull Request (PR):** Proposal to integrate changes from a fork into the original project.
- **Issue:** Discussion space for tasks, bug reports, and feature requests in a project.
- **Merge:** Combining changes from one branch or fork into another.
- **Commit:** Set of changes made to the source code, acting like a snapshot.
- **Branch:** Separate line of development within a repository.
- **License:** Legal terms specifying how software can be used, modified, and distributed.
- **Community:** Group of developers, contributors, and users engaged in an open-source project.
- **Contributor:** Individual contributing to an open-source project through code, reports, or assistance.
- **Maintainer:** Person or group overseeing and managing an open source project.
- **README:** File providing essential information about a project, including usage instructions.
- **Code of Conduct:** Guidelines on acceptable behavior.
- **Contributing Guidelines:** describe how to contribute and collaborate.
- **Upstream:** Forms the Foundation of the source.
- **Downstream:** Programmers working stream.

###Ways to Contribute

- Code
- Documentation
- Advocacy(write blogs, share on social media, talks or workshops)
- Community

####How to start Contributing:

- Search and Work on First good First issues label in issues.

```
Some websites for finding issues:
https://up-for-grabs.net/
https://goodfirstissues.com/
https://goodfirstissue.dev/
https://www.codetriage.com/
```
- Attend regular meetings in the Community
- Join sprints
- Participate in a code Program.

####Getting Started as a Newbie:

Watch this tutorial from eddiehub to get started on open source: [here](https://youtu.be/yzeVMecydCE?si=8bilG-FPc6qh_XuO)
Join eddiehub community on open source [here](https://github.com/EddieHubCommunity)


![IEddiehub](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gkym7tx32u9wfzi4yaro.png)

EddieHub is an open-source organization focusing on reciprocal collaboration between members of the tech community; to encourage and promote communication, best practices, and technical expertise in an inclusive and welcoming environment. 

**Why Developers Should Contribute to Open Source, regardless of Experience?**

![why gif](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/drtj0vm00csjlv9q62wr.gif)

**Skill Enhancement:** Contributing to open-source projects provides developers, regardless of experience, with an opportunity to enhance their skills. It allows them to work on real-world projects, learn from experienced developers, and gain hands-on experience with different technologies and coding practices.

**Community Engagement:** Open-source contributions enable developers to engage with a global community of like-minded individuals. This collaborative environment fosters networking, mentorship opportunities, and exposure to diverse perspectives, ultimately enriching a developer's professional growth and expanding their network in the tech industry.


##Conclusion:
Embarking on the journey of open source is an invitation to a world of collaboration, innovation, and community-driven development. By understanding the fundamental terminology and concepts, you've taken the first step toward contributing and learning in this dynamic environment.

#Connect with me on:

![banner](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0nbrmknhlmeek17aixy7.png)
Linkedin - [Raghul M](https://www.linkedin.com/in/m-raghul/)
Github - [Raghul-M](https://github.com/Raghul-M)
Portfolio - [raghul-m.github.io](https://raghul-m.github.io/)