go4.org 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 https://golang.org/doc/contribute.html#cla
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.
|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 cloud.google.com/go/storage.|
|ctxutil||Package ctxutil contains golang.org/x/net/context 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.|