OPEN SOURCE CONTRIBUTION AND HUMAN-COMPUTER INTERACTION
Welcome! Let's do some Open Source!
Open Source Software is a computer software whose source code is made publicly available for modification and enhancements. It is released under various licenses like BSD, MIT etc. “What is open source?” is a good read.How do I get started?
First
and foremost, you must choose a programming language of your choice.
Once you are done with selecting a programming language, search for a
project that is interesting to you.
Open Hatch is perfect for beginners. The search page of Open Hatch filters out bugs based on
- Languages
- Projects
Mozilla has a wide range of projects filtered based on programming language. What can I do for Mozilla?.
There are organizations like mozilla, KDE ,Wikipedia ,GNOME ,Apache , Python ,Django, Github ect...
- A great way to get involved in open source is to contribute to the existing projects you’re using.
Let's take an example of GitHub
A Typical Project
Below are some elements you’re likely to come across in an open source project on GitHub.The Community
Projects often have a community around them, made up of other users in different (formal or informal) roles:- Owner is the user or organization that created the project has the project on their account.
- Maintainers and Collaborators are the users primarily doing the work on a project and driving the direction. Oftentimes the owner and the maintainer are the same. They have write access to the repository.
- Contributors is everyone who has had a pull request merged into a project.
- Community Members are the users who often use and care deeply about the project and are active in discussions for features and pull requests.
The Docs
The what’s-what of common files in projects.Readme
Nearly all GitHub projects include aREADME.md
file. The readme provides a lay of the land for a project with details
on how to use, build and sometimes contribute to a project.Contributing
Projects and project maintainers vary, so the best way to contribute will also vary. Keep your eye open for a doc labeledCONTRIBUTING
.
Contributing docs detail the specifics about how a project’s maintainer
would like to see patches or features contributed. This can include
what tests to write, code syntax style or areas to focus on for patches.License
ALICENSE
file, well, is the license for the project. An open source project’s
license informs users what they can and can’t do (e.g., use, modify,
redistribute), and contributors, what they are allowing others to do.
There are many ways to license and open source project, you can read
more about what each license means at choosealicense.com.Documentation and Wikis
Many larger projects go beyond a readme to give instructions for how people can use their project. In such cases you’ll often find a link to another file or a folder named ‘docs’ in the repository.Alternatively, the repository may instead use the GitHub wiki to break down documentation.
Contributing to a Project
Now that you’ve found the material for understanding the project, here is how you can take action.Create an Issue
If you find a bug in a project you’re using (and you don’t know how to fix it), have trouble following the documentation or have a question about the project – create an issue! There’s nothing to it and whatever issue you’re having, you’re likely not the only one, so others will find your issue helpful, too. For more information on how issues work, check out our Issues guide.Issues Pro Tips
- Check existing issues for your issue. Duplicating an issue is slower for both parties so search through open and closed issues to see if what you’re running into has been addressed already.
- Be clear about what your problem is: what was the expected outcome, what happened instead? Detail how someone else can recreate the problem.
- Link to demos recreating the problem on things like JSFiddle or CodePen.
- Include system details like what the browser, library or operating system you’re using and its version.
- Paste error output or logs in your issue or in a Gist. If pasting them in the issue, wrap it in three backticks: ` ``` ` so that it renders nicely.
Pull Request
If you’re able to patch the bug or add the feature yourself – fantastic, make a pull request with the code! Be sure you’ve read any documents on contributing, understand the license and have signed a Contributor Licence Agreement (CLA) if required. Once you’ve submitted a pull request the maintainer(s) can compare your branch to the existing one and decide whether or not to incorporate (pull in) your changes.Pull Request Pro Tips
- Fork the repository and clone it locally. Connect your local to the original ‘upstream’ repository by adding it as a remote. Pull in changes from ‘upstream’ often so that you stay up to date so that when you submit your pull request, merge conflicts will be less likely. See more detailed instructions here.
- Create a branch for your edits.
- Be clear about what problem is occurring and how someone can recreate that problem or why your feature will help. Then be equally as clear about the steps you took to make your changes.
- It’s best to test. Run your changes against any existing tests if they exist and create new ones when needed. Whether tests exist or not, make sure your changes don’t break the existing project.
- Include screenshots of the before and after if your changes include differences in HTML/CSS. Drag and drop the images into the body of your pull request.
- Contribute in the style of the project to the best of your abilities. This may mean using indents, semi colons or comments differently than you would in your own repository, but makes it easier for the maintainer to merge, others to understand and maintain in the future.
Comments
Post a Comment