ricochet-go/README.md

25 lines
1.2 KiB
Markdown
Raw Normal View History

2016-08-02 05:17:51 +02:00
This is an idea for the architecture of a Ricochet client. Don't get excited. It doesn't do anything.
The idea is to implement all client backend logic in Go, and export a RPC API for frontends.
Benefits:
2016-08-03 01:39:03 +02:00
* We can have all network-facing and critical logic in Go, without being forced to use Go for frontends (because it lacks decent UI capability)
* We can keep the current Qt UI implementation as one frontend
* It's easy to build new frontends in anything that can use gRPC (like **cli**)
* Backends are headless and frontends are detachable and interchangable
* Can do some fancy sandboxing
2016-08-02 05:17:51 +02:00
Other ideas:
2016-08-03 01:39:03 +02:00
* This is currently using RPC only for the backend<->frontend; would it make sense to RPC any other layers or distinct components? Could have security benefits.
* In particular, we still have one process that has access to private keys, tor config, and untrusted network traffic. That sucks.
* Can do frontend connection to backend over authorized onion for advanced setups
2016-08-02 05:17:51 +02:00
Structure:
2016-08-03 01:39:03 +02:00
* **core** is the client logic implementation
* **rpc** has gRPC/protobuf definitions & generated code
* **backend** is the backend RPC server
* **cli** is an example frontend client