This post provides an overview of how we are approaching versioning at Rivetz. We’ll start by looking at the three major client-side components of the Rivetz Android software.

Rivetz App

(The Rivetz Android app is sometimes called the "Adapter" or "Rivet")

The version number of the Rivetz app is the version you see in the Play Store and in the first line of the Version Info section in the About view. As an end user, this is the only version number you need to know.


This is the version number of the Rivetz Toolkit Java libraries. Since the Rivetz App uses RivetzJ internally, the version number of the RivetzJ library used by the app is also displayed in the About view.

Java libraries used in Android applications are statically-linked at build time. This means that, on order to use a newer version of RivetzJ, an app (e.g. 2FA, Rosie) needs to be rebuilt and an update released to the Google Play store (or distributed privately as an .apk)

Generally, apps built with an older versions of RivetzJ should continue to work with newer releases of the Rivetz app, but this is not guaranteed — especially now as we haven’t yet reached a 1.0 release, yet. We try to not break things willy-nilly and we try to use deprecation.[1] to warn of upcoming changes, but we will need to make a few significant changes to RivetzJ between now and a Rivetz 1.0 release of RivetzJ/Toolkit.

Internal and external developers will need to keep track of RivetzJ changes and versions.


The TA (Trusted Application) is the secure component of the Rivetz app, that runs inside the secure OS. The version of the TA that will be installed by a particular version of the Rivetz App is hard-coded, but there can be situations where an upgraded Rivetz App has not yet installed the latest TA. (This is something we may try to change in the forthcoming TAP releases)

Neither end-users or developers should have to worry about the TA version number, but as it is a very significant component of our system and is separately built and released, it has it’s own version number and is worth tracking in many internal conversations.

Current Version

The current latest, greatest,and published releases of the components are as follows:

Rivetz App






At Rivetz, we use <major> . <minor> . <patch> versioning.

The version numbers of each component are separate, but we have recently begun keeping the major/minor version numbers of Rivetz App and RivetzJ in sync. Patch numbers do not always match because we release components on different schedules and with different frequencies.

In the 0.8.x and future set of releases we will bring the TA version into sync, as well. We are currently testing TA 0.8.0 within Engineering.

1. The Java language/platform provides a mechanism to formally mark parts of an API as deprecated, so that developers will get a compile-time warning telling them to switch away from that particular call and, when applicable, point to the new preferred method for accessing the deprecated functionality.