Today I read Mike Hoye's blog post about Mozilla's IRC server coming to an end. He writes:
Mozilla has relied on IRC as our main synchronous communications tool since the beginning...While we still use it heavily, IRC is an ongoing source of abuse and harassment for many of our colleagues and getting connected to this now-obscure forum is an unnecessary technical barrier for anyone finding their way to Mozilla via the web.
And, while "Mozilla intends to deprecate IRC," he goes on to say:
we definitely still need a globally-available, synchronous and text-first communication tool.
While I made dinner tonight, I thought back over my long history using Mozilla's IRC system, and tried to understand its place in my personal development within Mozilla and open source.
I remember the very first time I used IRC. It was 2004, and earlier in the week I had met with Mike Shaver at Seneca, probably for the first time, and he'd ended our meeting with a phrase I'd never heard before, but I nodded knowingly nevertheless: "Ping me in #developers."
Ping me. What on earth did that mean!? Little did I know that this phrase would come to signify so much about the next decade of my life. After some research and initial trial and error, 'dave' joined irc.mozilla.org and found his way to the unlisted #developers channel. And there was 'shaver', along with 300 or so other #developers.
The immediacy of it was unlike anything I'd used before (or since). To join irc was to be transported somewhere else. You weren't anywhere, or rather, you were simultaneously everywhere. For many of these years I was connecting to irc from an old farm house in the middle of rural Ontario over a satellite internet connection. But when I got online, there in the channels with me were people from New Zealand, the US, Sweden, and everywhere in between.
Possibly you've been on video calls with people from around the world, and felt something similar. However, what was different from a video call, or teleconference, or any other medium I've used since, is that the time together didn't need to end. You weren't meeting as such, and there wasn't a timebox or shared goal around your presence there. Instead, you were working amongst one another, co-existing, listening, and most importantly for me, learning.
Over the next year, irc went from being something I used here and there to something I used all the time. I became 'humph' (one day Brendan confused me for Dave Herman, and shaver started calling me 'humph' to clarify) and have remained so ever since. There are lots of people who have only ever called me 'humph' even to my face, which is hilarious and odd, but also very special.
Mike Beltzner taught me how to overcome one of the more difficult aspects of IRC: maintaining context after you log off. Using screen and irssi I was able to start, leave, and then pick up conversations at a later time. It's something you take for granted on Slack, but was critical to me being able to leverage IRC as a source of knowledge: if I asked a question, it might be hours before the person who could answer it would wake up and join irc from another part of the planet.
I became more engaged with different areas of the project. IRC is siloed. A given server is partitioned into many different channels, and each has its own sub-culture, appropriate topics, and community. However, people typically participate in many channels. As you get to know someone in one channel, you'll often hear more about the work happening in another. Slowly I got invited into other channels and met more and more people across the Mozilla ecosystem.
Doing so took me places I hadn't anticipated. For example, at some point I started chatting with people in #thunderbird, which led to me becoming an active contributor--I remember 'dascher' just started assigning me bugs to fix! Another time I discovered the #static channel and a guy named 'taras' who was building crazy static analysis tools with gcc. Without irc I can confidently say that I would have never started DXR, or worked on web audio, WebGL, all kinds of Firefox patches, or many of the other things I did. I needed to be part of a community of peers and mentors for this work to be possible.
At a certain point I went from joining other channels to creating my own. I started to build many communities within Mozilla to support new developers. It was incredible to watch them fill up with a mix of experienced Mozilla contributors and people completely new to the project. Over the years it helped to shape my approach to getting students involved in open source through direct participation.
In some ways, IRC was short for "I Really Can do this." On my own? No. No way. But with the support of a community that wasn't going to abandon me, who would answer my questions, spend long hours helping me debug things, or introduce me to people who might be able to unlock my progress, I was able to get all kinds of new things done. People like shaver, ted, gavin, beltzner, vlad, jorendorff, reed, preed, bz, stuart, Standard8, Gijs, bsmedberg, rhelmer, dmose, myk, Sid, Pomax, and a hundred other friends and colleagues.
The kind of help you get on irc isn't perfect. I can remember many times asking a question, and having bsmedberg give a reply, which would take me the rest of the day (or week!) to unpack and fully understand. You got hints. You got clues. You were (sometimes) pointed in the right direction. But no one was going to hold your hand the whole way. You were at once surrounded by people who knew, and also completely on your own. It still required a lot of personal research. Everyone was also struggling with their own pieces of the puzzle, and it was key to know how much to ask, and how much to do on your own.
Probably the most rewarding part of irc were the private messages. Out of the blue, someone would ping you, sometimes in channel (or a new channel), but often just to you personally. I developed many amazing friendships this way, some of them with people I've never met outside of a text window.
When I was working on the Firefox Audio Data API, I spent many weeks fighting with the DOM implementation. There were quite a few people who knew this code, but their knowledge of it was too far beyond me, and I needed to work my way up to a place where we could discuss things. I was very much on my own, and it was hard work.
One day I got a ping from someone calling themselves 'notmasteryet'. I'd been blogging about my work, and linked to my patches, and 'notmasteryet' had started working on them. You can't imagine the feeling of having someone on the internet randomly find you and say, "I think I figured out this tricky bit you've been struggling to make work." That's exactly what happened, and we went on to spend many amazing weeks and months working on this together, sharing this quiet corner of Mozilla's irc server, moving at our own pace.
I hesitated to tell a story like this because there is no way to do justice to the many relationships I formed during the next decade. I can't tell you all the amazing stories. At one time or another, I got to work with just about everyone in Mozilla, and many became friends. IRC allowed me to become a part of Mozilla in ways that would have been impossible just reading blogs, mailing lists, or bugzilla. To build relationships, one needs long periods of time together. It happens slowly.
But then, at a certain point, I stopped completely. It's maybe been four or five years since I last used irc. There are lots of reasons for it. Partly it was due to things mhoye discussed in his blog post (I can confirm that harassment is real on irc). But also Mozilla had changed, and many of my friends and colleagues had moved on. IRC, and the Mozilla that populated it, is part of the past.
Around the same time I was leaving IRC, Slack was just starting to take off. Since then, Slack has come to dominate the space once occupied by tools like irc. As I write this, Slack is in the process of doing its IPO, with an impressive $400M in revenue last year. Slack is popular.
When I gave up irc, I really didn't want to start in on another version of the same thing. I've used it a lot out of necessity, and even in my open source classes as a way to expose my students to it, so they'll know how it works. But I've never really found it compelling. Slack is a better irc, there's no doubt. But it's also not what I loved about irc.mozilla.org.
Mike writes that he's in the process of evaluating possible replacements for irc within Mozilla. I think it's great that he and Mozilla are wrestling with this. I wish more open source projects would do it, too. Having a way to get deeply engaged with a community is important, especially one as large as Mozilla.
Whatever product or tool gets chosen, it needs to allow people to join without being invited. Tools like Slack do a great job with authentication and managing identity. But to achieve it they rely on gatekeeping. I wasn't the typical person who used irc.mozilla.org when I started; but by using it for a long time, I made it a different place. It's really important that any tool like this does more than just support the in-groups (e.g., employees, core contributors, etc). It's also really important that any tool like this does better than create out-groups.
IRC was a critical part of my beginnings in open source. I loved it. I still miss many of the friends I used to talk to daily. I miss having people ping me. As I work with my open source students, I think a lot about what I'd do if I was starting today. It's not possible to follow the same path I took. The conclusion I've come to is that the only way to get started is to focus on connecting with people. In the end, the tools don't matter, they change. But the people matter a lot, and we should put all of our effort into building relationships with them.