travis badge is a collection of packages for Go programmers.

They started out living in Perkeep's repo and elsewhere but they have nothing to do with Perkeep, so we're moving them here.


  • single repo. go4 is a single repo. That means things can be changed and rearranged globally atomically with ease and confidence.

  • no backwards compatibility. go4 makes no backwards compatibility promises. If you want to use go4, vendor it. And next time you update your vendor tree, update to the latest API if things in go4 changed. The plan is to eventually provide tools to make this easier.

  • forward progress because we have no backwards compatibility, it's always okay to change things to make things better. That also means the bar for contributions is lower. We don't have to get the API 100% correct in the first commit.

  • no Go version policy go4 packages are usually built and tested with the latest Go stable version. However, go4 has no overarching version policy; each package can declare its own set of supported Go versions.

  • code review contributions must be code-reviewed. We're trying out Gerrithub, to see if we can find a mix of Github Pull Requests and Gerrit that works well for many people. We'll see.

  • CLA compliant contributors must agree to the Google CLA (the same as Go itself). This ensures we can move things into Go as necessary in the future. It also makes lawyers at various companies happy. The CLA is not a copyright assignment; you retain the copyright on your work. The CLA just says that your work is open source and you have permission to open source it. See

  • docs, tests, portability all code should be documented in the normal Go style, have tests, and be portable to different operating systems and architectures. We'll try to get builders in place to help run the tests on different OS/arches. For now we have Travis at least.


For any question, or communication when a Github issue is not appropriate, please contact the Perkeep mailing list.

Expand ▾ Collapse ▴


Path Synopsis
bytereplacer Package bytereplacer provides a utility for replacing parts of byte slices.
cloud/cloudlaunch Package cloudlaunch helps binaries run themselves on The Cloud, copying themselves to GCE.
cloud/google/gceutil Package gceutil provides utility functions to help with instances on Google Compute Engine.
cloud/google/gcsutil Package gcsutil provides tools for accessing Google Cloud Storage until they can be completely replaced by
ctxutil Package ctxutil contains related utilities.
errorutil Package errorutil helps make better error messages.
fault Package fault handles fault injection for testing.
jsonconfig Package jsonconfig defines a helper type for JSON objects to be used for configuration.
legal Package legal provides in-process storage for compiled-in licenses.
lock Package lock is a file locking library.
media/heif Package heif reads HEIF containers, as found in Apple HEIC/HEVC images.
media/heif/bmff Package bmff reads ISO BMFF boxes, as used by HEIF, etc.
media/heif/dumpheif The dumpheif program dumps the structure and metadata of a HEIF file.
must Package must contains helpers that panic on failure.
net/throttle Package throttle provides a net.Listener that returns artificially-delayed connections for testing real-world connectivity.
oauthutil Package oauthutil contains OAuth 2 related utilities.
osutil Package osutil contains os level functions.
readerutil Package readerutil provides and operates on io.Readers.
readerutil/singlereader package singlereader provides Open and Close operations, reusing existing file descriptors when possible.
reflectutil Package reflectutil contains reflect utilities.
rollsum Package rollsum implements rolling checksums similar to apenwarr's bup, which is similar to librsync.
sort Package sort provides primitives for sorting slices and user-defined collections.
strutil Package strutil contains string and byte processing functions.
syncutil Package syncutil provides various synchronization utilities.
syncutil/singleflight Package singleflight provides a duplicate function call suppression mechanism.
syncutil/syncdebug Package syncdebug contains facilities for debugging synchronization problems.
testing/functest Package functest contains utilities to ease writing table-driven tests for pure functions and method.
types Package types provides various common types.
wkfs Package wkfs implements the pluggable "well-known filesystem" abstraction layer.
wkfs/gcs Package gcs registers a Google Cloud Storage filesystem at the well-known /gcs/ filesystem path if the current machine is running on Google Compute Engine.
writerutil Package writerutil contains io.Writer types.
xdgdir Package xdgdir implements the Free Desktop Base Directory specification for locating directories.