Reticulum/Roadmap.md

135 lines
6.7 KiB
Markdown
Raw Normal View History

2022-11-17 11:25:48 +00:00
# Reticulum Development Roadmap
2022-12-29 13:04:11 +00:00
This document outlines the currently established development roadmap for Reticulum.
1. [Currently Active Work Areas](#currently-active-work-areas)
2. [Primary Efforts](#primary-efforts)
- [Comprehensibility](#comprehensibility)
- [Universality](#universality)
2022-12-29 13:06:28 +00:00
- [Functionality](#functionality)
2022-12-29 13:42:45 +00:00
- [Usability & Utility](#usability--utility)
2022-12-29 13:06:28 +00:00
- [Interfaceability](#interfaceability)
2023-01-14 09:22:21 +00:00
3. [Auxillary Efforts](#auxillary-efforts)
4. [Release History](#release-history)
2022-12-29 13:04:11 +00:00
## Currently Active Work Areas
For each release cycle of Reticulum, improvements and additions from the five [Primary Efforts](#primary-efforts) are selected as active work areas, and can be expected to be included in the upcoming releases within that cycle. While not entirely set in stone for each release cycle, they serve as a pointer of what to expect in the near future.
- The current `0.4.x` release cycle aims at completing:
- [x] Improve storage persist call on local client connect/disconnect
2022-12-29 14:17:00 +00:00
- [x] Better path invalidation on roaming interfaces
2022-12-29 13:04:11 +00:00
- [x] Improved roaming support on Android
2023-02-04 14:36:11 +00:00
- [x] Add bluetooth pairing code output to rnodeconf
- [x] Add `rnid` utility with encryption, signing and Identity funcionality
2023-02-17 20:41:41 +00:00
- [x] JSON output mode for rnstatus
2023-02-23 16:27:05 +00:00
- [ ] Add `Buffer` class to the API
2023-02-15 11:51:41 +00:00
- [ ] Add automatic retries to all use cases of the `Request` API
- [ ] Updating the documentation to reflect recent changes and improvements
2022-12-29 13:04:11 +00:00
- Targets for related applications
2023-01-01 16:04:20 +00:00
- [x] Add offline & paper message transport to LXMF
2022-12-29 13:04:11 +00:00
- [x] Implement paper messaging in Nomad Network
- [x] Implement paper messaging in Sideband
2022-12-29 13:48:38 +00:00
- [x] Add spatial and multi-interface roaming support in Sideband
2022-12-29 13:04:11 +00:00
- [x] Expand device support in Sideband to support older Android devices
2023-02-15 11:51:41 +00:00
- [x] And input fields, data submission and dynamic request links to Nomad Network
2023-02-17 20:28:13 +00:00
- [x] Add bandwidth-based weighting to LXMF propagation node sync peer prioritisation
2022-12-29 13:04:11 +00:00
## Primary Efforts
2022-11-17 11:35:21 +00:00
The development path for Reticulum is currently laid out in five distinct areas: *Comprehensibility*, *Universality*, *Functionality*, *Usability & Utility* and *Interfaceability*. Conceptualising the development of Reticulum into these areas serves to advance the implementation and work towards the Foundational Goals & Values of Reticulum.
2022-11-17 11:25:48 +00:00
2022-12-29 13:04:11 +00:00
### Comprehensibility
2022-11-17 11:25:48 +00:00
These efforts are aimed at improving the ease of which Reticulum is understood, and lowering the barrier to entry for people who wish to start building systems on Reticulum.
- Improving [the manual](https://markqvist.github.io/Reticulum/manual/) with tutorials specifically for beginners
- Updating the documentation to reflect recent changes and improvements
- Update descriptions of protocol mechanics
- Update announce description
- Add in-depth explanation of the IFAC system
- Software
- Update Sideband screenshots
- Update Sideband description
- Update NomadNet screenshots
- Update Sideband screenshots
- Installation
- Install docs for fedora, needs `python3-netifaces`
- Add a *Reticulum On Raspberry Pi* section
- Update *Reticulum On Android* section if necessary
- Update Android install documentation.
- Communications hardware section
- Add information about RNode external displays.
- Packet radio modems.
- Possibly add other relevant types here as well.
- Setup *Best Practices For...* / *Installation Examples* section.
- Home or office (example)
- Vehicles (example)
- No-grid/solar/remote sites (example)
2022-12-29 13:04:11 +00:00
### Universality
2022-11-17 11:25:48 +00:00
These efforts seek to broaden the universality of the Reticulum software and hardware ecosystem by continously diversifying platform support, and by improving the overall availability and ease of deployment of the Reticulum stack.
2022-11-24 16:29:25 +00:00
- Improved roaming support on Android
2022-11-17 11:25:48 +00:00
- OpenWRT support
- Create a standalone RNS Daemon app for Android
- A lightweight and portable C implementation for microcontrollers, µRNS
- A portable, high-performance Reticulum implementation in C/C++, see [#21](https://github.com/markqvist/Reticulum/discussions/21)
- Performance and memory optimisations of the Python implementation
- Bindings for other programming languages
2022-12-29 13:04:11 +00:00
### Functionality
2022-11-17 11:25:48 +00:00
These efforts aim to expand and improve the core functionality and reliability of Reticulum.
- Improve storage persist call on local client connect/disconnect
2023-02-09 13:07:30 +00:00
- Add automatic retries to all use cases of the `Request` API
2022-11-17 11:25:48 +00:00
- Faster path invalidation on physical topography changes
- Better path invalidation on roaming interfaces
2022-12-29 14:17:00 +00:00
- Add a `Buffer` class to the API, for handling stream-like buffers over Reticulum
2022-11-17 11:25:48 +00:00
- Network-wide path balancing
- Distributed Destination Naming System
- Globally routable multicast
2023-01-04 16:43:29 +00:00
- Destination proxying
2022-11-17 11:25:48 +00:00
- [Metric-based path selection and multiple paths](https://github.com/markqvist/Reticulum/discussions/86)
2022-12-29 13:04:11 +00:00
### Usability & Utility
2022-11-17 11:25:48 +00:00
These effors seek to make Reticulum easier to use and operate, and to expand the utility of the stack on deployed systems.
- Add bluetooth pairing code output to rnodeconf
- Easy way to share interface configurations, see [#19](https://github.com/markqvist/Reticulum/discussions/19)
- Transit traffic display in rnstatus
- JSON output mode for rnstatus
- rnid utility
- rnsign utility
- rncrypt utility
- rnsconfig utility
- Expand rnx utility to true interactive remote shell
2022-12-29 13:04:11 +00:00
### Interfaceability
2022-11-17 11:25:48 +00:00
These efforts aim to expand the types of physical and virtual interfaces that Reticulum can natively use to transport data.
- Filesystem interface
- Plain ESP32 devices (ESP-Now, WiFi, Bluetooth, etc.)
- More LoRa transceivers
- AT-compatible modems
- Direct SDR Support
- Optical mediums
- IR Transceivers
- AWDL / OWL
- HF Modems
- GNU Radio
- CAN-bus
- Raw SPI
- Raw i²c
- MQTT
- XBee
- Tor
2022-12-29 13:09:47 +00:00
2023-01-14 09:22:21 +00:00
## Auxillary Efforts
The Reticulum ecosystem is enriched by several other software and hardware projects, and the support and improvement of these, in symbiosis with the core Reticulum project helps expand the reach and utility of Reticulum itself.
This section lists, in no particular order, various important efforts that would be beneficial to the goals of Reticulum.
- The [RNode](https://unsigned.io/rnode/) project
2023-02-04 11:17:05 +00:00
- [x] Evolve RNode into a self-replicating system, so that anyone can use an existing RNode to create more RNodes, and bootstrap functional networks based on Reticulum, even in absence of the Internet.
2023-01-14 09:22:21 +00:00
- [ ] Create a WebUSB-based bootstrapping utility, and integrate this directly into the [RNode Bootstrap Console](#), both on-device, and on an Internet-reachable copy. This will make it much easier to create new RNodes for average users.
2022-12-29 13:09:47 +00:00
## Release History
2022-12-29 13:35:55 +00:00
Please see the [Changelog](./Changelog.md) for a complete release history and changelog of Reticulum.