weathermen/soundstorm

View on GitHub
docs/_posts/2020-01-07-the-road-to-1.0.md

Summary

Maintainability
Test Coverage
---
title: The Road to 1.0
layout: post
---

The goal of Soundstorm in 2020 is to release a **v1.0.0** of the
software and begin promoting the concept of a federated social audio
platform. To do this, the following goals must be reached:

- Two Soundstorm instances federating with each other, actively, for at
  least 4 weeks. A Mastodon server must also be able to federate with
  these Soundstorm instances.
- All public API endpoints are documented
- All documentation is available at <https://docs.soundstorm.social>
- The <https://stormwat.ch> hub is running and scaled properly to accept pings
- Soundstorm is running in production on Kubernetes

When these goals are accomplished, Soundstorm's API and application will
release its **v1.0.0** version. By doing so, this will mean that the API
will not break between minor versions. New features can add additional
endpoints, but cannot change the behavior or parameters of existing
endpoints. New Soundstorm instances should be able to join the network
without needing to worry about what version of the application they are
running, since all v1.x versions of Soundstorm will be able to federate
with each other.

## Versioning

Soundstorm is [semantically versioned][] and uses the version number to
communicate the level of effort in upgrading to that version, using the
syntax `vMAJOR.MINOR.PATCH[.SPECIAL]`.

- `MAJOR` releases include breaking changes to the API and federation,
  meaning two Soundstorm instances running different major versions
  are not guaranteed to be compatible with each other, and able to
  federate their data. Major releases can also include configuration
  changes which are required in order to upgrade.
- `MINOR` releases are new features or user interface updates. These
  versions may add additional endpoints, but cannot change existing
  ones. They are backwards-compatible for any release up to the next
  major release, and can be upgraded to without any necessary changes.
- `PATCH` releases are small improvements and bug fixes, and can be
  upgraded freely without needing to worry about breaking changes.
- `SPECIAL` releases are suffixed `.beta` or `.pre` to denote a new
  release candidate, or include security updates that are not large
  enough for a patch.

Since Soundstorm is an API specification and platform in addition to a
reference implementation, the API version is essentially the full
version of the application up to the `MAJOR`. So if you are running
**v1.1.9** of Soundstorm, your API version is **v1.1**. This means your
instance can federate with any other instance running **v1.0** or
**v1.1** of the API.

[semantically versioned]: https://semver.org