meshnet-lab
ocaml-matrix
Our great sponsors
meshnet-lab | ocaml-matrix | |
---|---|---|
2 | 1 | |
131 | 49 | |
- | - | |
8.3 | 4.0 | |
14 days ago | 10 months ago | |
Python | OCaml | |
MIT License | ISC License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
meshnet-lab
-
Meshtastic: An open source, off-grid, decentralized, mesh network
Most of the mobility testing has been performed either in the meshnet-lab[1] or the pineconesim[2].
As the original author of that documentation, it's quite entertaining to have it quoted back to me. :-) In any case the routing "prefers" links labelled as the internet when there is a tiebreak between two peerings between the same pair of nodes, i.e. you are connected to some other device via Wi-Fi and Bluetooth simultaneously.
And while it is true that Pinecone cannot necessarily always make the best routing decision based on public keys alone, aggressive queue management attempts to provide the best QoS for all flows and it scales very well because nodes maintain only a small amount of state about their position in the spanning tree and their position in the SNEK. Importantly, shortcuts can and often are taken when Pinecone switches to tree-based routing as the geometric distance to the destination on the tree is evaluated at each hop. Routing "by the SNEK" is used primarily to find the remote node and as a fallback in case the tree routing fails.
[1] https://github.com/mwarning/meshnet-lab
-
XMPP, a Comeback Story: A Protocol for Robust, Private and Decentralized Comms
Lots of interesting stuff there - thanks :) We're using https://github.com/mwarning/meshnet-lab rather than imunes.net for network simulation currently, but will take a look.
Power usage is looking pretty positive so far; as long as we route the Matrix traffic over the routing topology rather than going full-mesh it should minimise radio usage (the main battery suck, other than screen).
For store-and-forward, honestly using P2P Nodes as intermediaries is an okay approach other than exposing metadata to them. Our plan in the longer term is to switch to loopix-style mixnets to obfuscate the store and forwarding, a la nym.
In terms of joining the network by deriving a private key from a passphrase... yup, that could be cute, although slightly terrifying in terms of the risk of weak passphrases :)
We're hoping to get the P2P network stable in the coming year (although we were also aiming for this year originally :P)
ocaml-matrix
-
XMPP, a Comeback Story: A Protocol for Robust, Private and Decentralized Comms
There are a few other server implementations (polyjuice in Elixir https://gitlab.com/polyjuice/polyjuice_server; https://github.com/clecat/ocaml-matrix in OCaml; the abandoned mxhsd in Java) - but the most stable ones alternatives to Synapse right now are Dendrite (Go) and Conduit (Rust).
Matrix's API surface is big, and servers deliberately handle all the heavy lifting in order to make clients trivial to write, so writing servers is not trivial. But Dendrite & Conduit are both very usable and making good progress right now.
And yes, the APIs are all standardised (while also constantly evolving) as per https://spec.matrix.org :)
What are some alternatives?
cinny - Yet another matrix client
NomadNet - Communicate Freely
matrix-bifrost - General purpose bridging with a variety of backends including libpurple and xmpp.js
sucks - Simple command-line script for the Ecovacs series of robot vacuums
fuse - Multiplayer Online Standard
polyjuice_server
Element - A glossy Matrix collaboration client for the web.