A software philosophy that promotes free redistribution and access to source code.
- Get a GitHub account
- Read about software licenses
- Read about the purpose and formatting of a NEWS file
- Read about the purpose and formatting of a ChangeLog file
- Evaluate a project based on quality of code, tests, documentation.
- Evaluate a project based on responsiveness of maintainers to developers' questions and feature requests.
- Evaluate a project based on regularity of releases.
- Evaluate a project based on the appropriateness of its license for your needs.
- Evaluate a project by downloading and trying it.
- Search issues for a similar problem you're having.
- Comment with additional data on issues that you're also having.
- Submit new issues with good environment (Ruby version, OS, etc.) info, error messages, and backtraces so the maintainer can quickly replicate it.
- Get annoyed by a defect or missing feature.
- Find the source code.
- Create a copy of the source ("fork" on Github).
- Check out (git clone) the source.
- Poke around the source in your editor and shell (grep).
- Read the contribution guidelines.
- Write a failing test in the style of the project's test suite.
- Write code to make the test pass in the style of the project's codebase.
- Make sure the entire test suite passes.
- Create a patch (push to your fork on Github).
- Submit a patch ("pull request" on Github).
- If it exists, email the project's mailing list asking for feedback.
- Apply an appropriate license to your project.
- Document a clear public API.
- Document where issues are managed, such as Github Issues.
- Evaluate pull requests and provide kind, intelligent feedback.
- Provide a clear place for questions, such as Stack Overflow. Only provide a Google Group mailing list if you're ready to support it.
- Provide your code in easily accessible form (Rubygems, GitHub).
- Select or reject open source software based on its license.
- Use major, minor, and patch version numbers (Semantic Versioning).