Hello everyone, it's been quite a while since I've been active in the Matrix community, but I'm back now, this time for good. In this newsletter, I want to talk a little bit about where I went, why I was gone, and what I'm going to be up to now that I'm back.
First of all, I just graduated from university. This was a very strenuous period of my life. I did very well and ended with one of the highest GPAs in my class, but it definitely consumed just about every free minute I had. So understandably, I haven't been able to work on Telodendria much at all up to this point. Additionally, I was having some doubts about Matrix and its vision for the future of chat, and I have some disagreements with how Matrix operates, so I thought that some time away from Telodendria would soften those feelings. I think that it indeed has done that, so although my concerns still remain in part, they're not nearly as severe, and I have a renewed excitement to get back into developing and managing Telodendria.
I do really care about Open Source software, and I care about decentralized, secure, and private chat. Maybe Matrix isn't the protocol I would've written, but it seems to have the most enthusiasm around it, and it does fit the bill for fully-featured decentralized chat, so it's good enough for me, despite the difficulties I have with it. In any case, I think Telodendria can be a valuable contribution to decentralized chat, so I want to see it through. All this is to say that I'm committed to continuing to develop Telodendria and I'm hoping to ramp up my involvement significantly.
Now that I have some more time to dedicate to this project, I want to outline a few of the changes I'm going to be making. I think these will be changes for the better, both for my sanity and for the project as a whole.
Deadline: Originally I was targetting May of this year to have a barebones Matrix implementation released. The goal was to get local user chat implemented so that even if federation wasn't working yet, at least Telodendria would work for small, private groups who just want a simple chat server that happens to be powered by Matrix. Obviously, we missed that deadline and are in fact nowhere near close to hitting it. Going forward, I'm not going to make any promises about how quickly things will happen. I probably shouldn't have done that to begin with, so I won't do it again. While I obviously don't want this project to be drawn out indefinitely, my plan is to just get as much done as I can as often as I can, and unless I'm paid to work full time on this project, I'm just a volunteer, so it would be unreasonable to place deadlines on my volunteer work.
Newsletters: I'm going to shoot for writing at least one newsletter a month going forward. Even if not much happened during the month, I want to stay engaged with the community and keep everyone aware that I do still care and do still want to keep going with this project. I want to be better about that, and I know that I've promised that before in the past and failed, but I'm hoping that now that my schedule has changed a bit, I can actually fulfill that promise.
Linux: I am now targetting Linux by default. As much as I love the BSDs, I don't use them nearly as much as I did when I started Telodendria, and they're still very niche, which means people have a hard time using the tooling that works on the BSDs. By targetting Linux, I can take advantage of debugging tools like Valgrind, Docker, and more. This should make it easier for people to work with Telodendria, and most people are going to be running Telodendria on Linux anyway, since it is the dominant open-source operating system. It makes sense that it would be the main target for Telodendria. That being said, I of course would be thrilled if Telodendria continuted to work great on the BSDs, so I'm still going to stick with POSIX features only. Telodendria will always be pure POSIX and C99 and won't rely on any Linux-isms, so what I really mean when I say that I'm targetting Linux is just that I'm going to use it for my main development environment, and take advantage of the tooling available on Linux, which may not be available elsewhere.
Cytoplasm: As you know, Cytoplasm is our home-grown support library that implements all the standard library stuff that most programming languages have built-in, but C does not. Unfortunately, Cytoplasm is not production-ready. There are a lot of improvements that we need to make to it, so my first priority as far as development is concerned is to get Cytoplasm cleaned up so that Telodendria will be much more robust. This includes changes to how we handle strings, and the HTTP server. You may not see much activity from me on Telodendria for a while, but be on the lookout for lots of improvements to Cytoplasm. I promise that I will get to Telodendria eventually, but I'm going to ease into it by fixing some of the problems with Cytoplasm. It may take a while, but I want to do things right, even if that comes at the expense of doing them quickly.
Matrix 1.16: Given the Matrix.org - Pre-disclosure: Upcoming coordinated security fix for all Matrix server implementations announcement (the contents of which I was not made aware of prior to that public post—probably because we weren't deemed an "active" server implementation), I am making the decision to bump Telodendria's spec target to 1.16, up from 1.7. Additionally, I want to focus on implementing v12 rooms when they're released before any other room version. If room version 12 and beyond are the only versions Telodendria supports, I'd be happy, so I want to start there, and then only if it is not too much effort or if someone else wants to, we can add support for the older room versions. It seems like all room versions prior to v12 are totally broken from a security perspective, so v12 should be the only room version in widespread use going forward. It thus makes sense to make that our primary focus.
I just recently paid a nontrivial amount of money to renew the telodendria.io
domain. Given the uncertainty around the future of .io
domains, and the unreasonable cost of purchasing and renewing them, it seems unwise for a crowdfunded project to spend its limited funding on a domain. It seems far more responsible to use a cheaper—though still reputable—domain. Thus, I will be migrating all of Telodendria's infrastructure to telodendria.org
in the very near future.
I originally chose the .io
domain because a lot of tech projects use that domain, but now I have come to realize that ccTLDs are a bad idea, so I want to stick with .org
, which should be fairly reliable. Many reputable and well-established projects and nonprofits use .org
domains, so it seems appropriate for Telodendria too. Yes, .org
is a "boring" TLD, but Telodendria is fundamentally a "boring" project anway (being written in C and aiming to be stable), so that also seems like a good fit.
My timeline for the domain migration is basically to do it as soon as possible. It should be no more than a few weeks from start to finish, and in fact, I could be well into the migration by the time this post is published. It is my number one priority to get everything moved over cleanly without breaking anything, and I want to do so as quickly as possible, because with this migration I will also be doing an infrastructure upgrade, bringing up all the software to the latest versions and patches and whatnot.
The telodendria.io
domain is still good for another year, and everything it points to will redirect to telodendria.org
for the duration of that time. My plan is to keep telodendria.io
(and git.telodendria.io
) as a permanent redirect to telodendria.org
(and git.telodenria.org
) until it expires. At that time, my plan is to let it expire, unless we have suffient funding by that time where it is a trivial part of the budget to renew.
In case I have not made it clear previously, it is my goal to function in the following ways for Telodendria:
Vision: Establishing the direction of the project, determining what languages, frameworks, and other technologies Telodendria utilizes. Additionally, establishing the goals of the project and our Matrix specification targets.
Management: Keeping the code base clean and up to date and triaging issues and pull requests.
Infrastructure: Maintaining Telodendria's official infrastructure, including the Git server, Synapse instance, and website.
Marketing: Being the public face of Telodendria by publishing newsletters and blog posts to the website and This Week in Matrix, among other places as they are brought to my attention.
Development: Actually writing and maintaining core code, including both Cytoplasm and Telodendria, with an emphasis on Cytoplasm for the near future.
If there is something I am missing, feel free to bring it to my attention. Additionally, I would be thrilled to get some help with development and management, so don't hesitate to reach out if you're interested in those.
As a reminder, Telodendria is entirely volunteer-run and community-funded. Up until very recently, Telodendria has burned more money in domain renewals and hosting infrastructure (not even considering volunteer time) than it makes in donations. These things are not terribly expensive, but it just shows how little we have raised. Let me be clear, this is not unsurprising or disappointing! I haven't exactly been the most reliable to this point, so it would be unreasonable for me to expect people to throw money at this project. I am going to change that now that I'm out of school, but I am not expecting anyone to just take my word for that. I am instead going to focus on proving that I am available and that this project is worth funding.
That being said, Telodendria recently received a generous donation, and if you like the idea of the project and want to support open source software, I would encourage you to donate as well. Donations are a significant boost to morale, and while they are by no means the only motivation for continuing this project—that couldn't be further from the truth—they certainly do help a lot in encouraging me to keep going.
So, I want this to be an exchange. Let me prove that this project is valuable and worth funding, and don't donate unless you see that it is, but also don't hesitate to toss a few dollars my way to encourage me and keep me going. No amount is too small; LiberaPay lets you donate as little as $0.52 per year, and I believe the minimum donation through Stripe is $1.
The donation links are still active:
Please don't hesitate to reach out if you want to donate in another way, or if you have any questions, comments, or concerns.