Building a Talker

For those wanting to build a talker, there's a difficult choice to do: what development choices should I take? Should I build it from scratch or should I use a talker base?

I'm writting this 'cause Ironwood (God of the only Brazillian talker) made me think about this, when he said he was going to change his talkers code once again.

The main issue is, basicly, what's better yet easier to do. Building it from scratch takes a lot of time, which most people don't have. Noone will develop for years to launch his talker, so people doing this usually launches their talker with few features, which doesn't really attract users, and make people have a bad oppinion on that talker or even on talkers in general.

The existence of talker bases itself is a proof that they are useful: if someone wants to run a talker should choose which base to use instead of building one, like everyone who decides to have a mail server chooses one and uses it rather than writting one from scratch, based on the RFC's. Worse, there isn't a talker RFC yet!

So, which talker base should you use? ou have vaporware, abandonedware and only a few maintained talker bases. Ewtoo used to be the most popular base, but the most widely used was Playground 96, based on Ewtoo. There's Playground Plus, a branch from Playground 96 mainly with bugfixes, but the matter of fact is that, on Ewtoo and Ewtoo branches, the latest release is from 10/30/2002, EWToo.

Then you have NUTS and similars. I could talk about NUTS, Joot/Oot, Ncohafmuta, Amnuts, Moenuts, IFORMS, Avios OS, KTserv, KT code, TalkerOS, Slimepit, SouthWest, SCRUS, PHiNET, PyTalker... But to simplify, let's just say that, besides vaporware and abandonedware you have badforks, NUTS and PyTalker.

"Badforks" are forks of NUTS 3.3.3 or earlier that doesn't fix, yet, all it's bugs, even the well-known security-related ones. NUTS 3.3.3 development stopped in 1996, and Neil is now working on NUTS IV, which doesn't fit anymore on the definition of talker. Noone maintains NUTS, so choosing a "badfork" gives you the probability of having it's bugs fixed soon. What about PyTalker? Yes, being one of it's developers, I had to talk about it too. PyTalker is an effort to
turn this kind of writtings useless, building finaly a good talker. It is going in the good way, but you must have to ask yourself why the latest version isn't v1.0 but v0.1.4. Yes, it works but it doesn't have the features it has to compete with the other talkers. Unless you want to do some heavy coding, avoid it.

So, if we have to choose a badfork, what are our chances? Moenuts, stalled. RamTITS, stalled. Ncohafmuta, stalled. The choices? Only AmNUTS.

Let's examine AmNUTS: The latest stable version (2.2.1) is not stable, bugless nor secure. Then, we have 2.3.0 RC1, which is less stable than the CVS version. And then, we have AmNUTS CVS. Taking a look on Bugzilla, there are 12 bugs to be solved. From those, only 8 are bugs, the others are enhancements. So, if you want to build a talker, the best choice is to grab the CVS version of AmNUTS and fix eight bugs. Let's analyse them:

#3: The easy fix is to take out the .sreboot command;
#11: The easy fix is to take out the .kill command;
#23: The easy fix is to take out .xcom and .gcom commands;
#25: My understanding on this bug is that the bug is solved, but I'm waiting from Uzume's feedback on that;
#36: Revert "multi-line paste" changes. It will reduce usability but fix a security issue:
#38: The bug is probably fixed;
#42: It sucks, but it's not really a bug, only "lack of usability". You don't have to fix it;
#44: Changing "int" to "socklen_t" will probably fix the issue, but you'll have to live with the fact that it won't work in old systems.

Conclusion: someone should fork Amnuts to do this changes I've mentioned and build an out-of-the-box good solution to build a talker. Until then, do it by yourself.

PS -> This post lacks links, and I know I should add them. I'll do it later, if I get the time to do it...