Hauke has stopped working on RIOT for some time now and other maintainers agreed to step up to take over the steering / contact job during the VMA. This change replaces Hauke by benpicco and maribu as contact as agreed upon.
5.1 KiB
Roadmap
The aim of the roadmap is to identify priority areas of RIOT development & enhancements. For each area, some near-future plans and concrete next steps are indicated. The text and items below are tentative, up for discussion, to be updated by regular pull requests.
Network Stack High layers
(contact/steering: Martine)
- ICN stack support clean-up
- discuss mid- and long-term plans for network stack maintenance & development (GNRC vs other supported stacks)
- revisit network time synchronization
- Provide a border router into 6LoWPANs (a 6LBR) that works out of the box in common scenarios:
- in IPv6 networks with working Prefix Delegation (PD)
- in IPv6 networks without working Prefix Delegation (eg. by means of ND Proxying)
- in legacy networks (eg. by means of tunneling)
- with configurable on-by-default fallbacks
Network Stack Low layers
(contact/steering: Peter)
- Point-to-Point Protocol (PPP): finalize and merge
gnrc_ppp
Integrations
(contact/steering: Teufelchen)
- Home-Assistant BTHome integration
- Home-Assistant integration via MQTT Discovery
Power Modes
(contact/steering: benpicco)
- concept to fix shell usage issue while LPM activated
- integrate generic power management functions in device driver APIs (netdev, SAUL, ...)
- more advanced LPM concepts:
- sleeping for short periods (in cases where it is not feasible to switch to the idle thread and back) -> mitigate active waiting
Peripheral drivers
(contact/steering: maribu)
Timers
(contact/steering: kaspar030, benpicco, maribu)
- cleanup and unification of low-level timer interfaces (
timer,rtt,rtc) - implement capture mode
SPI
- introduction of
spi_slaveinterface - transition to
spi_clk_tbeing the frequency in Hz, not anenumconstant, to allow arbitrary frequencies- most implementations have been ported
- allow a way to detect the actual frequency an SPI bus is running at
- see https://github.com/RIOT-OS/RIOT/pull/16727 for one proposal
I2C
- introduction of
i2c_slaveinterface- see https://github.com/RIOT-OS/RIOT/issues/19560 for a discussion
GPIO
(contact/steering: gschorcht, maribu)
- add a port-based, feature-rich, thread-safe GPIO API
- GPIO LL seems to fit the bill so for
- many MCUs still need an implementation
- add a high level API that unifies external and internal GPIOs on top
ADC
(contact/steering: benpicco, kfessel, gschorcht, maribu)
- extend / replace the ADC API to allow advanced use cases
- selecting reference voltages (think: multimeter app)
- differential inputs
- fast (ideally DMA supported) sampling (think: a digital oscilloscope app)
- unify external and internal ADCs
- see https://github.com/RIOT-OS/RIOT/pull/13247 for one proposal
Software Updates
(contact/steering: Emmanuel)
- Modularize to provide toolbox supporting other image storing (e.g. support external flash), transport (other than CoAP), crypto (e.g. secure element).
- riotboot support for architectures other than Cortex-M
Documentation
(contact/steering: Emmanuel)
- Write and publish more RDMs
Low-level Hardware Support
(contact/steering: Alex)
- radio support for TI SensorTag
- radio support for Silab Thunderboard
Testing
(contact/steering: Kaspar)
- automated network functionality tests (e.g. RPL + UDP/PING tests through border router, multi-hop) in IoTLAB dev sites?
Security
(contact/steering: Kaspar)
- RNG unified (secure, or basic), seeding
- RIOT default configuration = secure configuration (that's our goal/motto)
802.15.4 link layer security
(contact/steering: chrysn)
Current status: RIOT supports application provided keys, with no guidance on how to (and no practical ways to) use that securely (see CVE-2021-41061).
Goal: Usably secure defaults.
- Figure out applicability of RFC9031 ("CoJP") to non-6TiSCH scenarios.
- Implement RFC9031 with any extensions needed for the MACs RIOT has.
- Provide tools to set up a recommended JRC, and to provision keys between it and the device at flash time. This may entail extensions to the build process, as CoJP requires per-device secrets.