Another week of work is completed, and I have just released RNS version 0.4.9 and LXMF version 0.3.1. Going forward, I'll try to keep these work updates on a more or less regular basis (if there is anything of relevance or interest to report, that is).
While most of the changes are minor fixes, internal improvements and a few additions to the API, it's worth mentioning the overall reason for these additions.
The overall theme of this round of work and releases have been to significantly increase the utility value of software based on the LXMF system. The Reticulum API adittions have made it possible for the LXM Router to have an awareness about the current physical link capacities to its remote propagation node peers.
This means, that by employing a very simple algorithm, the message router will now primarily tend towards syncing with remote peers on faster links first. The effect of this rather simple change is, that the convergence of the entire network state becomes much more efficient, especially in networks that mix fast and slow links. The bulk of messages will flow over the fastest links available at any given time. Slower links will thus not be burdened with transporting the bulk of messages, if a higher capacity path exists.
The router's awareness of inter-peer link capacities is continously and passively updated during normal sync operations. Since Reticulum calculates the necessary metrics passively, no extra bandwidth is expended on this. Furthermore, no global knowledge or consensus is necessary. Every propagation node only needs local, passively measured capacity awareness, for the entire network to tend towards optimised behaviour.
I really like this solution, since it is an elegant and neatly underengineered approach to a problem, that is actually rather complex. And it yields good results without incurring any costs on the network.
With the Nomad Network version 0.3.5 release, the LXMF improvements mentioned above has of course also been included. Another feature added by this release is input fields and link variables to micron pages in the Nomad Network browser. This means that it is now possible to build fully dynamic applications and systems in Nomad Network, and to run them over any kind of medium that Reticulum supports.
People have already started building systems with these features, and it is amazing to see all the new things popping up on the testnet. One of the things I have personally wanted to make with Nomad Network since I started writing it, was a way to host searchable and browsable ZIM files. This is now possible! Let's see if I am the first to get a working prototype hacked together, or if someone else beats me to it!
An absolutely amazing contribution to the Reticulum ecosystem has been made by @acehoss. With his rnsh utility, it is now possible to run fully interactive shell sessions over Reticulum. In fact,
rnsh can be used to pipe any programs to and from remote systems.
I consider this a great milestone, and I am very grateful to @acehoss for having created this incredibly useful tool. The quality, skill and sheer speed this was made with is very impressive, to put it mildly.
As an experiment, I'll add some of my weekly notes and work plans at the end of these posts. They may contain extra bits of reasoning on certain ideas and choices, or sometimes just be mostly boring task plans sprinkled with an odd insight.
I hope it will be a (sometimes) interesting insight into more of the stuff that goes on behind just the raw commits to the various codebases. Either way, it might be interesting to look back on as the work progresses.