The README.md
file and supporting documents should describe the following, in this order. If the file starts getting long, break it into pieces
-
Project Titles as a level-1 heading
- with descriptive tagline: I should be informed and intrigued. Examples:
- "Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort"
- "Rails is a web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern."
- "Resque (pronounced like "rescue") is a Redis-backed library for creating background jobs, placing those jobs on multiple queues, and processing them later."
- with descriptive tagline: I should be informed and intrigued. Examples:
-
Overview
- what it does
- why you might want to use it, and why you might not
-
Example Usage: a basic example. Nothing fancy -- put rich examples in the detailed usage section
-
Getting Started
- installation & prerequisites
- how to run examples and tests
- include a
Procfile
to start any necessary servers or daemon processes
- include a
- location of:
- code
- issue tracker
- wiki
- blog posts, screencasts, etc
- compiled documentation (add the project to rdoc.info)
- travis-ci results
- mailing list
-
Design Goals
- lightweight or full-featured?
- performance, flexibility, expressiveness?
-
Detailed Usage
- models and interface
- examples
- configuration
- middleware or plugins
- how it works
-
Comparable Tools
-
Developer info
- Important Components
- layout of internal code tree
- Limitations and known issues
- performance and benchmarking
-
Colophon
- Credits -- everyone who has contributed code, libraries from which we've borrowed code.
- Copyright and License -- state the license type (typically "Apache 2.0" or "All Rights Reserved and Confidential") and refer to the
LICENSE.md
file. Don't paste the license contents in here. - How to contribute
- References
-
Call the file
README.md
. -
Write in markdown format.
-
You should use triple backtick blocks for code, and supply a language prefix:
```ruby def hello(str) puts "hello #{str}!" end ```
-
-
Do not wrap lines. In emacs, enable the
longlines-mode
to make your document word wrap intelligently.
Besides a README.md
, your repo should contain a CHANGELOG.md
summarizing major code changes, a LICENSE.md
describing the code's license (typically Apache 2.0 for our open-source projects, All Rights Reserved for internal projects), and a notes/
directory that is a git submodule of the project's wiki. See the style guide for repo organization for more details.