Alpha, beta, stable, and latest; What should you use?

Here’s a question I got today over email:

I’m having a hard time figuring out which version I should be using. I’m currently running PhotoStructure as a docker container. I am using the “beta” tag in the docker compose file. Is that correct?

TL;DR: Most users should use stable: don’t use beta unless you know what you’re doing. Continue reading to know what beta actually entails.

First off: apologies that this is confusing!

I’ve used the term “beta” to mean two very different things:

  1. PhotoStructure, as a “beta product”, as well as
  2. A "beta build."

The “beta product” meaning will be going away soon, as the current (v0.9.1) version of PhotoStructure is the last “beta product” release.

In the near future, if “beta” is mentioned, it will only refer to a "beta build," which is a stage of PhotoStructure’s release pipeline.

PhotoStructure’s release pipeline

It’s no fun to run buggy software!

Unfortunately, every time software is changed (either to add features or to fix bugs), those changes may introduce new, unexpected defects.

We try to minimize these defects by refining each release via a release “pipeline” that has 3 phases:

alphabetastable

The alpha and beta builds are used to verify bug fixes and minimize new defects. There may be several of each.

:warning: Caution! :warning:

  • Do not run an alpha or beta build if you do not have frequent, automatic backups of your data.

  • If bugs really bother you, or you don’t have time to report defects that you encounter via this forum, you probably should wait for stable releases.

alpha builds

An alpha build should be considered extremely experimental, and may not even launch on all platforms.

After all features for a given version are implemented, an alpha.1 build is released.

Announcements with installation instructions and release notes are made to this forum.

Although PhotoStructure has a robust set of over 5,000 tests that automatically run on all supported platforms, these tests don’t (and can’t!) cover everything. Manual testing in a bunch of different environments is critical to help discover defects.

Once an alpha build seems to work for several users on different platforms, we progress to beta builds.

beta builds

Note that beta builds still should be considered unstable: but for several users, the product launches, sync runs, and the UI is functional.

Announcements with installation instructions and release notes for these builds are made here in the forum, to the /r/PhotoStructure subreddit, and @PhotoStructure on Twitter.

As new beta builds are released, they are also tagged with alpha, to make sure alpha testers are seeing the latest and greatest build.

When the latest beta build seems to be stable and show-stopping bugs have been addressed, we actually release the final build for that version and tag it with stable. We also push this stable build to alpha and beta, to make sure everyone is running the latest stable version.

stable build

A stable build is recommended for most users, and should be relatively bug free. If defects are found, we’ll try to fix them in the next stable release.

Announcements with installation instructions and release notes for new versions are made to the email subscription, here in the forum, to the /r/PhotoStructure subreddit, and @PhotoStructure on Twitter.

So: to finally get back to the question:

I am using the “beta” tag in the docker compose file. Is that correct?

No. Most people should use the stable tag.

beta builds should be considered unstable.

If you’re floating on beta, and a new beta.1 is released, your system may automatically upgrade. If there are issues with that build, you may find your library is not available when you expect it to be.