Education/Collaboration/IRC
Contents
IRC
Introduction
IRC stands for Internet Relay Chat and is one of the primary means of synchronous communication between people working on the Mozilla project. It is a text-based chat system where clients connect to one or more servers (http://irc.mozilla.org in Mozilla's case, also known as moznet), and the servers relay messages between themselves (hence the name). Communication is done in channels which individual users join, and users are identified by nicks (nicknames). In addition to human users, various services and bots (robots -- programs such as "firebot") are present in many channels.
The fact that Mozilla's community is so globally distributed, IRC plays a central role in organizing development. You need no formal invitation to join, and all are welcome. It is useful to have a basic understanding of how IRC works as you get started working on Mozilla projects.
The best starting place is the #education channel. This channel is filled with students and professors from many schools, and also some knowledgeable (and sympathetic) Mozilla community members. Not every channel is going to be friendly to beginners, but the #education channel will be. You can ask anything about Mozilla, IRC, getting students connected to people within Mozilla, etc.
Basic Usage
Choosing an IRC Client
There are many options available for connecting to moznet. Beginning in Firefox 3.1, it's possible to use Firefox itself, by clicking on an irc:// link, which will default to the web-based Mibbit client.
Other choices include the popular ChatZilla extension for Firefox. Others prefer to use clients such as XChat, irssi, or Colloquy.
The remainder of this document assumes the use of ChatZilla.
How to Connect to moznet using ChatZilla
When ChatZilla first opens, it will present you with a list of possible networks to join--hyperlinks at the bottom of the screen. Click the link for moznet to connect.
Choosing a nickname
Users are identified by a unique nick (i.e., nickname). Often this is something short and in lowercase. Most people use their name or some portion thereof, but you can choose anything. You can change your nick using the drop-down in the bottom-left corner of the ChatZilla window, or with the /nick command:
/nick roger
This will change your nick to 'roger' unless someone is already using it, or has it registered.
Channels, joining and leaving
Channels (similar to the concept of a "chat room") usually start with the # symbol, for example #education. To join a channel type:
/join #education
Some popular Mozilla channels include:
- #education - Mozilla Education's home on moznet (best place to start)
- #mobile - Mozilla's Mobile project channel, for development of the Fennec browser
- #extdev - Extension Developer's channel, good for information about XUL and extension development
- #labs - Mozilla Labs, where projects like Ubiquity, Weave, Bespin, and others are hosted
- #maildev - Thunderbird development channel
- #songbird - Songbird development channel
- #qa - Mozilla Quality Assurance and Testing
- #js - JavaScript developers channel
- #hg - Channel for help with Mercurial (HG)
- #firefox - For user support with Firefox or Thunderbird
- #xul - For developers with XUL questions
- #camino - For Camino developers
- #accessibility - For developers working on Accessibility related features/bugs
You can also start your own channel by joining a new channel name. This can be useful for times when you want to chat with a few specific people at once. For example:
/join meeting123
Channels exist as long as there is someone in them. They disappear when everyone leaves (NOTE: there are ways to change this behaviour, but this is the default).
NOTE: Due to IRC spam and spambots, many channels require that you are a registered user (i.e., that your nick has been registered) before you can join and/or speak. You can find instructions for registering your nick here.
Entering text
Any text doesn't begin with a / is regular text that will be broadcast to everyone in the channel, including you.
The reverse is also true: anything beginning with a / is interpreted as an IRC command. You'll learn many of these as you go.
Channel Culture and Etiquette
It is normal to join a channel and say nothing. In fact, it is expected. Don't join a channel and say "hi" or leave and say "bye" -- you may be interrupting a conversation already underway.
It is normal for someone new to join a public channel (i.e., one you can see via /list or IRC > Join Channel) uninvited. Feel free to join as many channels as you like, once you're comfortable with IRC.
It is normal to join a channel and sit there idle for a long time. You might never say anything. This is a good way for you to learn about who is in the channel, what they are talking about, etc. Listening is often more important than talking, because you learn more.
If you have a question you should just ask it rather than saying, "Can I ask a question about ..." or "Does anyone know about ..."
You don't need to direct general questions to a specific person. Rather, you should ask the channel in general. Someone will usually answer you:
<don> Does anyone know where I can find Mozilla's bugzilla? <gfin> don: https://bugzilla.mozilla.org
Channels generally have a purpose (i.e., a topic), and people are often joined to many different channels at once. You'll see many of the same people in different channels. However, what might be appropriate in one channel often isn't in another. When you enter a channel, take a look at its Topic (displayed at the top, or with the /topic command) for clues.
Generally you should avoid small-talk unless you are sure that it is appropriate. Even if you see others in the channel doing it, don't take that to mean that you should (i.e., channel veterans can get away with things newcomers can't!). At the same time, be ready for a playful and sarcastic environment.
Also be aware that you never know who you are talking to based on their nicks (you will learn who people are later, as you get to know people's nicks). Don't make assumptions about people (for example, many of the people in #education are students, and an equal number are core Mozilla developers).
One of the cultural norms on IRC is that you spend time looking for answers yourself before you ask questions. People are often willing to help, but repeated questions that point to the fact that you haven't bothered to use Google or look at documentation will quickly annoy people.
Asking questions in the right place is also important. We said earlier that people join multiple channels at once, since each one has a different focus. Channels also have higher or lower tolerance for questions from beginners. Places like #education, #extdev, #xulrunner, #hg, etc. are appropriate for questions when you're starting. Remember, watching what's going on in a channel is the best way to learn what it's about. When in doubt, ask in #education and learn where to go next for help.
It is not uncommon for you to ask a question, and for others to continue talking without answering you. This doesn't mean you're being ignored necessarily. Having multiple simultaneous conversations going on is normal, and sometimes it takes time before your question gets the attention of the right person. Be patient, and don't leave the channel two minutes after asking.
It's also important to remember that the community is spread across many time zones. It's possible that you asked a question that would have been answered if you'd asked at a different time (e.g., mid-day Pacific time). Sometimes it's worth asking your question again at a later time--just not five minutes later.
Getting developers to stop what they are doing and help you on irc is a two-way thing: if all you ever do is ask questions, you're not likely to have your questions answered over the long term. The best long term strategy is to look for ways to contribute to the channels. For example, a developer may need help testing a patch, or need some info about an OS they don't have. Watching for ways to contribute helps build your credibility and place within the community.
Don't overlook the value of sitting idle in the main developer channels. What an amazing learning opportunity to have the chance to be able to go and "sit" in the "office" of a world-class developer project and listen to how they work.
The people in channels
Channels have operators, or ops. These are people who have special administrative powers to kick people out or otherwise run IRC server commands. You can often spot them in your client (for example, in ChatZilla they will appear with a Green Circle, and in irssi they will have an @ symbol before their nick).
You can find-out more about a particular person by using the /whois command, for example:
/whois don
In ChatZilla, try right-clicking a user, then User Commands > Who is.
Many people will appear to be in the channel, but not all of them will actually be watching IRC at that moment. It is normal for people to leave their IRC clients connected all the time and never leave. This way they can catch-up on conversations they missed while they were away.
Because of this, people will often check to see if someone is really there before talking to them. By convention, people will use the person's nick and "ping" or "ping?" instead of saying, "are you there?":
<don> funny_guy: ping <funny_guy> don: pong ... <don> rob: ping? <rob> hey don ... <don> jim: ping <jim> pong
The person will often respond with "pong." People preface text like ping/pong with a person's nick so that their client will alert them to it. This is helpful when there are a lot of people talking at once in a channel. (NOTE: ChatZilla automatically remembers all text that was directed to your nick so you can scan it later. You can see it in the moznet tab).
It is normal to join conversations in the middle without being invited (within reason and assuming you have something useful to say).
Having private conversations
Often you'll want to say something to a particular person and not the whole channel. This is known alternatively as 'msg' (short for message or messaging), private message or private chat, query, etc. There are a number of ways to do this, the simplest being to use the /query command:
/query don <opens a private chat/channel with user don>
In ChatZilla, right-click a user > user Commands > Open Private Chat.
You can close this private chat with /q (irssi) or by right-clicking the chat's tab and Close Tab.
You can also use the /msg command, which works even if the user isn't in the current channel:
/msg don ping?
Firebot
One member lurking in most (but not all) moznet channels is not a real person. Firebot is a bot that can provide useful information on demand.
To talk with firebot, it's best to start a private conversation rather than fill up a public channel with firebot's responses.
Message firebot for instructions:
/msg firebot help
Find out when a user was last online:
/msg firebot seen jboston
Find out who a user is:
/msg firebot who is jboston
Tell firebot who you are so it can share that information:
/msg firebot jsmith is a computer programmer and swell guy
Firebot will also jump in with useful information from time to time. For instance, type 'bug 484246' into a channel and firebot will reply with a link to the bug report.
Tools for collaboration
The best way to share long sections of text with other IRC users is not to paste it into the channel. For any text longer than a few lines (9 being the maximum, but more than 3 is probably too much), for example build output, source code, error messages, configuration text files, etc., you should avoid pasting it into an IRC channel directly. Instead, you should use one of the following methods:
Using private chats with individual user(s)
Use a temporary channel. You could ask two or three people to join you in a channel name of your choosing and then paste your text there:
/join #temp1234 ...invite others to come and see... ...paste your text and chat about it... /leave
Using pastebin.mozilla.org
The second and perhaps most common solution is to use an on-line pastebin. These are websites that allow users to temporarily host large quantities of text, and assign them unique URLs. Mozilla hosts its own pastebin, which is publicly accessible at http://pastebin.mozilla.org.
You use simply paste your text into the textbox, and optionally select any syntax highlighting you desire. Finally, click the Send button. You'll be taken to a new page. Copy the URL from the address bar, which will look something like this:
http://pastebin.mozilla.org/4248
Now, you can easily share this URL in IRC without actually copying your text directly into the channel. By default such URLs will exist for 1 month, but you can manually override this prior to clicking Send.
Sharing long complicated URLs
Many of the URLs that users share with one another on IRC are long or complicated. Because some users work with command-line clients, it can be difficult to copy-and-paste these URLs into the browser. A better solution is to use TinyURL.com. TinyURL allows users to paste and submit long URLs in order to generate a much shorter URL. A typical TinyURL, looks like this:
becomes...
TinyURLs never expire, so passing them around in emails, newsgroup postings, etc. won't cause problems. You can also choose to give them a unique, but readable name.