So, let's talk about talking.

I am currently interested in writing the code necessary to rework our beloved /msg and chatterbox system. Now, I'm the kind of coder who likes to take time designing and polishing his ideas before jumping in and start coding. Of course, I'll work out most of the details once I'm actually writing the code, but I find it very useful to first work offline, so to speak, and then start communicating with a computer. I would also like further input from you, dear noders, since this is a tool I plan to develop for you.

Let's first see where we stand. The /msg system and chatterbox were designed as a simulacrum of IRC, specifically, as a direct replacement for #everything so that people could communicate about the site inside the site instead of in a different IRC server (and then #everything forked off into its own subculture, but that's another story). I wasn't around for this, but there is ample evidence that this is indeed how things happened: the chatterbox commands all being prefixed by slashes and often being identical to IRC commands, the idea of "rooms" analogous to IRC channels, and the idea of a Borg who silences undesirables much as an IRC op can kick or ban annoying IRC users.

I think it's clear today that this system is dated, for a number of reasons. First, we're no longer primarily composed of a geeky crowd from Slashdot of mostly coders and close friends of nate. I wager that less than 50% of us are familiar with IRC, and much less be regular IRC users (I personally am a regular IRC user, but I don't think I'm typical in this regard). Second, the mis/msgs, the forgetting what you said when they say it back to you, the overall low usergroup activity for our myriad of usergroups, the difficulty of following complex discussions within the confines of Message Inbox, all of these say to me that the interface is broken, and that we need something new.

Everything2's discussion system is an integral part of the site. We're part writing site, part social networking site (admit it: what are all those nodermeets about, then?), part discussion site, and part who knows what else. Our methods of communication are as important as the things we say; the medium is the message. I hope I can convince you that it's important to think carefully about how we would like to be chatting.

In my opinion, we have three primary methods of communication that have been conflated into a single /msg system, and they really should be separate, because they have separate objectives: private /msgs, the chatterbox, and usergroups. I want to think of each of these in turn.

private /msgs

One-on-one private conversation is where much of the more interesting discussion seems to take place, or at least it does for me. It currently has the following problems:

  • It's conflated with the chatterbox (results in mis/msgs).
  • It's an imperfect imitation of IRC (so you forget what you say unless you conscientiously CC every /msg you send to yourself).
  • It's too inconvenient for having long and heated discussions (and yes, it's important to be able to have those once in a while) or any significant discussion for an extended period of time.

I propose the following fixes:

  • Separate private /msgs completely from the chatterbox in the following ways:
    • Separate text boxes for the chatterbox and the private /msgs. In fact, separate nodelets altogether would be nice. As an alternative to /chatteroff, you could simply remove the chatterbox nodelet if you don't want to be participating in the current ongoing discussion about lesbian soymonkeys or whatever. This way, you could still be able to talk privately with people in a comfortable manner and without danger of publicly revealing your darkest secrets.
    • Several options for addressing the person you want to address, with the /msg command remaining as a deprecated/advanced feature to be used from the main chatterbox nodelet. In lieu of that, a Javascript-hideable textbox right next to the /msg to which you want to reply (always visible in plain HTML view), and a global /msg textbox at the bottom of the /msg nodelet where you type in one box the name of the person you want to address and in another box the message itself, with recently /msged persons available in a droplist. Sizes of this /msg speedial list and the textboxes themselves can be set in nodelet preferences, with the default box size being comfortably large, about half the current size in Message Inbox.
    • Incorporate the Message Nodelet changes into Message Inbox, with the nodelet by default only displaying 10 messages, and the Message Inbox offering pretty much the same interface, but as a full page and with much higher limits on the number of /msgs to be displayed (say, 50 or 100), with an identical Javascript/plain HTML interface of textboxes next to the name of the person you will be addressing.
  • Improve the IRC imitation of private /msgs. This may come as a surprise, since I earlier said that part of the reason that I think the /msg system is broken is due it being an IRC simulacrum, but this is one place where I think that perfecting this simulacrum could help, with the following changes:
    • By default, put your own replies next to the messages of the person who's talking with you (if this takes up too much space, have an option to not do so). This would be sort of an equivalent to the /query command that in most (all?) IRC clients opens up a different chat window specifically for having a private conversation with another user.
    • Clearly separate (say, with <hr>'s) different conversations with different noders, and have a separate hideable textbox at the foot of each conversation. This would simply be an extension of perfecting the imitation of an IRC /query command. By default, each separate conversation in the nodelet only holds two messages, for a total of five conversations each. I generally think that just seeing what was the last thing that I said or they said is sufficient to be able to easily follow the conversation.

The last point, the inconvenience of holding long discussions, should be sufficiently addressed by the above points. Further ideas are that it should be possible to clear at once specific conversations with a single noder without affecting the other conversations and as many configuration options as I can think of with reasonable defaults in order to make it generally pleasant to use.

The chatterbox

I generally see nothing too wrong with the chatterbox (private /msgs were the ones that were bugging me the most), but I do see room for improvement here too. Let's not underplay the importance of the chatterbox. While it's true that most of the time it holds nothing but the most frivolous discussions, it's not uncommon to have a newbie asking for help in the catbox (and let me tell you, I'm impressed how seemingly everyone sobers up and rushes to help the newbie when this happens), and the occasional serious discussion does happen here too.

Once the chatterbox becomes clearly separated from private /msgs, the only other thing that seems relevant to me is the use of catbox rooms and the control that admins should have over the catbox. There have been concerns, for example, of conversations either getting too sexual or too political; an admin should have an easy method to seamlessly kick all noders engaging in such a conversation to either Naked Catbox or the Political Asylum when such a thing happens. In fact, I believe the options are already there except for the mass kick thing. Ideally, the participants in such a controversial discussion shouldn't even notice immediately that they have been kicked, so that the flow of their discussion isn't altered. Maybe we can even use a different term like "escorted", either "you have been escorted to Naked Catbox" or "Lord Brawl escorted you to Political Asylum" or something like that, that gives the impression that while it's ok to chat about whatever you're chatting, just please take it elsewhere.

Borging should remain as a desperate last measure, as it is now. As a really extreme measure, an admin should be able to silence everyone in the catbox (like setting +m mode in an IRC channel), and only grant voice to a few select noders. I really can't think of any situation in recent memory when such a feature would have been useful, so perhaps this feature shouldn't be a coding priority for me.

It may be useful for a noder to be in more than room at a time, again, perfecting the imitation of IRC, but I don't immediately see that this could be terribly useful. In general, I'm fairly content with the current state of the catbox.


I'm in, like, a zillion usergroups. Most of them are dead most of the time. I think this is typical, and I think this can be improved.

Usergroups should be completely separate in their own way too from the rest of the message system. There ought to be usergroup nodelet. It should be off by default, in which case the Message Nodelet will have an unobtrusive little text saying something like "Things are afoot at such-and-such usergroup(s)" or some similarly cute message. If the usergroup nodelet is on, then it will be something like the Message Nodelet, except that it will list your usergroups, the activity in each, and convenient links to the usergroup discussion page and usergroup homenode (where the usergroup's weblog can be found).

/msgs from usergroups will be deprecated. Instead, the preferred method of discussion inside a usergroup discussion page, much like the existing editorial/admin discussion page (in fact, I plan to simply yoink the code from this discussion page and modify it slightly so that it works for any usergroup, not just the Valhalla dwellers). Existing usergroup /msgs will be imported into the new Message Inbox I plan to make (which will also display in the new Message Nodelet), but attempting to send any further /msgs to usergroups will be impossible, and you'll be told instead to create a new topic in the discussion page. The other users in the group will be alerted that there's a new topic either in their Usergroup Nodelet if it's on or in a small alert in the Message Nodelet. The advantage should be obvious: first, usergroup discussions are archived by default, they're clearly threaded so that several discussions can happen at once, and even if a discussion page dies out, at least it's still there and can easily be resurrected many months or even years later if need be. Each usergroup leader will have very moderate moderation powers over each discussion page and can optionally make a usergroup open so that users can join or leave at will or invite-only. This latter functionality is starting to get a little separate from the discussion abilities of a usergroup, so perhaps I'll set that to low priority (for me).

Getting the work done

Talk is cheap. Show me the code.

      Linus Torvalds

Okay, pending your replies to my ideas, I will slowly start coding the above improvements (hopefully you agree that they are improvements) in the development site. Quite a few of the ideas I mentioned above have already been expressed in the community newsletter and other whitepapers of what I personally think should be called e3. Now that I have direct access to directly tampering with actual e2 code without fear of bringing e2 down, I feel much more free to contribute directly to the e2 codebase, not to mention that now it's much easier to do so too. Let's get to work.

I'm not sure how soon I'll manage to get the coding done. After all, I'm supposed to be writing a thesis, not code for e2, fulltime life, yadda yadda, but I should start working on it soon. I already have rough ideas of what most of the code changes I discussed above should look like, except for the Javascript things, since I've never coded Javascript in my life. I plan to yoink more code there from other people.

Above all, this is supposed to be for YOU, dear noders. Stop me right now if you think I'm going to be doing horrible things to your beloved /msg system. And don't give me the "ain't broke, don't fix it", because I think it is broken, and I think only lazy people who don't want to fix it say that kind of thing. If you agree with me that it needs to be fixed, perhaps you can tell me right now if my ideas for doing so are sound or just another Swappian pipe dream.

Log in or register to write something here or to contact authors.