coronaSafety
Let's fight this pandemic by Spreading Awareness. We've used unDraw for the illustrations.
Rules of this community:
1. We don't care if you break things. This is a playground and we encourage failing often. Use this as a practice ground and enjoy contributing to projects with other contributers. You will gain real world experience "working in teams" by working on these projects.
2. Make your first Pull Request : check this free how-to tutorial at "Make a Pull Request", by adding your name to the CONTRIBUTORS.md
file in the project.
Anatomy of an open source project:
Every open source community is different.
Spending years on one open source project means you’ve gotten to know one open source project. Move to a different project, and you might find the vocabulary, norms, and communication styles are completely different.
That said, many open source projects follow a similar organizational structure. Understanding the different community roles and overall process will help you get quickly oriented to any new project.
A typical open source project has the following types of people:
Author: The person/s or organization that created the project.
Owner: The person/s who has administrative ownership over the organization or repository (not always the same as the original author).
Maintainers: Contributors who are responsible for driving the vision and managing the organizational aspects of the project (may also be authors or owners of the project).
Contributors: Everyone who has contributed something back to the project.
Community Members: People who use the project. They might be active in conversations or express their opinion on the project’s direction.
Bigger projects may also have subcommittees or working groups focused on different tasks, such as tooling, triage, community moderation, and event organizing. Look on a project’s website for a “team” page, or in the repository for governance documentation, to find this information.
Getting Started
Getting started with open-source can be a difficult task, not only because we are being introduced to some new technologies, but also because most of us have never worked in a collaborative environment before. Being able to work in a collaborative environment is one of the most important skills anyone could acquire, not only in the coding and programming area, but in life.
It may appear a very challenging and overwhelming task at first, but it is, in fact, a fun and rewarding experience.
Community Collaboration Projects
Providing the opportunity for you to flex you developer muscles, whilst working within a team of developers. Gaining valuable skills, employers are always seeking, such as:
- Communication and collaboration - Being able to work in a team and communicating effectively is a very important skill
- Github and source control - In these projects you will have the opportunity to understand, why branching is important along with other key github skills.
- New stacks and technologies - Each project is likely to use slightly varying stacks, providing the opportunity to jump into something new
How You Benefit
Along with learning new skills, you will also gain experience on projects you can start to list on your Resume/CV. In addition, you will build out your commit history on Github, which employers love! But most importantly, you will learn to work in teams which is one of the most important skills to be a top developer.
You have 2 options: Join an existing project or Create a new project:
Option 1: Join a project
Joining a project is pretty simple, checkout the current projects and find one you would like to participate in. Check out the project README in its repo as it will have a guide on how to get started!
Option 2: Create a project
We are always on the look out for new and exciting project for you all to collaborate on! If you think you have an new and exciting project/idea the community would love to get involved in, here is the process for getting it listed:
- Reach out to a member of the Management Team on our Facebook Group, with a detailed project brief
- Management team will consider if the project is something that would work well with the community
- A Repository will be created and the project will be announced in the group.
- If the project has enough demand, a dedicated channel will be created to accomodate discussions.
What is open source?
Open source is the original way of creating software – in an open, transparent and collaborative manner. “What is free software?" and “What is open source?" are good overviews of the subject.
Open source means that you get the final executable for a software project, and also have access to the source code from which it was produced. Having access to the source code means that you can better understand how the program functions and more importantly you can modify it to fix any problems you have with the software or add new features which you desire.
What might look like a chaotic way of creating software (everybody focusing on their own needs) works surprisingly well: for example the Linux kernel contains more than 4,000 man years worth of effort.
Why would I want to contribute?
Here, practicing would be our primary objective but there are also many pragmatic reasons for contributing to open source projects:
1. To add a new feature / improvement to a project; or to fix an issue with a project.
2. To practice and learn about software development – contributing to a project is a great way to learn about the more hands on aspects of software development like using debuggers, version control systems, issue trackers, etc.
3. To practice/learn a particular programming language or technology which you are interested in.
4. To build your online presence – highlighting open source contributions relevant to the job makes your resume stand out from the rest.
How can I contribute to projects?
1. Test : Start with testing the code for any bugs, if found raise an issue about it. (Always check first if someone has already raised an issue for the same.)
2. Suggest features: Look for possible improvements and provide suggestions in the comment section.
3. Design: Considering the fact that practice is the main objective, try to make little changes on your forked repository and make a pull-request about it. Commit often and provide appropriate messages to your commits.
4. You can also help in providing proper documentation of the various projects.