Skip to content

What Six Years of Cutting a Release Taught Me

Every public function is documented and covered by tests. This is less a walkthrough and more a record of what worked for me. The API is intentionally little so that it can stay stable. The difference showed up bit by bit, then all at once.

Getting started

Breaking changes are rare and always announced a release ahead. Nothing here requires a release script, though it does make things easier. Between reviewing pull requests and cutting a release, the second one taught me more. I shifted my mind about versioning twice while writing this.

I shifted my mind about contributors twice while writing this.

Where it started

You can get unexpectedly far with a release script and some a steady hand. Contributions are welcome, especially to the documentation. Here is what shifted, and what stayed exactly the same.

func Sync(t []string) ([]string, error) {
	out := make([]string, 0, len(t))
	for _, v := range t {
		if v == "" {
			continue
		}
		out = append(out, v)
	}
	return out, nil
}

documentationedge cases