github markqvist/LXMF 0.9.0
LXMF β 0.9.0

latest release: 0.9.1
one day ago

This release comes with significant upgrades to propagation node functionality and efficiency. The sync and peering system for propagation nodes has been ugpraded, making it much faster and more efficient. Most importantly, propagation stamps have now been implemented, similar to the direct peer-to-peer message stamp functionality already present.

From now on, clients will compute a propagation stamp for each message sent to the propagation network, which nodes can check for validity. Stamp generation is computationally costly, but very easy to validate for nodes processing messages, making it much more expensive to spam and abuse the network. Stamp and peering costs can be configured individually by node operators, which allows each network to find its own consensus and react in real-time to load, capacity and use.

If you want to get started with this new functionality already, the best place to start is to read the updated lxmd configuration file. I will have a full explanation of all the new options out shortly, but the config file comments should give you the most necessary information. All options are set to sane defaults, so no re-configuration should be necessary at this point, unless you have specific needs or use-cases.


Warning! While this release is fully compatible with previous LXMF versions for all direct and peer-to-peer delivery, propagation-node functionality is not backwards compatible for this release, since the signalling, sync and peering system has been significantly redesigned and improved.

Clients using LXMF versions prior to 0.9.0 will not be able to send messages via 0.9.0+ propagation nodes, although they will be able to download messages from them for now. Propagation nodes still on version prior to 0.9.0 will not be able to sync with nodes from 0.9.0 forward, and newer nodes will also not offer any messages to older versions.

Nodes running older versions will automatically see new versions as presenting a de-peering request, and stop sending them messages. If you update to LXMF 0.9.0, make sure to update all your devices to retain full propagation node functionality! Updated versions of Sideband and Nomad Network supporting the new functionality will be released shortly.


Upgrade Notes
If you are not running an LXMF propagation node, everything will work as previously, although you will no longer be able to use pre 0.9.0 propagation nodes for message delivery.

If you are running a propagation node, here's some relevant pointers:

  • If you are running a propagation node, any unstamped messages in your messagestore will be dropped when starting lxmd / nomadnet on LXMF 0.9.0 for the first time.
  • Before upgrading, I highly recommend that you make a backup of your entire lxmd / nomadnet configuration directory first, in case anything goes wrong, or you want to go back to a previous version.
  • To make a clean transition to 0.9.0, delete the following files and folder in your LXMF storage directory before the first launch:
    • lxmf/locally_processed
    • lxmf/node_stats
    • lxmf/peers
    • lxmf/messagestore

Changes

  • Added ability to include node names in propagation node announces
  • Added ability to query and control remote lxmd instances
  • Added new lxmd command line options for triggering peer sync and removing peers
  • Improved lxmd status and peer status output
  • Implemented propagation stamp system
  • Implemented automatic client-side propagation stamp generation and cost resolution for outbound propagation messages
  • Implemented propagation node peering key computation and validation
  • Implemented remote propagation node sync request validation using peering keys and throttling
  • Improved peer configuration resolution time significantly by using cached announce app data and network queries, instead of waiting for announces to arrive
  • Implemented automatic legacy node de-peering once node is upgraded to 0.9.0+
  • Implemented automatic peer breaking if peered nodes moves outside of auto-peering range
  • Implemented client-side duplicate detection and signalling on propagation node message download
  • Improved auto-peering on inbound sync
  • Added support for getting transient message stamp values to the API
  • Significantly improved propagation node announce data structure, paving the way for future functionality and improvements
  • Added separate propagation message size and propagation node sync size limits
  • Significantly improved propagation node convergence
  • Fixed a bug where propagation node messagestore messages would always get deleted if the path to the messagestore directory contained an underscore.

Don't miss a new LXMF release

NewReleases is sending notifications on new releases.