Versioning
Applet Versioning
The item-javacard repository uses semantic versioning for releases. The major version is incremented when the command interface to the applets changes. The minor version changes when we add new functionality or make improvements that don't break the old command interface. Patch versions are used for fixes.
The release version reflects in the applets' AIDs. When we create a release we set the new version number in
- AID of the applet package
- AID of the loaded and installed ItemApplet
- AID of the loaded NdefApplet (the AID of the installed applet is fixed due to standards)
Thus, the installed software version of a device could be discovered, e.g., with a call to gp --list of the GlobalPlatformPro command line tool.
SDK Versioning
SDKs for the item-javacard applets, like item-sdk-java, use semantic versioning but are versioned independently of the applets. Meaning, equality of version numbers of an SDK and an applet release is not an indicator for compatibility. A release of item-javacard should point out which SDK versions it is compatible with.
Project-based Versioning
If we want to know the project in which particular NFI was deployed the applet versioning scheme described above will not give us a direct connection. Rather, we can make use of the NdefApplet for such an identification. By setting a different base URL on the NdefApplet for each project we can clearly map NFIs to projects.