November 23, 2005

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...

16 comments:

  1. Anonymous1:53 PM

    I find this an interesting analysis--especially of Amnuts bugs.

    Some things I think you trvialize too much (.kill bug; it can happen any time one user's actions can cause the next to be disconnected, e.g. .clear, .force quit, etc.) This is design flaw in the use of a linked list and how users are disconnected.

    Other things like proper telnet and line parsing (e.g., the multiline paste) are highly related.

    I have often thought of making a stripped down version of Amnuts--strip it down to its guts, fix the big problems and then build it back up.

    ReplyDelete
  2. > I find this an interesting analysis--especially of Amnuts bugs.

    Yes, I thought you would :-)

    > I have often thought of making a stripped
    > down version of Amnuts--strip it down to
    > its guts, fix the big problems and then
    > build it back up.

    That would be awsome, but both of us know that it will not happen - no one is interested in Amnuts enough to do it. The proof is that you are an Amnuts developer for 2.3.0, and:

    1) 2.3.0 won't follow that direction;
    2) 2.3.0 is still not out there, after the first being released on the 1st January of 2002...

    I tried to use my limited time to do a compromise between the two things: trying to make a stable and secure talker base, but doing it _now_. So, I've created Mamnuts: an Amnuts 2.3.0-cvs fork that is ready for production (as in being more stable and secure than any release of NUTS or AmNUTS to date, including 2.3.0 versions) and that will try to have it's bugs and security flaws down to zero. You already have Mamnuts versions out there, and talkers using it, but the final aim is Mamnuts 2.0.0, where I hope to find some other maintainer to keep it going while I work on another talker base, written from scratch and without the "there's no good solution out there" kind of pressure.

    If you feel like contributing to Mamnuts, we surely could use one more pair of hands!

    ReplyDelete
  3. Anonymous2:40 PM

    One of the main problems I have with being an Amnuts developer is that Andy is mostly unavailable these days and has not given me access to the Amnuts main web site (in talker.com space; so I cannot officially release anything via that. I believe only Andy and Ardant have such; Isvara is also on the "team" but mostly a silent member--as if the rest are active!?--boggles).

    I can release stuff via the Amnuts CVS though (in dune.net space) and have actually made an unoffical 2.3.0.rc2 (which I think has been on the web unlinked for some time now).

    I shall try to kick Andy to release 2.3.0. It would be good to have all those fixes and a fully GPL NUTS code base out there. I have done some minor work on post 2.3.0 tree too. I am considering a major fork (still affiliated with Amnuts though; maybe a "lite" version) which removes many heavy ill-designed and little used features (e.g., netlinks, clones, current sreboot, etc.).

    I should look at your Mamnuts CVS and consider merging changed into such (since Mamnuts is based on Amnuts-2.3.0 hopefully that wouldnt be too hard).

    When I ping Andy I think I shall suggest he change the current four Amnuts dev teams members too (allowing for new blood). You would definitely be amonst my choices.

    ReplyDelete
  4. The Amnuts-lite fork seems a preety good concept for me, and what I'm trying to do with Mamnuts is something like that...

    About the amnuts dev team AFAIK you're the only one active on Amnuts, and Isvara is working on a new concept (and thus a new talker base).

    Kicking Andy to release 2.3.0 would be great, but I don't think you should do it with the current Amnuts CVS code - there's some preety ill concieved stuff there.

    Where's that "post 2.3.0 tree"?

    ReplyDelete
  5. Anonymous2:09 PM

    The "post 2.3.0" tree is the CVS main branch/tip. I made a branch label for the 2.3.0 releases (and there is at least the rc1 label on that--maybe an rc2 too I am not sure; you can always get the tip of this branch to get 2.3.0 bug fixes).

    I could be wrong but I think the main page tells how to checkout and mentions at least one label (you can use the cvsview to loko around and see other labels, etc.).

    ReplyDelete
  6. Oh, that one. Yes, Mamnuts is a fork from that tree and I sometimes checkout it so I'm sure you didn't do anything else...

    ReplyDelete
  7. Anonymous4:50 PM

    How do I checkout the code? I noticed the CVS was not public (unlike wwwspod). I think I can obtain a few tarballs from files though.

    ReplyDelete
  8. Unfortunately the CVS isn't setted up yet for Mamnuts. I'll try to do it soon. Till then, you can check out Mamnuts 1.8.3 here.

    ReplyDelete
  9. Anonymous2:18 PM

    Actually, I pulled down all the versions of Mamnuts now and was thinking to import them into a CVS tree. I could perhaps do that for you at BerliOS and save us both some time. I was already making diffs to see what changed.

    ReplyDelete
  10. Anonymous6:42 AM

    I was wondering, since you know so much about Amnuts.. I've been having problems loading mutliple bots I'm using napstar bots.. and I have amnuts 2.2 any suggestions on how i can tackle this problem? does this all lie on the source.c? and can I do it without crashing my talker? -AGENTx

    ReplyDelete
  11. My recommendation:
    1) Upgrade to Mamnuts;
    2) Don't use Napstar bots, nor any kind of bots that run stand-alone...

    I have some code for bots made in C, Perl and Python... I might spend some time with it and open source them...

    ReplyDelete
  12. Anonymous11:06 PM

    how soon will the source for amnuts be availabvle for everyone to test? right now i'm still using Amnuts, but it's the upgraded version to Amnuts 2.3.. which is way better, & we're able to load bot, but it's a single bot which is still napstar bots.. if Napstar would upgrade their code.. to where you can load multiple bots.. that would a good! --AGENTx

    ReplyDelete
  13. Anonymous11:08 PM

    btw, i couldn't help but see your lated in Portugal? wow so how different is Portuguess to Spanish? I'm from the Philippines btw
    -AGENTx

    ReplyDelete
  14. Hi AGENTx, Amnuts is dead, its successor, Mamnuts (using Amnuts 2.3.0 as its core) can be downloaded at http://mamnuts.blogspot.com.

    I'm from Portugal. Portuguese is quite different from Spanish, we Portuguese people usually understand Spanish, but the opposite isn't true...

    Be well, and if you decide to try Mamnuts then tell me your thoughts about it...

    ReplyDelete
  15. Anonymous9:59 PM

    okey.. downloading it now.. have to someohow get it to compile first.. make the changes outside of the shell and somehow zip it and open the edited code in shell.. btw.. yes.. Portugal is close to spain.. totally different language and culture i believe..but yeah it's odd how u can understand spanish? but they can't understand you.. anyways i know there's only 2 countries that speak portuguese.. right? portugal and brazil? i'll let ya know soon how the code went!! Gracias Amigo

    ReplyDelete
  16. So, any news about your tests with Mamnuts?

    Regarding the Portuguese language, Portuguse is spoken in lots of countries, but only nine (not two!) have Portuguese as an official language: see more about it here.

    ReplyDelete