Skip to content

Latest commit

 

History

History
72 lines (57 loc) · 3.39 KB

open-source.md

File metadata and controls

72 lines (57 loc) · 3.39 KB

Open Source

A software philosophy that promotes free redistribution and access to source code.

Beginning Open Source

You should be able to

  • 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.

Intermediate Open Source

You should be able to

  • 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.

Advanced Open Source

You should be able to

  • 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).

Ongoing Reference