RIP in peace rchat (and releasing its replacement)

2022-09-21

As the title says, I am going to stop developing rchat. I will be accepting pull requests and issues but I am not going to be contributing code to it anymore. It isn't all sad, but the reason for this is because of rautafarmi. rautafarmi recently decided to switch over from the old, crusty messages.txt method to using JSON. This meant rchat would have to be completely rewritten to use this new API, because it was not designed with it in mind.

Which is why, I am announcing its replacement named 'iron'.

iron is a fork of rchat but heavily trimmed down, with a clean codebase, much more suckless in design and of course, makes use of the new rautafarmi API. This means it isn't compatible with the older messages.txt method, but I hope instances migrate over to the new JSON API instead.

iron, unlike rchat also fixes many bugs. In rchat for example, if you disconnect from the internet while its running, rchat will print a bunch of crap on the screen. iron checks if the user is connected to the internet before it attempts to draw anything on the screen and, of course fails if the instance cannot be connected to.

Like rchat though, iron only comes with the bare minimum in terms of features. For example image sending support is not in it by default, there is a separate patch for it. iron patches can be downloaded and applied and they will extend the feature set of iron. The idea is, give the user a clean, stable base that they can build on top of.

This is where rchat failed, eventually it got too many features. iron doesn't have auto-updating, it doesn't have image integration, no link opener, no :news, no :changelog and no :help commands. iron only has the bare minimum necessary to send messages and recieve messages by default. It is up to the user to add more features through patches. He only has to apply what he actually uses.

Because of this philosophy, it is possible to keep iron stable, and alive without constantly pushing bloat to its codebase, requiring even more updates to fix the bugs created.

Another note I want to add is that iron no longer has a default instance. This keeps the users secure, because if the default instance gets compromised, the default build of iron is not going to compromise its users.

As of writing this blog post, all rchat patches have been ported over to iron, with additional patches being created. Anyone is allowed to contribute patches that others can apply, as long as they're licensed under the same license as the iron project itself (GNU GPLv3).

Finally, it should be noted that as of writing this post, the only official instance is the official instance, rautafarmi. If you are using an older instance, ask them to migrate over to the new instance, or keep using the older rchat. I will accept pull requests and issues on rchat for this reason. rchat should be stable enough for regular usage though!

If you want to try iron, you can download it here and there should be a Gentoo ebuild soon. As the page says, to install iron, clone the repository, cd into it and run make install.

That is it for this blog post, have a good day!