• Stars
    star
    333
  • Rank 126,599 (Top 3 %)
  • Language
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated about 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

gochecklist is a set of recommendations for publishing Go projects.

Purpose

The purpose of this project is to marshal various conventions and practices around publishing Go projects in one place.

It is written in a way where you can check-off each bullet point as you go along.

Do I have a plush Go Gopher?

List of Recommendations and Guidelines

Below are the recommendations as partitioned by topical area with brief explanations. Detailed explanations for each of these will be documented externally.

Publication and Reiteration

This subsection is dedicated to the acts of initially publishing a project or having an established project undergo a major reiteration. The practical difference between these points is the former means one-time blanket application of these principles; whereas the latter means ensuring that subsequent changes to the project uphold and fulfill these principles.

Minimum Criteria

The failure to fulfill any of these usually causes one to discard a project and look for alternatives.

☐ Licensed: Does the project have a license?

See: publication/licensing.md

☐ Compiles: Does the project build?

See: publication/compilation.md

☐ Tests Pass: Do the projects tests, if any, pass?

See: publication/tests_pass.md

☐ Code Correctness: Does the code pass format, lint and error checking tools?

See: publication/code_correctness.md

Go Code Review Comments Correctness: Does the project fulfill the upstream code review criteria?

See: publication/code_review_comments.md

☐ Build Instructions: Does the project's documentation instruct how to build the project?

See: publication/build_instructions.md

☐ Test Instructions: Does the project's documentation instruct how to perform tests?

See: publication/test_instructions.md

☐ README Presence: Does the project's include a documentation entrypoint?

See: publication/documentation_entrypoint.md

☐ Directory Names and Packages Match: Does each package <pkg> statement's package name match the containing directory name?

See: publication/dir_pkg_match.md

☐ Godoc Correctness: Does the project's godoc work correctly?

See: publication/godoc_correctness.md

☐ Exporting Only What is Needed: Are any private or internal types accidentally exported? Are all the types one needs to use the project correctly exported?

See: TODO

☐ Solving a Real Problem: Does the project fulfill a real necessity or provide useful learning value?

See: TODO

☐ Idiomaticness: Have the authors even bothered to consult Effective Go or the standard library for prior art?

See: TODO

Good Citizen

Projects that provide the following, in addition to the above, set themselves above the pack.

☐ Contribution Process: Does the project document a contribution process or workflow (e.g., CONTRIBUTING.md or use of Gerrit)? Does the project take affirmative steps to avoid the issues documented in the Unbecoming of a Hacker?

See: TODO

☐ Code Review Readiness: Does the project note any special nuances or hints for code review? Are the maintainers sufficiently patient to work with newcomers to the code review process or willing to document what is expected?

See: TODO

☐ Issue Reporting Process: Is a process documented for how and where to report problems?

See: TODO

☐ Contact Information: Does the project list contacts or mailing lists for maintainers and users?

See: TODO

☐ API Stability and Maturity Grants: Does the project document its stability guarantees, if any?

See: publication/api_stability_and_maturity.md

☐ Dependency Vendoring: Does the project vendor its dependencies in some fashion? Bonus points for low-tech. solutions to this.

See: TODO

☐ Continuous Build: Does the project use a continuous build (CB)? Is it easy for change proposals to be submitted to the CB? Does the team actively follow the CB?

See: TODO

☐ Presence of Useful Tests: Does the project have tests, specifically ones that are easy to reason with and maintain?

See: TODO

☐ Minimal Third-Party Dependencies: Does the project avoid unnecessarily using external packages when the first-party suffice?

See: TODO

☐ Offers API Examples: If the project exposes a public API, have the important parts of been documented as playable examples?

See: TODO

☐ Demonstrates Correct Layout: Does the project lay out its files and packages in a sane and conventional way? Is it neither too sparse nor too dense? Are the executable binaries contained within a cmd directory?

See: TODO

Extra Credit

These points go above and beyond being a good citizen. Established and mature projects are likely to fulfill these, though they are certainly not required for a project to be successful.

☐ References Similar Solutions: Does the project's document actively reference existing solutions or implementation and offer to compare itself with them?

See: TODO

☐ Enrolled in Appropriate Directories: Is the project listed in appropriate registries?

See: TODO

☐ References Formal Research: If the project builds upon formal research, does the project's documentation prominently link to the supporting documentation describing the research (e.g., peer reviewed article)?

See: TODO

☐ Roadmap: Does the project offer a formal roadmap?

See: TODO

☐ Benchmarks: In addition to tests, does the project have benchmarks?

See: TODO

☐ Blackbox Tests: In addition to standard tests, does the project have blackbox tests?

See: TODO

Contributing

Contributions are encouraged. Instructions are documented in CONTRIBUTING.md.

License

This project is Apache License 2.0.

More Repositories

1

golang_protobuf_extensions

Support for streaming Protocol Buffer messages for the Go language (golang).
Go
66
star
2

hodler

hodler converts iTerm 2 color schemes into forms that X resources users (XTerm) and Suckless Simple Terminal users, Alacritty users, and Linux Virtual Terminal users can use.
Go
35
star
3

python_quantile_estimation

Python Implementation of Graham Cormode and S. Muthukrishnan's Effective Computation of Biased Quantiles over Data Streams in ICDE’05
Python
13
star
4

golang_circuitbreaker

Circuit breaker implementations for Go.
Go
12
star
5

ruby_quantile_estimation

Ruby Implementation of Graham Cormode and S. Muthukrishnan's Effective Computation of Biased Quantiles over Data Streams in ICDE’05
Ruby
12
star
6

fisheryates

Package Fisher-Yates shuffles collections of data in the Go Programming Language.
Go
9
star
7

cgotypes

cgotypes provides a means to output information about how Cgo operates on your platform.
Go
5
star
8

go-quake

go-quake is a Quake I server implemented in Go.
Go
4
star
9

esort

Package esort provides mechanisms for sorting user-defined types according to compound criteria extensibly.
Go
4
star
10

faregate

Package faregate provides a token bucket load shaper.
Go
3
star
11

gocheck

A Git-backed clone of Gustavo Niemeyer's gocheck package: http://labix.org/gocheck.
Go
2
star
12

dot-files

My various dot files.
C
2
star
13

golang_runtime_exploration

Makefile
2
star
14

cmdrpike

A Plan 9-inspired color theme for https://github.com/Microsoft/vscode/ (WIP)
2
star
15

sampletrackr

Python
1
star
16

golang_challenge

Go
1
star
17

Samplr

Java
1
star
18

go-qcc

QuakeC utilities in Go.
Go
1
star
19

groningen

Groningen is a framework to run automated experiments on servers that run on the Java Virtual Machine (JVM) such that the most optimal JVM settings outcome can be reached with the least amount of human effort and time while maximizing safety. (Mirror of https://code.google.com/p/groningen/)
Java
1
star