[DISCUSSION] Release Version Number and Schedule
Hi all,
We are currently preparing for a new release and need more clarity about the release plan. We would greatly appreciate your thoughts and suggestions to help us establish a more concrete and reasonable release scheme.
1. Upcoming Release Version Number
Given the significant changes introduced since the previous release (v0.3.0-rc1), including breaking changes to the build environment, we are considering two options for the upcoming release version number:
- Option 1: Release as
v0.3.0-rc2, which means a normal upgrade, will later be finalized as v0.3.0 after the Apache release process.
- Option 2: Bump the version to
v1.0.0, marking this release as a major milestone.
Both choices have different considerations, taking v0.3.0 as default, let's discuss about moving to v1.0.0.
YES because:
- According to Semantic Versioning, a major version should be incremented when there are incompatible API changes. Our build environment refactoring introduces significant breaking changes that are not compatible with the legacy setup.
- This release includes more substantial changes compared to any previous release and potentially future releases in the near term (more details on the appended
Release Notes). Labeling it as v1.0.0 highlights it as a major milestone rather than just an incremental upgrade.
- Following OP-TEE's approach—where they bumped from 3.x to 4.x due to compatibility changes, including APIs and tools, we can align with their versioning strategy.
NO because:
- In the Rust ecosystem, a
v1.0.0 release often implies stability and production readiness. Many Rust crates (e.g., Rustls) maintain 0.x versions even with breaking changes to indicate ongoing development. Should we continue with minor version increments until we achieve broader adoption and maturity?
- While the build environment has undergone significant changes, there haven't been major API modifications.
2. Release Schedule
OP-TEE follows a quarterly release schedule for minor versions and introduces major versions when there are incompatible API changes. For major versions we've discussed on topic 1. In this part let's talk about normal releases (minor versions):
What should be the release schedule?
- Align with OP-TEE's quarterly schedule?
- As the recommended Rust SDK for OP-TEE, synchronizing our releases could enhance alignment and compatibility.
- Follow an independent schedule?
- Since OP-TEE upgrades do not always directly impact the Rust SDK, we could adopt our own release schedule based on our development needs. The challenge lies in determining an effective and practical schedule.
If you have any recommendations, feel free to comment on this thread, thanks!
For reference, I've prepared the draft Release Notes for the upcoming release:
Apache Teaclave TrustZone SDK (incubating) vx.x.x Release Notes
This release introduces a new unified build environment that supports both the original std and the newly added no-std, along with a new crate to simplify the process of building trusted applications. It also includes real-world examples and updates to support the latest OP-TEE release (4.5.0).
The following are the key updates since v0.3.0-rc1:
Breaking Changes in the Build Environment
In this release candidate, we have reorganized the code structure and build environment to support both no-std and std build options, simplifying the overall build process.
Additionally, the TA build scripts have been streamlined by introducing the new optee-utee-build crate.
Since the process is quite complex, the following breakdown provides more details:
Starting with an intermediate branch no-std, which simplifies the build environment from scratch:
- On
no-std branch: Cleaned up the build environment for no-std and simplified the build process. The works processed on PR114-PR122, e.g.: PR #115
- Based on
no-std, added std support: PR #141
- Renamed
no-std to main and set it as the default branch: Issue #143
- Further improvements on
main after setting it as default:
Introduced optee-utee-build crate for simplified TA builds. PR #156
Integration with OP-TEE
- Updated CI Docker image for the new OP-TEE build environment: PR #157
- Pinned the setup to OP-TEE 4.5.0: Commit 3aa0c94
New Features
- Made
panic_handler optional in optee-utee: PR #147
- Added support for configuring the capacity of shared buffers in
LoadablePlugin: PR #154
- Added
no-std networking support in optee-utee: PR #164
New Examples
- Added
error-handling example: PR #127
- Introduced
project/ directory for real-world examples, including a Web3 ETH wallet example: PR #150
- Added
no-std support for tcp_client-rs and udp_socket-rs. PR #164
Bug Fixes
- Fixed a double-free bug in
optee-utee: PR #127
- Improved argument validation error messages: PR #134
Documentation Updates
- README updates:
no-std improvements: PR #128
- Re-added
std support in the new build environment: PR #144
- New migration guide:
- Guide for writing Rust TAs using
optee-utee-build:
[DISCUSSION] Release Version Number and Schedule
Hi all,
We are currently preparing for a new release and need more clarity about the release plan. We would greatly appreciate your thoughts and suggestions to help us establish a more concrete and reasonable release scheme.
1. Upcoming Release Version Number
Given the significant changes introduced since the previous release (v0.3.0-rc1), including breaking changes to the build environment, we are considering two options for the upcoming release version number:
v0.3.0-rc2, which means a normal upgrade, will later be finalized asv0.3.0after the Apache release process.v1.0.0, marking this release as a major milestone.Both choices have different considerations, taking
v0.3.0as default, let's discuss about moving tov1.0.0.YES because:
Release Notes). Labeling it as v1.0.0 highlights it as a major milestone rather than just an incremental upgrade.NO because:
v1.0.0release often implies stability and production readiness. Many Rust crates (e.g., Rustls) maintain 0.x versions even with breaking changes to indicate ongoing development. Should we continue with minor version increments until we achieve broader adoption and maturity?2. Release Schedule
OP-TEE follows a quarterly release schedule for minor versions and introduces major versions when there are incompatible API changes. For major versions we've discussed on topic 1. In this part let's talk about normal releases (minor versions):
What should be the release schedule?
If you have any recommendations, feel free to comment on this thread, thanks!
For reference, I've prepared the draft Release Notes for the upcoming release:
Apache Teaclave TrustZone SDK (incubating) vx.x.x Release Notes
This release introduces a new unified build environment that supports both the original
stdand the newly addedno-std, along with a new crate to simplify the process of building trusted applications. It also includes real-world examples and updates to support the latest OP-TEE release (4.5.0).The following are the key updates since v0.3.0-rc1:
Breaking Changes in the Build Environment
In this release candidate, we have reorganized the code structure and build environment to support both
no-stdandstdbuild options, simplifying the overall build process.Additionally, the TA build scripts have been streamlined by introducing the new
optee-utee-buildcrate.Since the process is quite complex, the following breakdown provides more details:
Starting with an intermediate branch
no-std, which simplifies the build environment from scratch:no-stdbranch: Cleaned up the build environment forno-stdand simplified the build process. The works processed on PR114-PR122, e.g.: PR #115no-std, addedstdsupport: PR #141no-stdtomainand set it as the default branch: Issue #143mainafter setting it as default:Introduced
optee-utee-buildcrate for simplified TA builds. PR #156Integration with OP-TEE
New Features
panic_handleroptional inoptee-utee: PR #147LoadablePlugin: PR #154no-stdnetworking support inoptee-utee: PR #164New Examples
error-handlingexample: PR #127project/directory for real-world examples, including a Web3 ETH wallet example: PR #150no-stdsupport fortcp_client-rsandudp_socket-rs. PR #164Bug Fixes
optee-utee: PR #127Documentation Updates
no-stdimprovements: PR #128stdsupport in the new build environment: PR #144optee-utee-build: