At the bottom of this otherwise good article is a little circle with the label “604 Kudos” next to it (the number will be different by the time you see it):


If you move your mouse pointer into that circle, without clicking, the circle reacts and the text changes for a second or so to “Don’t move”… then a moment later the picture is a little heart and the kudo count has been incremented by one. You’ve apparently kudo’d this article even though you didn’t click!

Step 1

Step 2

Look ma, no click!

Step WTF

WTF? That’s so obviously wrong that I am at a loss to explain how any web designer could possibly have thought it was okay. If there is one user interface contract every user knows, it’s that “If you didn’t click, you didn’t do it”. Even without that bizarre “Don’t move” imperative, it would have been a bad idea; with the imperative, it’s an intentional bad idea. What are we going to see next? Click-through EULAs that don’t actually wait for you to click, but claim your agreement because you hovered your mouse pointer in the wrong place?

This isn’t just a dark road. It’s a dark and silly road. Designers, resist please.

Update 2013-10-14: In the ultimate irony, someone whose blog uses this interface did a post about an Apple iPod UI Dark Pattern. I tweeted:

Post on iPod UI Dark Pattern http://blog.sefsar.com/the-ipods-dark-ui-pattern itself uses Kudo button dark pattern (as per http://www.rants.org/2013/03/15/wtf_new_ui_clicks_for_you/).

For some reason, I’ve always liked pictures that manage to capture the mood of music. Perhaps it’s because of the inherent impossibility of a still image showing something we experience dynamically as sounds over time. Such pictures are literally evocative, because second-order evocation is all they can do — they can remind you of a completely non-visual experience, but you have to fill in the rest.

Here are some photos of that kind, of Rick Perlstein playing jazz (excellently) at my place recently:

Own the space.

Rick sets the mood.

Gettin’ into it…

Lean in a bit further…

We are there! It is happening! Now!

Contemplating: what’s next?

Work it.

Yep, that is one smooth cat.

Sure is.

OpenITP’s first round of 2013 project funding is still open for proposals! The deadline for application is 31 March 2013

Contact: sandraordonez {_AT_} openitp.org

OpenITP.org Logo

Reposted from OpenITP.org (see also the OpenITP FAQ for answers to common questions about applying for an OpenITP project grant):

Should your project apply? Here’s some help deciding:

OpenITP project grants are meant to support specific technical efforts to improve users’ ability to circumvent censorship and surveillance on the Internet. “Technical” doesn’t have to mean software or hardware — for example, we also consider efforts to improve user experience through translation, testing, projects to improve documentation, meetings that get developers together in person to solve specific problems, etc. The main thing we’re looking for is that your proposed project is finite (e.g. has a deadline, is scoped) and contributes to OpenITP’s core mission of enabling freedom of communication on the Internet.

We’re interested in all good proposals, but note we’re especially receptive to proposals that improve user experience (UX) and in translation (of both software and documentation). Don’t take that as a filter, though: if you have a good proposal that’s not about UX or translation, we still want to receive it.

While our grants don’t have a hard limit, they tend to be in the $5k-$30k USD range: enough to fund a specific piece of work, or to provide seed funding for a new idea, but not enough to be a primary long-term funding source. Therefore we try not to burden applicants with a lot of bureaucratic overhead and paperwork to apply for a grant. It’s enough to send us a brief description of what you have in mind, and point to public URLs for further details. Since we only fund open source work, we expect that most proposals we receive will already have been discussed in publicly-archived forums anyway, and perhaps written up on a public web page — though there may be exceptions, such as projects that are becoming open source but aren’t all the way there yet. In any case, we’re comfortable clicking on links and reading stuff on the Web. You’re not required to package everything up in one PDF to make a proposal. Just tell us what you want to do, make it easy for us to find what we need to find, and we’ll take it from there. We’ll ask you questions as we have them.

Here are some examples of things OpenITP approved funding for in our previous round:

  • An implemention of Off-the-Record (OTR) in Javascript, initially for the Cryptocat project but reusable by other projects.
  • Improvements to the GPG Tools project for developers (e.g., build process improvements, etc) and for users (better address book support, documentation improvements).
  • Improvements to Serval to ease user adoption (lessening reliance on root access to handheld devices, better peer-to-peer distribution of updates, more end-user documentation).
  • Those examples aren’t meant to narrow the possibilities. They’re just meant to give you an idea of the scope of our project grants and types of projects we’re looking to support.

Your turn!

Tweet: @OpenITP seeking proposals for first round of 2013 circumvention tech project grants! http://is.gd/Xs217B

Producing Open Source Software, 2.0

My Kickstarter campaign to update my book Producing Open Source Software has passed the funding threshold — thank you, backers! — and now is going into overfunding.

This is great news, and is what I’d hoped (though not anticipated). I’d like to spend as much time as I can on the revisions, so am trying to push the overfunding as far as it will go. As I wrote on the Kickstarter project page:

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.

There are 9 days left in the campaign now! Please tweet, dent, Facebookify, blog, Google Plusificate, Tumblrize, and do whatever other Internet social networking verbs are appropriate to help spread the word.

  • Retweet: Kickstarter campaign to update @ProducingOSS book going into overfunding! New reward available… http://ur1.ca/coc1l . Thanks, backers!
  • See the Kickstarter Project Update.

I’ve just added a new backer reward level too:

Pledge $10 or more

The above, plus I will dedicate one of the book’s version control commits to you, or to the project, person, or organization you designate. Note that all the book’s vc checkins go into a publicly visible repository. (This reward is new — I added it after the campaign had been running for 20 days. Many thanks to Michael Bernstein for thinking of the idea!)

Many, many thanks to all the backers so far. One of the nicest things about this campaign has been seeing many so familiar names from the open source world pledging to the campaign. (Don’t get me wrong, though: I appreciate the donations from people I don’t know, too! I assume most of you are readers of the first edition, and your pledges are the best evidence I could have asked for that the book has been useful.)

A few special thank-yous:

Scott Berkun and Gervase Markham both not only pledged, but wrote very kind blog posts about the book and this Kickstarter campaign; I’m pretty sure those posts are responsible for spikes I saw in the pledge rate right when they came out. (And just as I was writing this I saw Duncan Davidson did the same; thank you! Am I leaving anyone out? Don’t be shy; if you posted about the campaign, I’d love to know about it…)

Then just a couple of days ago, Michael Bernstein did an amazing mini-campaign of support. First he posted on Google+ about it, then shared it widely among well-chosen circles (there was a spike in donations then, with many coming from plus.url.google.com, so it seems pretty clear it was due to his post). Then, after tweeting it, he wrote me a detailed email with instructions for how to succeed in the overfunding phase, including concrete strategies and some excellent & creative ideas for adding rewards and stretch goals — advice that I am taking (as you can see from the new reward above). Basically, as far as I can tell, for a day he made this campaign his own, and that’s going to make a big difference. Michael, thank you.

For reference, my blog post about launching the campaign is here, though you might want to just use the campaign page itself for postings.

Spread the word! Overfunding == better book.

Thank you, backers & friends! It’s made my month to see how large the intersection of those two sets is.

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.