This page is under construction
A very important criterion for evaluating and adopting a software platform is support. The Trusted Firmware-A community has been releasing code from the tip every six months. This model works very well for software innovation and implementing new hardware features. But for platforms in production, this policy does not scale in terms of maintenance, backward compatibility of important software fixes, and overall product lifecycle management.
Several open source software projects (e.g. Ubuntu, Yocto, Linux Kernel) have faced this problem during their lifetime and have implemented a long term support release as a solution. Long-term support extends the period of software maintenance; it also alters the type and frequency of software updates (patches) to reduce the risk, expense, and disruption of software deployment, while promoting the dependability of the software. It does not necessarily imply technical support.
This document proposes a plan to leverage the path chosen by various open source software projects and define a long-term support release strategy. This proposal will not succeed without the support of the community and relies on contributions from Arm, its partners and platform owners.
The following are some of the problems slowing down device upgrades.
- The investment to maintain a software release and keep it updated with important software changes from upstream is too high
- The cost to productize and deploy a newly released version is too high
- Lack of tests to cover all scenarios means that a new public release cannot be immediately deployed to the field
- Some aspects like documentation, code analysis reports, test reports and long term availability of tools are not available
The technical forum for TF-A on 10 Sep, 2020 was focused on this topic to gauge interest and support from the community. To move the discussion forward, this page intends to capture ideas from the community and eventually crystalize a plan that works for everyone.
Expectations from LTS codebase
There is interest from the community to explore the possibility of a long-term release codebase to solve these problems. The following might be some of the expectations from a long-term support release branch.
- Well defined policy to detect, report and deploy software fixes for mitigating security issues, stability concerns, erratas and bugs
- 100% test coverage with a publicly available report for every changelist
- Up-to-date API reference manual at any given changelist
- Well documented performance numbers for important use cases
- Usage of Long-term supported toolchains
- Well defined policy for accepting new changes
- Use of publicly available static analysis tools to improve code quality
- Well defined release cadence and key quality indicators
Call to action
Reviewers are encouraged to add to the list of improvement areas and provide expectations from the long-term support release. This will help us define the problem before we start discussing the mechanics of the release.
- Tech forum discussion (https://www.trustedfirmware.org/meetings/tf-a-technical-forum/) on 10 Sep, 2020.
This is a great initiative. Support this completely, although the "Expectation from LTS codebase" section scares me :). Given the size of the community(that i'm aware of), the goals set out are great long term goals so may be it should be renamed as Long term expectations.
As a start, I think once in 2 years LTS branch, with only security, errata fixes and critical(subjective) bug fixes that apply to the LTS branch and no feature back ports would be good. This can be added to Open CI to ensure no regressions and can potentially be run on partner platforms if they could donate to OpenCI.
For maintenance of LTS, we could have a couple of volunteers(perhaps from TF-A maintainers) rotate every 2 weeks or 4 weeks to keep an eye out on the LTS branch and merge these patches/fixes. Assuming the tip is high quality, i imagine the amount of work or frequency of patches merging and work load may not be too bad. For regressions caused by patch merge, the volunteers would need to work with patch authors to get it merged(which can be challenging).
Let me know your thoughts. I'm sure i've oversimplified things but we can use this as a start and iterate to smaller steps or larger steps.