it's been a while since the last update. I'm sending this e-mail to
both the announcements and community list to a) break the ice on the
community list and b) make it easier/ more approachable for people to
reply to the announcement on the community list.
So far the community list hasn't really gotten used, since we mostly
communicate on Matrix. In the future I suspect the community list
would be the easiest place to report issues, and contribute code
changes, since our GitLab requires account verification, which can be
In the meantime, let's get into todays announcements:
Irdest has received two new NLnet grants this year! One for myself,
and one for Aman, who has been part of the Irdest community for many
years, and I'm very excited to get to work with him finally :)
My NLnet grant
The Irdest project has been in a strange state for this past year (and
a bit). Since we forked off from qaul.net, there was a kind of
pressure to change things on a technical and social level, to work
towards a new vision for the project. And I think, mostly, we have
succeeded at that.
At the same time, the result of this "exploration" has been technical
debt at many levels, inconsistencies that have slowly accumulated, and
more and more bugs that are the result of them.
This is going to be the focus of my grant work: to bring Irdest into a
more unified state, to integrate features that were written as part of
the last NLnet grant but haven't been able to properly land in a
release. And to make the codebase easier to understand, work on, and
maintain in the future. The core of the Irdest project (Ratman) used
to be just one component of a larger tower, but now it _is_, at least
in many ways, the tower. This needs to be reflected in the way the
project and repository is structured.
Today I am tagging release/0.5.0!
It brings a lot of simplification to the codebase. All of the ratman
utility crates (-netmod, -client, -types) have been consolidated into
"libratman", which also replaces the "ratman" crate name, since there
is little point to having a crate on crates.io that purely represents
an executable target (the daemon). The daemon is now called
"ratmand". The ratman tools are now no longer special parts of the
ratman tree, and have instead been moved to the clients directory,
with the rest of the applications that interact with ratmand over its
Additionally I changed the configuration format from JSON to KDL .
I've been deliberating about this change for a long time now, and
while the code for parsing the configuration is now a lot more
complex, it also allows us to upgrade configurations in-place in the
future, can handle comments more easily, in-place edits, nested
structures without getting unwieldy to edit, etc. The syntax will
most likely be new to people, but I feel it's straight forward enough
(especially in the way that we use it) that it should be easy enough
to get used to.
There are some other smaller things that you can read about in the
release announcement! 
And finally, I want to briefly talk about Aman's NLnet project: part
of the shift in "vision" for Irdest has been to move away from the
idea of building another meshing "app", and instead focus on the idea
that technical infrastructure requires work and maintenance, and to
democratise this work and maintenance.
Making it easy to take existing router hardware, and augment it with
easy to use and configure meshing capabilities, in our opinion, is
fundamental to getting a project like Irdest not only to succeed, but
to stick around any one hype wave. I have installed and forgotten
about too many "apps" that were too single minded in their approach to
communication. So, with this in mind: Aman's grant focuses on
building ratmand and any other necessary tools for OpenWRT and
building images/ packages that people can install via the existing
OpenWRT package infrastructure. Additionally, he will be working on a
netmod driver for embedded bluetooth boards. Potentially this could
re-use some of the serial driver infrastructure we already have in
place for the LoRa modems, but we'll see.
Anyway, I am very excited about the future of this project. There are
still many many things to do, and I hope to be able to provide updates
on how things are going more frequently. In the meantime I will start
using the announcement mailing list for actual release announcements,
plus probably I will start posting RFCs (requests for comment) on the
community list regarding our upcoming specification and similar!
Thank you for reading my somewhat rambly thoughts on the future of
development. If you have any questions, feel free to reply to this
e-mail, or start a new thread (on the community list).
Read you all soon,
Good news everyone.
I just got this announcement. We have a pad for project ideas over here:
-------- Forwarded Message --------
Subject: freifunk@GSoC 2022: Your project ideas!
Date: Tue, 25 Jan 2022 14:09:17 +0100
From: Andreas Bräu <ab(a)andi95.de>
Reply-To: gsoc-org-admins(a)freifunk.net <gsoc-org-admins(a)freifunk.net>
To: Katharina Fey <kookie(a)spacekookie.de>
I hope you all had a good start into the new year!
We are planning to apply for the Google Summer of Code again this year.
And there is good news:
1. Participation is no longer conditional on being a student. You just
have to be older than 18.
2. There are small and large projects. Large means that you would work
on it full time for 10 weeks. Small means that you work on it 50% of
the time for 10 weeks.
3. The duration of the project can be stretched. This means that the 10
weeks set aside for a project can be spread over up to 20 weeks.
For us, this has some advantages. The projects can be fitted into the
participants' personal schedules. You can go on holiday in between, or
take exams. In addition, we have the opportunity to involve many more
people and to promote people who are close to the communities.
What needs to be done? In the current phase, we need to collect project
ideas, because these will feed into the evaluation of our application.
We collect the projects at https://projects.freifunk.net/#/projects and
they can be edited in Github at
https://github.com/freifunk/projects.freifunk.net-contents. It's best to
use the month of January to go through your to-do lists :)
If you have any questions, you can always write to me. Please pass the
info on to your communities as well!
ps: please spread this message in your communities!
First of all, congratulations on the release of ratman! This sounds very
exciting! In fact, I have just learned about Irdest today thanks to the
Trying to learn more, I was browsing the website today, and one of the
links lead me to a "403 Forbidden" page. I'm assuming it's a bug, and
thought I'd let you know about it.
The URL for the 403/Forbidden was:
The link that lead me there was at the bottom of
It is the link titled "Irdest APIs".
Hope it helps, and I'll be able to learn more about Irdest APIs soon.
docs/man/ratmand.1 | 149 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 149 insertions(+)
create mode 100644 docs/man/ratmand.1
diff --git a/docs/man/ratmand.1 b/docs/man/ratmand.1
new file mode 100644
@@ -0,0 +1,149 @@
+.\" SPDX-FileCopyrightText: 2022 Alyssa Ross <hi(a)alyssa.is>
+.\" SPDX-FileCopyrightText: 2022 Katharina Fey <kookie(a)spacekookie.de>
+.\" SPDX-License-Identifier: CC-BY-SA-4.0
+.Dd January 18, 2022
+.UT RATMAND 1
+.Nd decentralised, peer-to-peer packet router
+.Op Fl d
+.Op Fl p | f
+.Op Fl v Ar verbosity
+.Op Fl b Ar addr
+.Op Fl \-no-inet
+.Op Fl \-inet Ar addr
+.Op Fl \-no-discovery
+.Op Fl \-discovery-iface Ar iface
+.Op Fl \-discovery-port Ar port
+is a stand-alone, decentralised routing daemon, and the core component
+behind the Irdest project. Ratman provides an alternative address
+space via 256bit cryptographic keys, while peering with different
+Ratman instances over a variety of transport mechanisms.
+The arguments are as follows:
+.Bl -tag -width Ds
+.It Fl d , \-accept-unknown-peers
+By default Ratman rejects unknown incoming peer requests. To disable
+this functionality you need to pass this flag.
+Note that if you want to run Ratman
+having to provide a set of peers to begin with (for example to purely
+act as a peering server) then you
+.Em must also
+provide this flag.
+.It Fl p , \-peers Ar PEERS
+This multi-parameter flag allows you to specify an initial set of
+peers to connect to. The syntax used for this is called PEER_SYNTAX
+and used across various components in Irdest.
+A peer is expressed as follows:
+.Bd -literal -offset indent
+.It Va netmod
+refers to name of the netmod that the peer should be introduced to.
+Currently the only valid netmod-identifier is
+.Dv inet .
+.It Va address
+contains the main address part. Domain names (provided you have a
+working DNS setup) are also accepted.
+.It Va port
+to connect to.
+.It Fl f , \-peer-file Ar PEER_FILE
+Similar parameter to
+but pointing to a file instead. This file must then contain a peer
+formatted in PEER_SYNTAX on each line.
+.It Fl v , \-verbosity Ar verbosity
+Ratman can be configured to log more or less, depending on your needs.
+Following is a breakdown of available log levels and how they are
+.It Dv error
+Only print unexpected behaviour that has caused some operation to
+fail. This does not mean that the whole router is crashing, but may
+be an early indicator of a fault
+.It Dv warn
+Only print for unexpected behaviour that doesn't
+otherwise impact the operation of the router.
+.It Dv info
+Print at most one statement for each high-level component
+action. It is possible to gauge the general operation of the
+router from just these messages
+.It Dv debug
+Print at most two statements for each operation (for
+example "start" and "finish"). Debug messages are plenty because
+all components emit them, but limit their re-occurrence in each
+.It Dv trace
+Includes individual step to each operation with no real limit on
+.It Fl b , \-bind Ar addr
+Override the default listening port for Ratman IPC connections. This
+is useful in case you want to run multiple routers on the same
+machine, but will cause issue with applications that don't allow you
+to specify the IPC connection socket address, e.g.
+.Xr irdest-echo 1 .
+.It Fl \-no-inet
+Disable the inet overlay driver.
+.It Fl \-inet Ar addr
+Specify the bind address and port for the netmod-inet overlay driver.
+It supports both
+.Xr ipv6 7
+.Xr ip 7
+.It Fl \-no-discovery
+By default Ratman runs a local
+.Xr ipv6 7
+multicast discovery driver which will find other Ratman instances on
+your local network to peer with. This flag disables that
+.It Fl \-discovery-iface Ar iface
+for local peer discovery. If none is provided
+will attempt to guess the correct interface.
+.It Fl \-discovery-port Ar port
+for local peer discovery. Make sure this port is open in your
+firewall. The default port is 9001.
+.Em Warning :
+it's not recommended to change this unless you know this is what you
+.Sh EXIT STATUS
+# Start router daemon without connecting to any pre-defined peers,
+# but accepting any incoming peering requests.
+Currently Ratman can only peer over an existing internet connection
+but this will not always be the case.
+level software and will include bugs and cause crashes. If you
+encounter a reproducible issue, please report it!
+.It Issue tracker
+.It Mailing list