Home | Log | Guides | Software | Hardware | Discussions | Shop | Contact Me | Donate


One Year Over

Today, I've released version 0.9.5 of Reticulum. This marks the beginning of the very final stretch for the beta phase of Reticulum. About a year ago, I wrote a post talking about the status of Reticulum, the journey so far, how my work on Reticulum was funded, and my thoughts about the future of the project. If you haven't already read it, I encourage you to do so, since it provides necessary context for this post.

Back then, I also announced that the amount of resources I had allocated to developing Reticulum full-time had been exhausted, and that some sort of sustainable funding would need to be acquired if I were to continue to work full-time on Reticulum in the same manner I had done for the past four years.

That did initially increase the amount of donations a bit, but currently, the recurring donations total €96 per month, and I have received on average €320 per month in community donations for this past year, with most stemming from single donations. I appreciate all of this so much, and I am very grateful to each and everyone who has believed enough in this to contribute. Thank you so much!

Realistically though, this is not a sustainable way to live, and the primary reason I was able to squeeze in another full year of work, improvements and fast-paced updates was:

1) Almost inconceivable patience and support from my family and close friends who, for some reason, decided to bear with me for another year, and make sure I was able to carry out the work. I couldn't have done it without this.

2) One single individual who came forward and covered most of my costs for this time. If you're reading this, thank you. It made all of the below possible, and I hope you find it valuable and worthwhile, in the context of what has been achieved.

The overall result is that version 1.0.0 of Reticulum is now closer than ever, and on the horizon for release this year, most likely in July. It's about time. Reticulum has been in beta for four years, and the project has benefited tremendously from this approach. But it already is (and for a long time has been) much more stable, functional and full-featured than other projects covering just parts of what Reticulum provides, and it even does it in much more general-purpose and robust ways.

To complete the final stretch though, I will have to be realistic about a few things. But before going into details on those, let's have a look at what one year of work on Reticulum has actually yielded.

One Year Of Progress

In the previous status post, I said that I would focus more tightly on the core parts of the project, which is what I really excel at, and that is what I have tried to do. I think the results speak for themselves.

I won't go into a free-form description of every single thing that has been accomplished, since that would make this a very long post, but just a few of the highlights include:

I want to point out, that much of this stuff is not just "writing the code". An equal amount of time, if not more, goes into the design and especially testing and verification of everything implemented. A testament to that is how stable and reliable Reticulum already is.

To get an idea of the scope of work carried out in this past year, please expand this aggregated changelog of work, and just give it a quick glance:

Changelog

A Realistic Path Forward

There are technical features, that I very much personally wished to be part of the first production release of Reticulum, such as full network-wide multicast support, anonymous destination proxies and a comprehensive and developer-oriented application framework full of examples and basic projects to build your own protocols and applications on. The manual and documentation, while already quite comprehensive, could also benefit from updates and additions in many sections.

All of these are nice and valuable to have, but to be honest, a few of them were mostly included on my wish-list because they are very cool and incredibly interesting to experiment with from a networking perspective. But in terms of actual utility value, right now, they are not very important. Having a stable, functional and complete reference release of Reticulum is a lot more pressing, even though it's hard to resist the constant temptation of adding more advanced features. As such, I think this is the most sensible way forward.

Reticulum 1.0.0 will release with the general structure, feature set and API of version 0.9.6 (which will be the release migrating completely to AES-256 by default). That will be the last release before 1.0.0 to add any changes to general functionality, the wire format or the API. The core functionality, routing, API and security architecture is now in-place, fully implemented and very well tested in real-world usage. Any potential subsequent releases until 1.0.0 will solely be maintenance and bugfix releases.

Once the 1.0.0 release has happened, additional advanced features can be worked on, at a more considered pace. Realistically, these things will take significant time and resources to implement and test sufficiently, and the project should not be held up in waiting for that, since they do not offer a lot of important value right now.

In this context, I'd like to address a misconception that I've seen pop up a few times, namely that LXMF group messaging support will require native multicast to be implemented in Reticulum. This is not the case, and the current working design I have for LXMF group messaging functionality does not rely on multicast support, even though it will definitely benefit from it, once it is available.

Potential Knows No Limits, Resources Are Always Finite

Ideas are a dime a dozen, while keeping the right ones, and throwing out the rest, is an uncertain art. From there, the rest is "just" the grind to actually get things done, and persist until they work reliably. The idea behind Reticulum - a truly distributed, secure and universal communications layer - is not new. It has existed in some shape or form at least since the very early days of the current Internet, and several exploratory efforts have attempted to capture this foundational idea into workable form.

Of course, Reticulum itself is also such an attempt at realizing a deeper idea. I don't know if it will succeed, or fall short in some unexpected way. But at least it knows what foundational substance it is aiming for. For me personally, this idea started taking residence in my mind around 2011, developed into the first early prototypes and explorations in 2013 and 2014, and in 2016 finally saw the beginning of an earnest and dedicated implementation I could believe in. Then, I held my nose and jumped.

From the beginning, Reticulum has been a long-term project, and still very much is. In many ways, what happens in the next year or two is not as important as what happens in the next ten or twenty, and that is the timescales I usually try to think in when making decisions about it.

For good reasons, it's pretty hard to understand, from first glance, just how much work, and how much of my life I personally put into making Reticulum a reality, and for it to not just remain an idea in a drawer. For context, here's a breakdown of additions made to the Reticulum repository, by contributor:

This is only the core Reticulum reference implementation repository, and does not include any of the auxiliary projects, protocols or clients that I have been the primary implementer of. Of all additions to the code, I committed 97.9%. The second and third most active contributors come in at 0.87% and 0.75%, respectively. The remaining 0.48% are accounted for by 31 other contributors.

I'm definitely not displaying this to make anyone's contributions seem small, because they are not. Everything has been important, and very much so. I'm trying to illustrate that this was a project that required almost fourteen years of deliberation and constant engagement in some form to realize, and that I personally took on the brunt of that work, risking more or less everything and going it alone, with the very real possibility that it might just be a complete flop. It still might of course, although I don't really think so anymore.

Fourteen years of engagement with any kind of project will take its toll on anyone. Especially so, when a substantial part of that required sacrificing a lot of important things to make it happen, living under uncertain conditions, and sometimes putting myself under much higher loads than was kind. To put it simply, I'm exhausted, and I need to recover. That will mean cutting away the things that are most taxing for me, and keeping only the things that are most important.

Before going into what that means, I'll just need to get the following out of the way. If it doesn't apply to you, please disregard, but some of you guys are really not very good at respecting the rather clear request to not email, message or call me privately with technical questions, support or help requests about Reticulum. As I've said before, you will not receive an answer, as there is literally no point in doing so.

Any questions can be much better answered on the various publicly accessible channels, where other people will also have the opportunity to benefit from the answers in the future (and people won't have to answer the same questions again and again). I'm not saying this to be mean or annoying, but simply because anything else is counter-productive to everyone.

There's some great and very knowledgeable people in the Reticulum community, who are incredibly helpful and well-informed about how everything works, and the service they have performed here is invaluable. To those people: You know who you are, and holy crap, you've saved my sanity more times than I can count. So, if you're new here: Use these amazing people, and help each other. And please: Treat everyone kindly and with respect, because everyone helping you is doing this out of their own time and good hearts.

A Line In The Sand

Reading this, some might be inclined to think I won't be working much on Reticulum for the foreseeable future. That would be an incorrect assumption. I don't think I can stop working on it. But I will do this in my own time, at my own pace, according to the right way. As I write this, I can hear the thunder rolling in the distance, out in the mountains. I miss that. I miss being there with my family, and it's been way to long now.

There are people in my live that have given me so much, and waited so patiently for me. I don't want to keep them waiting any longer. One thing I've learned from this whole mad and exciting adventure, and already wrote a bit about in the previous post, is that there's things I excel at, and things I don't.

Participating actively in a large online community, and interacting with a lot of different people over the Internet all the time is one of the things that drain me. I've tried, and accepted defeat. I'm simply not wired for it, and there is no changing that. For clarity, I should probably point out that I don't mean that in some abstract manner but very matter-of-factly. I'm autistic, and that does come with some quite unconventional wiring choices provided by mother nature.

So, that kind of interaction is the first thing that will have to go, unfortunately. It's often been fun, but it's too much. For now, expect that I will not interact very much, if at all with the wider community. I still like you, I just need some peace in my head. With time, I think this will allow me to recover to a point where I can keep track of things from the sideline, and collect all kinds of questions and information requirements from the community into more generalized, long-form responses, documentation updates and code examples that will be beneficial to everyone. But don't expect that to happen in the near future at all, it won't. I'm out. I'm off on the zip-lines, baby.

Likewise, anything that is not related to the final stretch of getting Reticulum 1.0.0 complete and released will simply be put on hold for now, until I am fully ready to dedicate myself to it, and have some kind of financial means to dedicate to the work.

I've deliberated quite a bit about whether I should say this, since I'd hate being seen as seeking pity. But ultimately, it feels right to just be open about it, since it's also a large part of what I've dealt with for the last years. I live with a physical condition that causes me progressively worsening pain in more or less half of my body. Quite ironically, but unsurprisingly, sitting in front of a computer and working for 12 hours straight makes it a lot worse. I've stretched this way further than I should have, but all in all, it was probably worth it. We ain't come this far just to give up on the finish line. But I won't stretch it any further than this. It's time to heal a bit now.

When 1.0.0 is out, I am going to take a long break from everything. I'll go bury myself in sand and hug trees for a year straight or something. Eat cake in a bathtub. Slice all my bread with a katana. Dress up as Salvador Dalí and sing Inuit folk songs. That sorta thing. That should also provide some time to potentially collect donations for meaningful periods of focused work. Let's see what happens.

Hopefully, I'll find myself back in a place, sooner rather than later, where my reality looks more like it did a few years ago. Not being completely exhausted and in constant pain, but more like this:

Image

That's the kind of place I need to find again, and if I do, I'll come back better than before. As Jung said:

"What you deny submits you, what you accept transforms you."


Just remember: "So long" isn't a goodbye. But just how long before we'll meet again, I don't know. Till' then:

Take good care of everything, and especially each other.

♥️


PS: You've got this. Almost everything is ready now. It may not be perfect, it never will be, but it's more than good enough to build on. Don't wait for permission. Go build something - now - that helps people, something that grants a bit more freedom to someone, something that lets people communicate and associate freely without being manipulated, monitored or turned into assets by corrupt corporations and governments:

Something that creates a new place to stand, and to plant ideas and real human exchanges.

Reticulum is Unstoppable Networks For The People. That means the people need to build those networks and the applications running on them. That's not my job, it's yours. Don't wait for a corporation or someone else to do it for you! Don't wait for someone to write a story about it! Don't just stare into space and imagine it! Do it. Forget about the odds, and especially the profits. There are none, and in the end, even the thought of them is pointless.

If you want freedom in the world, build it. If you want rights for people, grant them. Don't expect anyone else to do it. Do it yourself, or as a group. Doesn't matter. Just do it.

It was never the point for me to provide a complete solution to everything, and nobody should wait for that. My goal was to provide a set of tools that could build any kind of communications system, while protecting the sovereignty, dignity and humanity of its users. I also tried very hard to design that tool, such that those building would be required to think outside of the tiny box, which has created many of the limitations we currently face.

Forget what you know about "servers" and "clients", about "OSI models" and RFCs. You're not in Kansas anymore. Start from scratch, and take this in your hands as something that doesn't demand a particular way of working. If you try to squeeze it into what you already know about networked systems, nothing will make sense, and you might as well use it as a paperweight. Try to see it with clear eyes, and you'll get it. Once you do, you'll have something that is very easy to build some amazing things with.




This website is running on a 100% solar powered server

☀️

Unless otherwise noted, everything here is put into the world under a CC BY-NC-SA 4.0 license.
Feel free to share and remix, just remember the attribution.