Giter Club home page Giter Club logo

standard-readme's Introduction

Standard Readme

standard-readme compliant

A standard style for README files

Your README file is normally the first entry point to your code. It should tell people why they should use your module, how they can install it, and how they can use it. Standardizing how you write your README makes creating and maintaining your READMEs easier. Great documentation takes work!

This repository contains:

  1. The specification for how a standard README should look.
  2. A link to a linter you can use to keep your README maintained (work in progress).
  3. A link to a generator you can use to create standard READMEs.
  4. A badge to point to this spec.
  5. Examples of standard READMEs - such as this file you are reading.

Standard Readme is designed for open source libraries. Although it’s historically made for Node and npm projects, it also applies to libraries in other languages and package managers.

Table of Contents

Background

Standard Readme started with the issue originally posed by @maxogden over at feross/standard in this issue, about whether or not a tool to standardize readmes would be useful. A lot of that discussion ended up in zcei's standard-readme repository. While working on maintaining the IPFS repositories, I needed a way to standardize Readmes across that organization. This specification started as a result of that.

Your documentation is complete when someone can use your module without ever having to look at its code. This is very important. This makes it possible for you to separate your module's documented interface from its internal implementation (guts). This is good because it means that you are free to change the module's internals as long as the interface remains the same.

Remember: the documentation, not the code, defines what a module does.

~ Ken Williams, Perl Hackers

Writing READMEs is way too hard, and keeping them maintained is difficult. By offloading this process - making writing easier, making editing easier, making it clear whether or not an edit is up to spec or not - you can spend less time worrying about whether or not your initial documentation is good, and spend more time writing and using code.

By having a standard, users can spend less time searching for the information they want. They can also build tools to gather search terms from descriptions, to automatically run example code, to check licensing, and so on.

The goals for this repository are:

  1. A well defined specification. This can be found in the Spec document. It is a constant work in progress; please open issues to discuss changes.
  2. An example README. This Readme is fully standard-readme compliant, and there are more examples in the example-readmes folder.
  3. A linter that can be used to look at errors in a given Readme. Please refer to the tracking issue.
  4. A generator that can be used to quickly scaffold out new READMEs. See generator-standard-readme.
  5. A compliant badge for users. See the badge.

Install

This project uses node and npm. Go check them out if you don't have them locally installed.

$ npm install --global standard-readme-spec

Usage

This is only a documentation package. You can print out spec.md to your console:

$ standard-readme-spec
# Prints out the standard-readme spec

Generator

To use the generator, look at generator-standard-readme. There is a global executable to run the generator in that package, aliased as standard-readme.

Badge

If your README is compliant with Standard-Readme and you're on GitHub, it would be great if you could add the badge. This allows people to link back to this Spec, and helps adoption of the README. The badge is not required.

standard-readme compliant

To add in Markdown format, use this code:

[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)

Example Readmes

To see how the specification has been applied, see the example-readmes.

Related Efforts

Maintainers

@RichardLitt.

Contributing

Feel free to dive in! Open an issue or submit PRs.

Standard Readme follows the Contributor Covenant Code of Conduct.

Contributors

This project exists thanks to all the people who contribute.

License

MIT © Richard Littauer

standard-readme's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

standard-readme's Issues

Naming

I'm not sure why I called this readme-standard. I think standard-readme is better. I know this is bikeshedding, just, thinking of changing it.

Anyone else have thoughts, while I'm at it?

Back to Top link

@tunnckoCore, here:

one more thing: requirement - "each section must include 'back to top' link", would be great!

Hmm I haven't seen this much! Might be cool, but also adds noise. Maybe optional?

Rename package to standard-readme-spec

Now that we have generator-standard-readme, which uses a bin file and is aliased as standard-readme too, it might be smart to rename this package (but not the repo) to standard-readme-spec, which will print out the spec. Then there is no conflict with the standard-readme repo, which uses yeoman as a dependency to automatically generate readmes.

On the other hand, standard-readme should eventually be a linter, so maybe we should wait until that exists.

Create a Standard Readme linter

There should be a linter, after the spec in the main readme is filled out. The linter will most likely use remark and remark-lint. This is the planning issue for the linter. Please subscribe here, and open new issues for tangential questions about Standard Readme.

Make License & Maintainers a XOR with Badges

There are badges for licenses and there could be a linking badge to a maintainers information (link).

ISC License

Since the license section is usually very short, like:

## License

MIT

It might be actually better to have as badge.

Specification for i18n

Right now Readme's in github are not internationalised. Even if they could be. I.e README.ja.md could show the readme in japanese. I think it would be a step in the right direction to specify this format as well.

The Install section should be above the Table of Contents

What

Some people would prefer to have install at the very top, so that people can easily see it is an npm module. This conflicts with the current standard, which has it below the TOC.

Background

@feross wrote this here:

One of the best things about the npm community's readme convention is that "Install" usually appears right at the top. I like that convention because it lets users know that this is a proper npm package -- not some janky old-style JS project where you download a "standard.min.js" file or something.

I've heard folks argue that it's best to put "Install" later, after the user has learned what the package does and is actually ready to use it. But that makes it harder for users who already know what it's for does to find out the npm package name, and obscures the fact that it's a simple-to-install npm package. I think that ought to be right at the top.

I think this is a very good point. Around one third of the top 30 npm packages have install sections near the top. I like how node-redis does this: it just has 'Install with' at the top.

I want to look into this more: the issue really isn't where Install is, it's where the ToC is. Someone else has raised questions about the Table of Contents to me, and whether it is necessary. We could collapse the ToC:

Actionable items

  • Talk about how to best do this here
  • Go through npm modules and find justification for having a Table of Contents where it is
  • Add an FAQ to the spec about where the Install section should go, and whether adding a non-header npm install package is OK.

Suggestion: “Back to Top” needs an example

“Back to top” may be useful (although browsers also often supply a feature for this, on mobile you can often click the top bar to scroll up). But maybe it’s more clear if there’s an example of that, or a link to a readme that uses it?

A "[Back to Top](...)" link for longer sections can be useful, but is not required by any means.

Suggestion: Disallow broken links

I've seen quite a few projects where the links in the readme do not work; this is disruptive when you want to evaluate libraries or troubleshoot.

Examples:

  • A link or image that 404s
  • Trying to link to a non-existent file in the repo
  • Syntax errors

I feel that no broken links as a rule would be valuable

Awesome-* lists and discussion repositories

A lot of repositories on GitHub do not, in fact, use code. For instance, awesome-* lists are generally just lists in a README that do not have any code to install or use. Another example are README's introducing discussion repos, where everything happens in the issues, and the README is just a placeholder telling people to go there.

In the second case, I've been using this format:

# apps

[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io)
[![](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](http://ipfs.io/)
[![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs)
[![](https://img.shields.io/badge/discussion_repo-go_to_issues-brightgreen.svg?style=flat-square)](https://github.com/ipfs/apps/issues)
[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)

> Coordinating writing apps on top of ipfs, and their concerns.

This is a **discussion repo**. That means that all of the work gets done in the [issues](https://github.com/ipfs/apps/issues).

## Contribute

Feel free to join in. All welcome.

### Want to hack on IPFS?

[![](https://cdn.rawgit.com/jbenet/contribute-ipfs-gif/master/img/contribute.gif)](https://github.com/ipfs/community/blob/master/contributing.md)

## License

MIT

For awesome-lists, I have a similar problem. The only difference is that the header often is the NLP version of the repo name, and that it normally has a badge linking to @sindresorhus's repo, https://github.com/sindresorhus/awesome. I think this doesn't mean it can't be standardized. I propose this format for those:

# Awesome IPFS [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)

[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io)
[![](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](http://ipfs.io/)
[![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs)

> Useful resources for using [IPFS](https://ipfs.io) and building things on top of it

_This list is for projects, tools, or pretty much any things related to IPFS that
are totally_ **awesome**_. This is for products which are already awesome - if
you have plans for cool stuff to do with IPFS, you should build it, and then
link it here. If you have an idea for an awesome thing to do with IPFS, a good
place to ask about it might be in [ipfs/apps](https://github.com/ipfs/apps) or
[ipfs/notes](https://github.com/ipfs/notes)._

## Table of Contents

* [Any topic](#any-topics)
...
* [Contribute](#contribute)
* [License](#license)

## Any topics

...

## Contribute

Please add (or remove) stuff from this list if you see anything awesome! [Open an issue](https://github.com/ipfs/awesome-ipfs/issues) or a PR.

## License

[![CC0](https://licensebuttons.net/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/)

We can put examples in the example folder, and specify this in the spec. What do we think?

Make it clearer that ToC isn't needed in examples

This is a catching point for a lot of people, who think that the ToC shouldn't be there for small READMEs. It doesn't have to be, but you have to read the spec to know that. Make a better example, walking through the README and salient points.

be common-readme compatible

It would be really cool if the output of of standard-readme-generator was compatible with common-readme. Since common-readme doesn't impose much, the only real thing to get consistent between the two is the notion of cognitive funneling:

Start with the most general information at the top (Name, Description, Examples) and if the reader maintains interest, narrow down to specifics (API, Installation). This makes it easy for readers to "short circuit" and continue the hunt for the right module elsewhere without wasting time delving into unnecessary details.

I think standard-readme would only need a couple of tweaks, though these are of course all personal preferences that are biased toward small modules (in any ecosystem):

  1. Consider making the TOC optional, only because it introduces a lot of visual interference for people scanning the readme. It can easily add an extra pageful or two if all children sections are present. If a user does opt in for one, consider maybe only showing top-level items.
  2. Consider pushing Installation under API. This is on the premise that a user is unlikely to consider installing a program unless they've looked at it in some detail, which generally includes a perusal of its usage and its API.

Cool! I think everything else is pretty much compatible and fits just fine 🎉

Requirements

Took a overview look at js-ipfs, saw that a requirements section was missing (issue here: ipfs/js-ipfs#453) and thinking, everything based on standard-readme is missing the requirements. This should ideally be it's own section, before the installation.

Could look something like this:

Requirements

  • Ubuntu / OSX
  • npm [version 3 or above]
  • node [version 6 or above]
  • python [version 2]

## Requirements
* Ubuntu / OSX
* npm [version 3 or above]
* node [version 6 or above]
* python [version 2]

What do you think?

Quoting the short description / tagline

@feross:

Never been a fan of quoting the tagline. It de-emphasizes something that ought to be emphasized.

@LinusU

I too have been rubbed the wrong way with the idea that the tagline or short description should be inside a block-quote. It doesn't feel right, maybe this is an issue that should be raised upstream?

I'm not sure that it is de-emphasized. To me, it clearly separates the text from all other text. On GitHub, this looks like color and bolding - a strong statement. In text, there is the >, which points it out.

Can we think of any sensible way to judge this objectively and not make a call based on aesthetic opinion of GitHub's coloring?

Badge vs Banner

I'm working on project to deal with maintenance of boilerplate across projects (readmes, package.json values, common tooling, etc). In the process of writing a readme parser, I think I've determined that it's impossible to determine if a single image between the title and the short description is a Banner or a Badge. Any ideas?

(It's still very early, but here's what I'm working on)

Add reasoning to each section

I wonder if it would be good to add, directly in the spec, reasoning for each section. This might add more extraneous content to the spec, but it might make it clearer why certain choices have been made. Thoughts?

Badge

I think a badge might seriously help adoption. I know they are not useful outside of GitHub - but to leverage the social network and make this spread, I think a badge would be more of a benefit than a detraction.

Suggestion:

standard-readme compliant

IPFS Requirements

These requirements are only for the IPFS organization. They are included here because some people may still be curious how IPFS and Standard-Readme are related. Since this work is supported and will be used by the IPFS organization, they are relevant here, too, I think.

  • Buttons
    • All repos: irc, made by Protocol Labs, IPFS project
    • Language repos: langdoc references, code style, dependencies, coverage
    • Travis
    • CI
    • Discussion repos
  • Contribute banner with link to global contribute.md
  • Link to questions
  • LICENSE file
  • PATENTS file
  • Contribute.md file

The Existence of a Table of Contents

What

Some people have asked me why the Table of Contents is important. Example.

Background

I've been getting some pushback about table of contents being mandatory. For small READMEs with minimal sections, I can understand why this is a friction point. The Table of Content takes up visual space.

However, for longer READMEs, I think a Table of Contents is super important. It allows the reader to know what sections are included in the README at a glance, normally without scrolling down, unless the reading window is small (and, if it is small, a Table of Contents can help signpost whether it is worth scanning to the end or not).

I suspect that most of the time a new module is discovered, it is discovered on GitHub these days - the Table of Contents provides an easy way to navigate a README.

Roadmap

Roadmap

  • Example Readmes
  • Integrate CPAN feedback from @noffle #3
  • Generator with yo as an implicit dependency. #6
  • Try to merge some standard- and common-readme ideas into one readme. #10
    • Make it less js-specific #8
  • Linter #5
  • Use on specific IPFS Readmes, get feedback from Protocol Lab developers
  • Usage tests: Get a bunch of people to use it in their projects and gather feedback on whether it's useful and how we can improve it to match real people's need.
  • Press Release
    • Medium Article
    • Post on HackerNews
    • Post on Reddit
    • IPFS Newsletter (again)
    • npm weekly (they might pick this up -- they often take community modules)
  • Create badge. Specify as optional.
  • Plugins
    • Build Atom plugin
    • Build Sublime plugin

How about change badge style like feross/standard ?

According to a background, this project is inspired by feross/standard. If I use standard code style and readme. Badges will be like this below:

Standard - JavaScript Style Guide standard-readme compliant

I would like to style standard readme badge below:

Standard - JavaScript Style Guide standard-readme compliant

What do you think ?

Table of Contents discussion

@tunnckoCore, here:

Except one requirement in "Table of contents":

Must be at least one-depth: must capture all ## headings.
In my repos i my name and badges/links to me as last h2 heading.

That's cool; for reference, see this README. I don't think this is the right approach, though - it's something I haven't seen much before, and I don't think it adds anything to the repo by having these be sections. So, I don't think I will adopt this. The creator's name isn't actually relevant to the code, and doesn't help with using it.


@rstacruz, here:

Curious: Would it be prudent to require a ToC even for the shortest of readmes? What led to the decision to require ToC's?

I think that ToC's make it much, much easier to get - at a glance - what is in the readme when it is long. For shorter ones, I don't think it adds too much noise, and it is still useful for simply not having to think about scrolling. A lot of people work on GitHub on small screens - my mac is a puny 5 inches high. Having a ToC helps more than it detracts. Keeping it to second-level headers only is useful. This is a style decision.

Measure standard-readme's impact

It would be amazing to have a way to infer the impact of adopting standard-readme, to make sure that it not only improves the quality of a project, and therefore more usage, but also opens the floor for innovation (A/B testing). This will also validate standard-readme goal.

Things like nodei.co or Github Analytics will be good sources to capture and visualize the growth and infer if there is any correlation.

Provide a default for external api reference

Some projects use external api documentation, the might be generated like go-doc or hand written like js-ipfs-api in API.md. It would be good to have some rules around how in this case the API section should look like.

Top Header Naming: Should it always match the folder name?

I am not convinced that the README's top header 100% needs to match the name of the module perfectly.

Example: standard's README could be labelled # standard, or # Javascript Standard Style. The same follows for # standard-readme or # Standard Readme.

On the one hand, it should match what the module is named or called when you download it. However, that is why we have an install section, anyway - you shouldn't need to get this from the top title. As well, the top title should be human readable. It's the first very first thing a human looks at. Naming it for, more often than not, the overall folder or computational name - which may be slightly off what the module should be called, due to a busy ecosystem and a full namespace (the right name may have been taken already, for instance) - seems counter productive.

Is there a way we can regulate how this name should look, to make sure it is similar? Besides using human judgement, I don't think so. That having been said, human judgement is a much more powerful tool than any linter, and is what drives this standard, anyway.

The computational title should be gotten in the install section, anyway.

Question: “Must be new lines between each section” is ambiguous

In the spec, the requirements section contains the line: “Must be new lines between each section”.

I perceive that as ambiguous, is this ok? (new lines)

# standard-readme
## Install
```sh
npm install some-thing
```
## Usage
```sh
some = require('some-thing')
some.thing()
```

Or this? (blank lines)

# standard-readme

## Install
```sh
npm install some-thing
```

## Usage
```sh
some = require('some-thing')
some.thing()
```

Or? (blank lines between blocks)

# standard-readme

## Install

```sh
npm install some-thing
```

## Usage

```sh
some = require('some-thing')
some.thing()
```

Or even? (blank lines between blocks, double between sections)

# standard-readme


## Install

```sh
npm install some-thing
```


## Usage

```sh
some = require('some-thing')
some.thing()
```

...and finally: should the spec be unambiguous in this case?

Suggestion: deep spec links

Maybe it makes sense to create links for subsections, or even all the points in the spec; something like what d3 does maybe?

Also useful for a linter to link back to the spec.

For example:

# Specification

A compliant README must satisfy all the requirements listed below.

<a name="spec-requirements" href="#spec-requirements">#</a> **Requirements:**
  - <a name="file-name" href="#file-name">#</a> Be called README.md (with capitalization).
  - <a name="file-name-i18n" href="#file-name-i18n">#</a> If the project supports i18n, the file must be named accordingly: `README.de.md`, where `de` is the BCP 47 Language tag. For naming, prioritize non-regional subtags for languages.
  - ...

Yields (I don’t think it works in issues though, but it does in readme’s on GitHub):

Specification

A compliant README must satisfy all the requirements listed below.

# Requirements:

  • # Be called README.md (with capitalization).
  • # If the project supports i18n, the file must be named accordingly: README.de.md, where de is the BCP 47 Language tag. For naming, prioritize non-regional subtags for languages.
  • ...

Code of Conduct

I added a requirement that the Contribute section should link to the Code of Conduct. Normally, this is in a separate document or in the Contribute.md, as far as I've seen before.

Should we provide suggestions?

Also, what code of conduct should we use? I know there are some standards, like the Contribute covenant http://contributor-covenant.org/version/1/3/0/.

make it less js specific?

There's a lot of js-specific stuff. would be great to use this across languages. maybe qualify suggestions with the language it applies to. same goes for package managers, etc.

License Section

@tunnckoCore, here:

And second I also don't have License section, because it 1) can be accessed directly by opening the LICENSE file from file browser, or 2) by clicking the badge which is next to the name of the repo (h1). I think it is more faster than scrolling to the end of big/small readmes. Look at mukla's or hybridify's current/latest readme using verb 0.9. :)

If you are lawyer or such, or just you come to see the license, isn't it more natural to look is there a license file first and open it directly, instead of scrolling and etc? That's why I don't have license section. Also in the package's npm page have link to license based on license field in package.json.

I still think it is industry standard - at least in the Node community - to have a License note, and as it is the last element, I don't think it detracts. The README should be the sole source of information - it can link elsewhere (like to the LICENSE file), and I think this redundancy (which you are right, it is) is useful, in that regard. If I just cat the README, I should know the License without having to look in another file. Also, package.json is js-specific. I want standard-readme to be more than just javascript.

Look into Verb

Just found verb, might be a good way to build another generator that is less dependent on Yeoman (if needed) .

Note: Moved Repo

I have moved this repo to my own name from the IPFS org, because I think it will be more general than just for IPFS. My plan is to work on this and build it into something that can be used for other projects.

This will be of course based partially on zcei's standard-readme, as I finally have the time to take on the issue originally posed by @maxogden over at feross/standard in this issue.

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on all branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because we are using your CI build statuses to figure out when to notify you about breaking changes.

Since we did not receive a CI status on the greenkeeper/initial branch, we assume that you still need to configure it.

If you have already set up a CI for this repository, you might need to check your configuration. Make sure it will run on all new branches. If you don’t want it to run on every branch, you can whitelist branches starting with greenkeeper/.

We recommend using Travis CI, but Greenkeeper will work with every other CI service as well.

Once you have installed CI on this repository, you’ll need to re-trigger Greenkeeper’s initial Pull Request. To do this, please delete the greenkeeper/initial branch in this repository, and then remove and re-add this repository to the Greenkeeper integration’s white list on Github. You'll find this list on your repo or organiszation’s settings page, under Installed GitHub Apps.

learn from CPAN perl hackers

Perl hackers have been writing great READMEs in a consistent format for ages: http://search.cpan.org/~lloydg/List-Zip-0.04/lib/List/Zip.pm

Key elements:

  1. Name + Tagline: a tiny sentence that describes what the module does.
  2. A "Description" section that gives people without necessary background the means to understand the module's purpose.
  3. A concrete, runnable example that the user can copy locally and experiment with.
  4. A Methods listing that documents the public API, complete with examples where it helps.
  5. See Also: a mechanism for discovering other modules that work great with this one. (audio-lab does a great job with this throughout their audio modules)
  6. Copyright / License (I'm more interested in the latter)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.