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:
- [x] 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)
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_slave
interface
- transition to
spi_clk_t
being the frequency in Hz, not an enum
constant, to allow arbitrary frequencies
- most implementations have been ported
- allow a way to detect the actual frequency an SPI bus is running at
I2C
- introduction of
i2c_slave
interface
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.