Communication channels come in many flavours, all designed for different things. The major distinguishing characteristics are latency, flexibility/control, and trust.
Latency of a communications channel must be the most prominent feature used in making decisions: postal mail across the world could take months, while an instant message might take milliseconds. The latency tends to control whether communications are interpreted as synchronous or asynchronous. (Remember that in synchronous communications, you wait for a reply before sending more.)
Low-latency channels tend to be more friendly to short messages rather than long. Imagine sending multipage instant messages! In this way the latency is correlated with the message size; you can think of message size as being analogous to packet size in networking.
Conversely, if you used the postal system for short messages, you would not-so-very-quickly find out that the amount of information you can communicate is very low.
Another important factor in a communication channel is how flexible it is: can you write a program to manage the channel for you (a "bot"), does the channel corrupt messages, are there limits on data transfer, can you access it from any machine, can you download messages for offline viewing, etc.
Finally, trust also affects the choice of communications channel. If you receive feedback or requests from an impostor "collaborator", you might end up mistakes, e.g. releasing a restricted corpus, giving access to internal systems to hackers, etc.
It is important to have some medium for trusted communications. Conversely, if you only converse over trusted media, then you will cut yourself off from many casual participants.
Here we'll provide descriptions of a few common communications systems.
Of course, e-mail is the long-standing king of asynchronous electronic communication. Read the introduction and sections 1-4 of the Wikipedia article on e-mail.
The data format for e-mail messages was originally specified in 1973 in RFC 561; a correct raw e-mail source file can easily be created or read in any text editor.
There are two primary open transport protocols for e-mail in use today: SMTP for message transmission and IMAP for reading of messages by a client. The most basic form of SMTP is a simple protocol that can be implemented in a few lines of bash; IMAP is somewhat more complicated, but still relatively manageable. There are many implementations of both.
E-mail is popular among large collaborations for the immense amount of
sophisticated filtering and automated processing systems available; it
is relatively easy to write a "bot" for e-mail, as well as many tools
(e.g. procmail
) for processing and managing e-mail by organisations
and by end-users.
The existence of open protocols allows for the enormous ecosystem of client programs and supported devices.
Exercise: Write a simple RFC561-compliant e-mail.
Exercise: Send yourself an e-mail with non-ASCII characters. (E.g., "привет!") Download the raw message and open with a text editor. What are the contents? How is the message encoded, and where is the encoding specified? (Sometimes you need to select "view message source" or "view original message" to do this.)
Exercise: How are attachments handled? Refer to the Wikipedia article on MIME; send yourself an e-mail with a (very small!) attachment, and download the raw e-mail message and open with a text editor. What are the contents? Show and explain each MIME part. Can you recover the attachment from the raw message?
IRC is a chat system dating back to the late 1980s; it is the default chat system in the libre software and hacker communities. The protocol is open, and the core protocol can easily be implemented in a few days hacking.
IRC lacks many features some have come to expect from chat systems: history, images, formatting, etc, are all lacking. Read Drew DeVault's commentary for a counter-point.
Due to its openness and flexibility, IRC is a very popular place for bots; most major channels have at least one bot moderating them.
Exercise: Install an IRC client, log in to freenode.net
, join
#apertium
and write a message "begiak: tell nlhowell hi". It will
instruct the bot managing #apertium
to forward me the message next
time it sees me.
Exercise: Find a piece of software that you use which has an IRC channel for support. Ask a question there about the software. Include your conversation, and a brief description of your experiences.
Matrix is a new messaging and communication system being developed to replace IRC. Many of the absent features of IRC are included in Matrix; generally, however, the protocols are very different.
Matrix is also an open protocol, and there are many different open-source clients and servers in development; there are also many projects to "bridge" with other chat systems. Matrix bridges exist for telegram, IRC, whatsapp, and others, allowing the Matrix user to connect to many different chat platforms.
Exercise: together with a friend, try out the Riot.im web client. How does it compare to IRC? To Telegram?