January 2013

I meant to announce this last week, but some very sad circumstances intervened (see the previous blog entry).

Now there are 19 days left in my Kickstarter campaign to fund doing a second edition of Producing Open Source Software. I still hope to reach the goal, of course, because I want to give the revisions the attention they deserve. If you liked the book, and would like to see it updated (it’s been seven years), then please pledge and please spread the word. I can only do the update by devoting serious (i.e. funded) time to it. O’Reilly Media will publish it, as they did the first edition — but only if there’s something to publish :-).

(They’ve been very supportive of the book, by the way, including a generous advance for the first edition and behind-the-scenes help with this Kickstarter campaign, but I was never expecting an advance for this revision; the economics of publishing simply don’t work that way. Publishers should be able to work hand-in-hand with authors doing Kickstarter campaigns, and if anyone understands that, it’s the publisher that started the Tools of Change publishing conference.)

Producing Open Source Software, 2.0

Here are more details, copied from the Kickstarter page:

It’s time to update my 2005 book “Producing Open Source Software: How to Run a Successful Free Software Project”. Help me do it right.

In 2005 I wrote a book called Producing Open Source Software, about the human side of running free software / open source projects. It was published by O’Reilly Media, and simultaneously released online under a free license. It’s been pretty successful, at least in the ways I’d hoped: it’s cited frequently by people I respect, it even sells decently, and I get plenty of constructive bug reports (my favorite measure of success). It’s also been translated into many languages, often by volunteer translators or translation teams.

But 2005 is a long time ago. The world of free and open source software is changing — technically, culturally, even legally — and the book really needs to be updated after seven and a half years. To give you an idea: GitHub didn’t even exist when the first edition came out!

I’ve been doing a lot of open source consulting since the first edition was published — consulting about open source processes, how to launch and run projects, etc — with a wide variety of clients: governments, for-profit companies, non-profits, and individual developers. I’ve also been talking to people in a many different open source projects. Along the way, I kept thinking that I’d love to incorporate the things I’d learned into a second edition. Eventually, I realized that the way to find time to do it was to treat the book like a client — hence this Kickstarter campaign.

The second edition, like the first, will be published by O’Reilly Media, and will be under the same free license.

Yes, overfunding is fine:

The amount I’ve set as the threshold is enough to make all the important updates I’m aware of right now, but things don’t need to stop there. If this project gets overfunded, that’s even better: that would allow me to spend even more time improving the book, including doing more research (e.g., talking to people in more open source projects, companies, etc), having more colleagues review the work-in-progress & incorporating their feedback, improving site infrastructure to better automate the ebook builds, improving the translation infrastructure, etc. More money == better book and better access, basically. I’ll be doing my work in a publicly visible repository, so anyone can stop by and see what’s going on at any time. Patches welcome, of course.

Read more at the Kickstarter page.

Screenshot of an IRC session.

This post is only here so I can refer others to it from IRC:

If we’re talking in an IRC chat room (or in some similar service like Zulip that has shared chat rooms), please address me in each message you send to me using my nick — “kfogel”, in the case of IRC (though it might be different elsewhere). I’ll return the favor.

Here’s an example:

   (jrandom speaking)  kfogel:  Hey there, what's up?

   (kfogel speaking)   jrandom: Well, lately I've been working on kersnootz.

   (jrandom again)     kfogel:  What's kersnootz?

   (kfogel again)      jrandom: It's a steganographic kitten-placement
                                service that leverages social network
                                graphs to optimize feline overlays within
                                a content-driven affiliate network on the
                                blockchain.  You should totally check us out.

   (jrandom responds)  kfogel:  Cool!  Where do I sign up?

Your IRC client probably does nick completion, so you don’t have to type out “kfogel: ” each time. You can just type “kf” and then hit the <TAB> key, and it should complete the nick appropriately based on who’s in the channel. (You might have to configure your client to append the colon and the space automatically; some do it by default, some need to be customized for that.)

Why say someone’s nick every time?

When you’re in an IRC conversation, you’re not really in a conversation. You might think you are, but it’s not like a real conversation — you can’t look at your interlocutor’s eyes and body language and know that they’re still there and still paying attention.

IRC client software understands this, so most clients do a special trick: they know the user’s nick (e.g., I configured mine to know that my nick is usually “kfogel”) and can thus alert the user that they’ve been spoken to. Mine alerts me wherever I am, even if I’m not looking at the IRC window right then, and the notice remains on until I next switch focus to the IRC window. When I get to the IRC window, the person who spoke to me will have their nick highlighted in bold yellow, on the lines addressed to me, so I can find those lines easily. (This is visible in the example image above.)

For heavy IRC users, this is quite important. Most of the time after I say something to someone in IRC, I immediately switch away to another workspace / virtual desktop on my computer to do something else, or at least to another IRC channel. After all, I have no idea how long it might take the person to respond — maybe they just got a phone call right then. Heck, for all I know, they could have stepped away from their computer entirely for a while.

So it simply doesn’t scale to sit around looking at dead air in the channel, waiting for a response, and experienced IRC users rarely do so unless there are strong signals that the real-time, in-channel conversation has the other person’s full attention, to the point where they would say something explicitly before stepping away for any reason.

Again, in an in-person conversation, none of this is necessary. We would have a shared space: I’d know if your phone just rang, or if someone came up to remind you to head over to the meeting, or whatever. Lots of things are signalled environmentally or by non-verbal cues. But IRC doesn’t have any of that. In the absence of those cues, a different style of communication is necessary.

Furthermore, an IRC chat room can contain many people having different conversations, with each person in the room participating in their own subset of those conversations. This works much better when everyone uses nicks to signal whom their comments are directed to. (Thus IRC offers something that in-person verbal conversation doesn’t: the ability to take part in a conversation while being in the midst of several other conversations that you can keep an eye on to some degree. I don’t speak any sign languages, but my understanding is that N people in a room conducting several conversations via sign language have something closer to the IRC experience than N people trying to have those conversations verbally in the same room.)

Over the years, IRC users and client software have learned to use nicknames for signalling (sort of like out-of-band flow control in communications networks). It really works — it’s actually very liberating, once you get used to it. But it only works if you really, literally, I mean this, prefix everything you say to me, every single input line, with my nick. That gives me the freedom to switch away from the IRC window as needed, knowing I’ll be alerted when you respond, or when you start a new conversation with me. Even if we’ve already exchanged five or ten turnarounds worth of conversation, and you think you can skip the nick, please don’t.

I mean, sure, once you get used to IRC, you can start to skip the nick sometimes. For example, when you’re going to say several lines to someone, and they’re not of interest until the final line is delivered, then you might just use the nick for the final line, knowing that your interlocutor can look at the previous lines — the “backscroll” — at that point. But wait until you have a feel for things. If you’re new to IRC, just say a person’s nick every time. If you run into someone whom that annoys, they’ll tell you, and you can adjust for them while pointing to this article as your excuse.

(Oh, also: you don’t have to say the nick when in a private chat channel, or “privchat”, with someone. That’s because the IRC client knows it’s a privchat, so it will do the alert dance every time the person on the other end of the chat says something, because it already knows that was directed at its user.)

He was awfully cute in high school.  We knew it wouldn't last.

Ben Collins-Sussman turns 40 years old today! Do help us celebrate by linking to his birthday page. It’s especially effective if you link from his name to the page, as I just did. That way anyone who does a search on him will know that he turned 40. And who could ask for a better present than that, right? You might also consider tweeting it / denting it.

Happy Birthday, Ben!

On the second to last day of 2012, Carl Woese died at the age of 84. I knew it was coming but even so was shaken by the news. He was a friend and for a couple of years a mentor; I’d somehow forgotten that he was also mortal — though he contributed to this, by remaining active and very productive as a scientist well into his 80s, until his final illness struck in the middle of last year.

Others have written eloquently about the foundational importance of his scientific work: his dedication to discovering and describing the microbial world as it really is, the initial resistance to and eventual acceptance of his discoveries, and the implications of his work for all of evolutionary biology. Two good places to start are the Institute for Genomic Biology memorial page and his New York Times obituary.

But those pieces don’t say much about him beyond his scientific work. While he cannot be separated from his life as a scientist — he was a scientist, down to his core, in the most basic sense of holding on to a deep humility before the complexity of the world around him — the scientific obituaries do not do full justice to the warm, humorous, remarkably kind and engaging person he was in other aspects of his life.

I was lucky enough to work for Carl in his lab for a couple of years in the mid-1990s, writing software for aligning genetic sequences, primarily ribosomal RNA, from related organisms. The photograph above was taken in 1996, and when I saw it in one of the obituaries it took my breath away. Not just because Carl looks so alive — what a cruel development photography is — but because he’s standing in one of the same familiar lab rooms where we worked, surrounded by an environment that I think he secretly loved aesthetically as well as utilitarianly.

Things you don’t see in the photograph:

The giant, macabre inflatable Ronald Reagan doll (Carl was not a fan), that occasionally got tossed around the room.

The large poster of Miles Davis, placed respectfully high on the wall near Carl’s chair.

The restaurant menu from, if I recall accurately, 1963, taped to a filing cabinet and proving that you could once get a complete steak dinner, including side dishes, for only $3.65.

Various humorous cartoons, can-you-believe-it magazine stories, etc, many of them not repeatable in polite company.

A big printout, updated irregularly, of the tree of life (that is, of the evolutionary relationships of species on Earth) according the latest phylogenetic data and methods. In a sense this was his life’s work: it is fitting that the printout was sometimes left sitting on an empty stretch of lab bench for a while, or kind of haphazardly taped up wherever there was space on the wall or on the side of some equipment. You know something’s for real when no one makes too big a deal of it.

Most of all: the long, digressive, insightful, brilliant yet utterly unpretentious discussions about evolutionary biology, science in general, how to evaluate a theory, how to tell the difference between politics and science, the role of religion and spirituality in human life, and many other things. These are my favorite memories of Carl, and indeed among my favorite memories period. Eighteen years later, I realize that he was giving a great deal of himself to a naive and somewhat sheltered youth who had conventionally politically correct notions about what science “should” tell us, and I can only hope he enjoyed the conversations to a degree proportional not only with how much I enjoyed them then, but with how formative, indeed corrective, I now realize they were.

He was open to many things and many people. In the last few days I’ve been corresponding with my friend Yong-Qing Yang about Carl. I hope Yong Qing won’t mind my quoting from a private email, as it somehow captures something essential and beautiful about Carl’s willingness to dive in, to seek understanding without necessarily knowing in advance exactly how it would come (which also describes his approach to science):

I was very impressed with his openness to other things, like eastern philosophy etc, and even took the time to learn Qi Gong from me (I remember teaching him beside one of the hills near Orchard Down in Urbana). One segment each week was our teaching schedule (there are fives segments on the moving parts of the Qi Gong I taught him and he always showed up on time at the place, mostly in that red-colored grid shirt as we see from pictures in the news these days). I will miss him and want to kick my butt (if I could kick my own) for not visiting him earlier as three of us said we would get together in Urbana again one day.

The software project was not a notable success — I was young, and inexperienced at project management [1] — but with characteristic generosity, Carl never seemed to hold that against me, either at the time or afterwards. We stayed in touch after I left the lab and Champaign-Urbana. I moved around a lot, living abroad and later in parts of the U.S. far from him, so we emailed, and got together for dinner in Champaign-Urbana every few years (not nearly often enough, in retrospect). I foolishly assumed that we could continue having dinner every few years forever. Of course, that was never possible. It’s sad to know that I’ll never again hear that instantly recognizable voice saying “Hey, kKarl” (to avoid confusion in the lab, we started pronouncing the first letters of our names; the habit carried over even when it was just the two of us speaking). I miss him more than words can say, and can see from the other posts appearing in the past few days that many, many people feel the same way. My deepest condolences to his family, who have lost a wonderful and loving husband and father, one whose humanity was intimately connected to his lifelong pursuit of truth and understanding, in all things.

Rest in peace, cCarl.

[1]   The other programmer on the project, my friend Jim Blandy, was more experienced, but was working remotely from a lab at Indiana University. He’s largely the reason the software worked at all.

[2]   I just learned that donations in Carl’s memory can be made to the Carl R. Woese Research Fund at the University of Illinois. He approved this fund to support research on evolution, systems biology and ecosystem dynamics at the Institute for Genomic Biology, where he was a faculty member. I’m donating, and naturally encourage you to as well. Gifts may be sent to the “University of Illinois Foundation” in care of The Institute for Genomic Biology, 1206 W. Gregory Drive, Urbana, IL 61801, USA, or via the web (remember to enter the specific fund: “Carl R. Woese Research Fund”). For additional information, please contact Melissa McKillip, IGB director of development at mmckilli@illinois.edu or +1 (217) 333-4619.