Florete

Roadmap

Milestones of the Florete project

There are two main use cases of the Florete project: community-focused and business-focused. Both are important, yet provide different benefits.

Community use cases help:

  • create open-source community around the project, attract talented engineers
  • establish dogfooding practice: the project will be more successful and meaningful if it solves concrete pains of its contributors

Business use cases help:

  • gain resources to fund development: paid full-time work for the core team
  • work on challenging tasks for autonomous agents will result in better technology overall

Long-term products

Long-term community products:

  • Distributed cluster environment capable of executing distributed apps
  • Decentralized Interrete (inter-cluster network)
  • Prominent apps:
    • messenger: decentralized, yet feature-wise and UX on par with current cloud-based ones like Telegram
    • teamwork suite: a distributed app running in a team's cluster
    • reliable smart home control app

Long-term business products:

  • Distributed cluster environment for robots, drones, vehicles with enterprise features
  • Florete network suitable for highly-mobile nodes
  • Distributed apps for various industries (e.g. agriculture, logistics)
  • Distributed cluster for space data-centers and network providers

Creating long-term products is a huge work. We will do it eventually, starting with small steps.

Short-term community milestones

C1. Manually configurable Florete network for home / small team

Home use case includes 3 nodes: home PC, cloud VM and a laptop. Florete provides ability to access home services from laptop at any location: home Wifi or external network (e.g. cellular or third party Wifi).

Example of a service: a vacuum-cleaning robot is connected to home Wifi and exposes an HTTP server. It should be possible to control the robot from the browser at laptop, regardless of how it is connected.

Team use case includes 3 nodes: member laptops and a cloud VM. Florete provides ability to access a team's testbed VM via ssh, when it is published as a Florete service.

This milestone confirms viability of the layered design (though we have already done that in previous research) and, importantly, builds foundation for the next step.

C2. Minimal distributed control plane running over Florete network

The goal is to test our hypothesis that such app is possible and will work nicely. What to check:

  • consensus with leader election
  • distributed storage
  • resilience for nodes joining and leaving the system
  • topology and routing control by this app

More efforts are needed here to define what it will be. Maybe it should be split into a few smaller milestones.

Short-term business milestones

The nearest business goal is to demonstrate the technology to potential integrators. This implies fairly developed technology plus visualization. So we start with community milestones first, but we'd rather know initial business use cases early on to take them in account when designing the prototype.

B1. Florete network for an industrial site

Participants:

  • 4-5 robot nodes (RaPi-based) with ad hoc Wifi links
  • 2 WiFi APs imitating 5G/satellite links with 2 of the robots
  • one VM/PC imitating the cloud

Demo scenarios show how connections are maintained when topology changes due to movements and failures (e.g. when one of the "satellite" links fail, the connection is instantly rerouted over the remaining one).

B2. Distributed application to coordinate robots

Logistics scenario. Robots are autonomous carriers in a warehouse. They need to get to loading points, where they get cargo and then deliver it to unloading points. They need to cooperate to queue optimally even when the cloud is unreachable.

Agriculture scenario. Robots are autonomous tractors deployed to a field. They need to divide the field into sections and cultivate; but the movement may be uneven, so they need to cooperate in the process to be efficient — and they should be able to do it even when the cloud is unavailable.

On this page