Dear followers of ERIS,
I'm happy to announce an initial version 0.1.0 of oebstly, a
command-line tool for working with ERIS encoded content and managing
blocks.
The source code is available on Codeberg:
https://codeberg.org/eris/oebstly
The preferred means of installation is from source. Binaries and Debian
Archives for x86-64 Linux are provided as convenience.
* About
The goal of oebstly is to explore and develop a cohesive user interface
for sharing content using ERIS, managing locally stored blocks as well
as interacting with remote block stores and distributed protocols
(e.g. IPFS, GNUnet).
Oebstly is compatible and complementary to the ERIS Go server [1] and
other implementations of ERIS and in-particular the ERIS CoAP transport
[2].
* Block Management and Garbage Collection
A highlight of this release is the ability to define local stores. Local
stores are collections of blocks that can be used to manage encoded
content. For example you can create local stores for papers or music you
want to share with a specific persons.
Content, or more precisely - the encoded blocks of content, can be
associated with multiple stores.
See the in-built documentation for more details (`oebstly store
--help`).
Blocks that are not associated with any store can be deleted to reclaim
disk space using a process called garbage collection. See the built-in
documentation for more details (`oebstly gc --help`).
* Internal Database
Oebstly uses an SQLite database to store blocks and configurations. The
schema for the storing blocks is published [3] independantly.
A neat trick is that garbage collection is implemented using SQL
statements.
* Remote Stores
Oebstly supports fetching and uploading blocks from remote severs via
the CoAP transport [2]. This is implemented by the ERIS Go server [1],
the Nim tools [4] and the Python implementation [5].
Oebstly can also serve as a CoAP (and HTTP) block server.
Performance of the CoAP transport is currently very bad on high-latency
links. This is due to the fact that we wait for acknowledgment for every
network request before continuing. This can and will be fixed by
pipelining network requests.
* Next steps
The next release of oebstly will focus on improving performance of the
CoAP transport as well as implementing formats suitable for sneakernet
style sharing of content.
I also intend to work on using ERIS for distributing Guix substitutes
[6]. Stay tuned!
* Acknowledgments
The development of oebstly was funded by the NGI Assure Fund, a fund
established by NLnet with financial support from the European
Commission's Next Generation Internet program.
-pukkamustard
[1] https://codeberg.org/eris/eris-go
[2] https://eris.codeberg.page/eer/coap.xml
[3] https://eris.codeberg.page/eer/sqlite.xml
[4] https://codeberg.org/eris/nim-eris
[5] https://codeberg.org/eris/python-eris
[6] https://issues.guix.gnu.org/52555