====== CIP Software Updates ======
===== Overview =====
The primary goal of the CIP project is to contribute to the long-term maintenance of an industrial-grade open source base layer (OSBL). The OSBL currently includes the source code of the [[https://wiki.linuxfoundation.org/civilinfrastructureplatform/cipkernelmaintenance|CIP kernels]], based on upstream LTS kernels (to which we also contribute); and the [[https://wiki.linuxfoundation.org/civilinfrastructureplatform/cip-core|CIP Core]], based on a subset of Debian LTS packages (which we [[https://www.freexian.com/services/debian-lts.html|sponsor]]).
The CIP project provides example operating system images and [[https://gitlab.com/cip-project/cip-core/|metadata]] for a set of [[https://wiki.linuxfoundation.org/civilinfrastructureplatform/ciptesting/cipreferencehardware|reference boards]] to accelerate the adoption of the CIP open source base layer. These example images are created from the CIP open source base layer by using Linux image build or generation tools such as [[https://github.com/meta-debian/meta-debian|meta-debian]] or [[https://github.com/ilbers/isar|ISAR]].
Having a long-term supported base layer makes little sense unless you have a software update mechanism in place. However, updating software is not an easy task. For example, random power outages can severely interfere with an update. Besides, update software can have bugs just like any other software.
The CIP Software Updates workgroup has been born to fill that gap by providing a robust software update mechanism suitable to the industrial-grade open source base layer. In particular, these are the goals of the workgroup:
- Design the architecture of the software update mechanism.
- Compare and select a software update tool suitable for the architecture.
- Integrate the chosen software into the Linux image build tools used by CIP Core.
- Implement the software update mechanism on the reference boards.
- Contribute to the maintenance of the chosen software update tool.
===== Roadmap =====
==== Roadmap Iteration #3 ====
Here is the 3rd iteration work items:
- Prepare minimum required development environment
- [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks/issues/3|#3]]: Clean a branch relevant to SWUpdate on isar-cip-core
- Commit source codes that already exists in my local machine
- [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks/issues/4|#4]]: Add a demo of ELCE 2019 regarding a safe update feature
- Fix what should have been integrated into the current software update mechanism
- [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks/issues/5|#5]]: Enable u-boot environment redundancy so that software updates can continue if a power failure occurs
- [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks/issues/6|#6]]: Fix how to use binary delta update
- Support new basic features
- [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks/issues/7|#7]]: Support kernel update feature
- [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks/issues/8|#8]]: Support HTTPS connection between client and server
- [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks/issues/9|#9]]: Support rollout feature
- Make a demo better
- [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks/issues/10|#10]]: Fix bug of hawkBit dashboard regarding screen refresh
- [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks/issues/11|#11]]: Add multiple ways to trigger software updates such as push update and arbitrary polling time
- [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks/issues/12|#12]]: Automate a demo
The period of this iteration will be from the beginning of Feb 2020 to the end of Jul 2020.
==== Roadmap Iteration #2 ====
Here is the 2nd iteration work items:
- Integrate safe update features into the reference software update mechanism
* Deliverable: demo shown at [[https://events19.linuxfoundation.org/events/embedded-linux-conference-europe-2019/|ELCE 2019]] (the detail is described in [[https://wiki.linuxfoundation.org/_media/civilinfrastructureplatform/cipconferences/sw_updates_wg_mini-summit.pdf|Slides of CIP Mini Summit]])
- Make it easier to contribute to SW Updates WG
* Clarify current SW Updates WG's tasks [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-tasks|cip-sw-update-tasks]]
* Provide how to prepare an environment for developing and testing [[https://gitlab.com/cip-project/cip-sw-updates/cip-sw-updates-demo|cip-sw-update-demo]]
- Work on remaining tasks for the reference software update mechanism -> Move to the next iteration
- Try to integrate the reference software update mechanism into CIP Core and CIP Testing properly -> Move to the next iteration
* For CIP Core: add a recipe to build an update image
* For CIP Testing: test the reference software update mechanism on several reference boards continuously
The period of this iteration will be from the beginning of Aug 2019 to the end of Jan 2020.
==== Roadmap Iteration #1 ====
Here is an initial schedule with intended finish dates for the first iteration:
- Architecture milestone
- Finish date: 31st Jan 2019
- Deliverable: [[CIP Software Updates Architecture|CIP Software Updates Architecture]] (survey, and a non-detailed architecture of the software update mechanism).
- Status: complete (open to discussion on the mailing list)
- Comparison milestone
- Finish date: 28th Feb 2019
- Deliverable: [[CIP Comparison report]] (compares multiple open source software update tools and their suitability for the chosen architecture).
- Status: complete (open to discussion on the mailing list)
- Integration milestone
- Finish date: 31st Apr 2019 15th Jul 2019
- Deliverable: [[https://gitlab.com/cip-project/cip-core/isar-cip-core/tree/stormc/swupdate|metadata]] to build the selected software update tool (e.g., recipes for ISAR or meta-debian)
- Status: complete (needs refining in the next roadmap iteration)
- Prototype milestone
- Finish date: 31st Jun 2019 15th Jul 2019
- Deliverable: [[https://gitlab.com/cip-project/cip-core/isar-cip-core/tree/stormc/swupdate|prototype]] implementation of the software update mechanism on a reference board (e.g., glue scripts and metadata)
- Status: complete ({{:civilinfrastructureplatform:sw-updates:ossj2019-cip-swupdates-demo-panel.pdf|demo}} shown at [[https://events.linuxfoundation.jp/events/open-source-summit-japan-2019/|OSSJ 2019]])
- Contributions milestone
- Finish date: 31st Jun 2019 30th Jul 2019
- Deliverable: [[CIP Software Updates Contributions Iternation 1|list of contributions]] including bug reports and code patches contributed so far.
- Status: completed