docs/_posts/2020-01-07-the-road-to-1.0.md
---
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