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