DemesneGH opened a new issue, #165:
URL: https://github.com/apache/incubator-teaclave-trustzone-sdk/issues/165

   # [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](https://semver.org/), 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](https://github.com/apache/incubator-teaclave-trustzone-sdk/tree/no-std):
 Cleaned up the build environment for `no-std` and simplified the build 
process.  The works processed on PR114-PR122, e.g.: [PR 
#115](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/115)  
   - Based on `no-std`, added `std` support: [PR 
#141](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/141)  
   - Renamed `no-std` to `main` and set it as the default branch: [Issue 
#143](https://github.com/apache/incubator-teaclave-trustzone-sdk/issues/143)  
   - Further improvements on `main` after setting it as default:  
   Introduced `optee-utee-build` crate for simplified TA builds.  [PR 
#156](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/156)  
   
   ### Integration with OP-TEE  
   
   - Updated CI Docker image for the new OP-TEE build environment:  [PR 
#157](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/157)  
   - Pinned the setup to OP-TEE 4.5.0:  [Commit 
3aa0c94](https://github.com/apache/incubator-teaclave-trustzone-sdk/commit/3aa0c94faebc43f174d62efcc8342d92f1364278)
  
   
   ### New Features  
   
   - Made `panic_handler` optional in `optee-utee`:  [PR 
#147](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/147)  
   - Added support for configuring the capacity of shared buffers in 
`LoadablePlugin`:  [PR 
#154](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/154)  
   - Added `no-std` networking support in `optee-utee`:   [PR 
#164](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/164)  
   
   ### New Examples  
   
   - Added `error-handling` example: [PR 
#127](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/127)  
   - Introduced `project/` directory for real-world examples, including a Web3 
ETH wallet example:  [PR 
#150](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/150)  
   - Added `no-std` support for `tcp_client-rs` and `udp_socket-rs`.  [PR 
#164](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/164)
   
   ### Bug Fixes  
   
   - Fixed a double-free bug in `optee-utee`:  [PR 
#127](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/127)  
   - Improved argument validation error messages:  [PR 
#134](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/134)  
   
   ### Documentation Updates  
   
   - README updates:  
     - `no-std` improvements: [PR 
#128](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/128)  
     - Re-added `std` support in the new build environment: [PR 
#144](https://github.com/apache/incubator-teaclave-trustzone-sdk/pull/144)  
   - New migration guide:  
     - [Migrating to the new build environment (Post-Oct 
2024)](https://github.com/apache/incubator-teaclave-trustzone-sdk/blob/main/docs/migrating-to-new-building-env.md)
  
   - Guide for writing Rust TAs using `optee-utee-build`:  
     - [Writing Rust 
TAs](https://github.com/apache/incubator-teaclave-trustzone-sdk/blob/main/docs/writing-rust-tas-using-optee-utee-build.md)
  
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@teaclave.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@teaclave.apache.org
For additional commands, e-mail: dev-h...@teaclave.apache.org

Reply via email to