A couple of years of not doing much Perl, and then coming back to it relatively fresh, is pretty eye-opening. Today I got some insight into what Perl is like for people who haven’t been doing it for years, and perhaps some understanding of why Perl doesn’t seem to be making many new converts.
I decided I was going to update one of my CPAN modules, the woefully unmaintained Metaweb.pm. I set out to do this on my work machine: a Macbook running OS X 10.5.5 (Leopard), on which I’d never done any serious Perl development before.
I started by checking out my code from my own repository. I was sure I’d need some stuff installed from CPAN, so I started by attempting to run the Build.PL that comes with my own module. It told me it needed a pre-requisite library (JSON), so I ran cpan install JSON.
Several hundred lines of text scrolled by, and it told me it couldn’t install anything. I dug back a fair way through a lot of non-specific “make failed” before I found anything approximating a meaningful error message: “Perl v5.10.0 required–this is only v5.8.8″. Fair enough. I need to upgrade my Perl. How do I do that on OSX? Well, I’m not sure, but I heard that perl.org had recently had a highly-acclaimed makeover, so I decided to check there. It tells me that Perl is included in Mac OS X. Yes, thanks. And upgrades? I couldn’t find binaries anywhere via the site.
A google for “perl 5.10 on osx” led me to perl.com’s download page which tells me:
If you want to upgrade, you can build the Unix source if you have the developer tools installed.
Luckily I happen to know that “the developer tools” means XCode, which provides such tools as make.
Hang on… wait a minute… how come I got so far without even having make installed? Surely the CPAN install script should have bailed out if there was no make? In retrospect, I realised that I’d just pounded blithely on the enter key while CPAN was configuring, and no doubt had skipped past the bit that asked me where my make was. I deleted my ~/cpan/CPAN/MyConfig.pm and ran through it again. Yup, sure enough, there was a warning. A single line, plain text warning, that I didn’t notice as it scrolled by.
Now, perhaps I’m just being picky here, but I’d expect that if there’s no make, it should fail a bit more loudly than that. But whatever. I went to download XCode, noting as I did so that nowhere had any error message or webpage actually provided a URL for where to get that, or even mentioned the name of it. Just so you know, here’s the XCode for OSX 10.5 Leopard download (binary file).
It takes me about 15 minutes to download the almost 1GB XCode via work’s network connection, but had I been at home, or worse yet back in Australia, it might have taken me hours. (It also comes on the Leopard install disks, but I don’t have them handy.) It was long enough for me to write this blog post up to this point, and if I hadn’t been fairly dedicated to getting the job done by now, I probably would have given up by now.
Another 20 minutes to install the package (during which I bitched to friends on IM), and I have make. I run cpan install JSON again and everything succeeds. There are 1,988 lines of output, of which many hundreds are Date::Manip’s file listing. Why do I need Date::Manip? I don’t even know, but that doesn’t stop it vomiting gibberish all over my screen.
Anyway, at long last I have the pre-req libraries I need to play with the simple, non-binary package I wrote two years ago. It took me a little over an hour in total.
Oh, and by the way, I didn’t need to upgrade to Perl 5.10 — I guess that was a red herring.
Recommendations
So, these are the things I think the maintainers of the CPAN module, and of various high-profile Perl websites, and of Perl itself, should be doing:
- Fail louder at configuration time if vital CPAN install tools aren’t available.
- Fail louder at module install time, ditto.
- Suppress about 90% of CPAN output unless a verbose flag is set, to make it easier to see warnings etc.
- Provide links to required developer tools (i.e. XCode, for OSX) in warnings, on webpages, etc.
- Provide a binary package of recent versions of Perl for recent versions of OSX.
Some of these I can do something about, some I can’t. I’ll go nag the right people after I post this, and see if I can get things moving, write some patches, or something. But why are we even in this situation? CPAN has got hairier and hairier over the last, say, five to seven years, to the point where it is a serious impediment to anyone starting Perl development. If you are an experienced developer, you probably don’t notice it anymore, but trust me: I’d been doing Perl for a decade and been publishing modules to CPAN for eight years before I took two years off, and I found this intensely frustrating. For new developers on anything other than a traditional(ish) Unix system on which they have root (and that includes most web hosting providers), CPAN — which was meant to simplify Perl development — is undoubtedly a major barrier to entry.
This needs fixing.
- Top 10 programming fonts (via schwern). I’m now using #1, Inconsolata, as my console font.
- Despite a similarity in naming, QUnit has nothing to do with xUnit. Thank $DEITY. It’s a little more TAP/Test::Simple-like, and doesn’t make me want to spork my eyes out. Glad to have learnt this.
- My favourite Moleskine notebooks (cahier XL) are now available in my favourite colour (cherry red). Hurrah!
- Via yoz, Learning Advanced Javascript by John Resig. A series of tutorials in step-by-step format which you can edit and run in-place.
A few weeks back I was ranting about not being able to file Australian taxes online using Linux. Pat Donelan decided to look into it, posted his findings, and emailed me to let me know about it.
The short version: the ATO refuses to support Linux, but there is a workaround available, involving installing the Sun Java 6 libraries and digging the necessary jar files out of an OSX package. Pat’s blog post has the most succinct breakdown of the steps as he performed them on his Ubuntu system.
Big props to the whirlpool.net.au forums for figuring it out, and to Patrick for bringing it to my attention.
I keep meaning to post interesting links here more often. Perhaps Nat’s four short links format will help me do it.
- Propbox, an Acre+JQuery library for easily embedding topic editing in a Freebase Acre app. There’s some discussion on the dev mailing list too.
- Notacon looks like a great event. “Our goal is to enlighten, educate, and entertain attendees, presenters, and staff alike. We do this by finding new ways to apply technology to graphics, art, music, or social interaction.” I’m thinking of submitting something.
- Be Counted is a project to gather stats about the gender breakdown at tech conferences. Created by Annina Rust, Hanna Wallach, and Karen Brennan.
- Lightweight Youtube pages – Google is looking at stripping down all the crud that’s on the Youtube “watch” page. Personally, I like Quietube.
This is part of my “Craft of Community” series of blog posts; you can find more through my craft of community tag.
The other day I got to wondering whether there was a good wiki out there that collected and synthesized knowledge about the tools and techniques of community management. I went a-googling, as you do, and found… not much. So I tweeted…
it seems kind of ironic that i can’t find a solid, well maintained, active community management wiki. anyone know one?
A lot of people started suggesting resources to me, but what I found was that most of them were:
- a single opinion – there are a lot of community management experts out there who would like to tell you how to do things their way.
- ephemeral – chats and discussion groups were common, but none had summarised or synthesised the results of their discussions to make a more lasting resource.
- commercial – a surprising number of resources required paid memberships, or were focused on promoting for-profit consultancies.
- unmaintained – I found two wikis out there that had no more than a handful of pages and no updates in over a year.
I was actually quite surprised at how many CM resources had a blend of one-true-wayism and commercialism. One resource — a consulting company’s newsletter — forwarded to me by email had ten tips for building a great community, one of which was that you should require members to use their real names and create a profile. Ironically, I’d just been reading up on 4chan (link goes to Wikipedia), an enormously influential community in which most participants are anonymous, immediately beforehand.
I’ve thought about it a bit, and I have a theory (eh-hem!) about why I couldn’t find a good community management wiki out there. To my mind, you need three things to have a wiki like that:
- You have to believe that community management is important, and that there is a set of skills and knowledge pertinent to community management that is worth sharing.
- You have to have an open, collaborative approach.
- You have to have the technical know-how and experience to set up the platform.
The field I come from — technically oriented Internet communities — is only just starting to realise that community management is an important role with a particular skillset. Sure, there are a bunch of people who are talking about this stuff — Ben Collins-Sussman and Brian Fitzpatrick, Jono Bacon, Selena Deckelmann just to name a few — but as far as I know July’s Community Leadership Summit was the first time a lot of us came together in one place to talk about it.
Most of the resources I found online by searching for “community management” came out of the commercial sphere: people whose task is “build a community around brand X”, or who consult in that field. It’s definitely a growing area and there is a lot of talk around it, but from what I’ve seen, it doesn’t really foster an open, collaborative approach in the same way that, say, open source software or other volunteer organisations do.
And speaking of volunteer organisations, the non-Internet-focused ones like neighbourhood associations, PTAs, book clubs, support groups, and other such communities are missing the third piece of the puzzle. Most of them are not sufficiently comfortable with the technology (yet!) to build a wiki. (I know you are all dying to say “How hard can it be!? Tool X is so easy to use!” but please don’t. My local NERT group, based on San Francisco’s Mission District, doesn’t even have a Yahoo Group, because the leader thinks it’s a huge complicated thing.
So anyway, all this is a long-winded prologue to the fact that I’ve started a community management wiki, and you can find it at communitymgt.wikia.com.
From the “About” page:
The Community Management Wiki is an attempt to document and synthesize what we know about community management.
What is this wiki for?
- Explaining terms and concepts relevant to community management
- Describing best practices
- Reviewing and recommending tools
- Offering case studies of well-known or interesting communities
- Offering further reading and other resources for community managers
I’ve stubbed out a bunch of pages and a rough structure, but I’d like to invite anyone and everyone to dive in and add whatever you think is interesting. There’s an Article brainstorming page where we’ve been gathering ideas of things worth covering. You could add to that list, or take one of the red links and write a page for it (even a few sentences or some links to other resources would be good). If you’re new to wikis, the Wikia Tutorial is a good starting point, and there is lots of help available.
Let me know what you think!
A couple of weeks ago I was in Florida giving a talk on Open Source, Open Data in which I tried to describe what open data was. In preparation for that talk, I went looking for definitions of “open” as it applied to either field, and found myself drawing on the following documents:
- The four software freedoms
- This definition of free cultural works, which is based on the four software freedoms
- The OSI’s Open Source Definition, and
- The Open Knowledge Definition which seems to be largely based on the open source definition.
In the end I structured my talk around the four freedoms because, let’s face it, they’re snappier — but this is all just background.
In any case, I’ve started to collect articles that talk about openness, and in the last couple of weeks I’ve seen a burst of them. Perhaps I’m just hyper-aware at the moment, or maybe we’re going through a phase of introspection about the whole idea. In any case, I thought I’d post a round-up of recent posts on describing, defining, and measuring openness for software, data, APIs, and the communities and processes that surround them.
From the OpenGeoData blog, The Cake Test for determining whether geodata is truly open:
What is the Cake Test? Easy: A set of geodata, or a map, is libre only if somebody can give you a cake with that map on top, as a present.
Cakes are empirical proof that most the data in most SDIs cannot be used freely, because of the licensing terms of the SDIs. And they are an empirical proof that attendants to the latest spanish SDI conference could taste themselves.
Louis Gray, The blurry picture of open APIs, standards, data ownership:
Following the much-discussed news of Facebook debuting its “Open Graph API” on Wednesday, I traded a few e-mails with a few respected tech-minded developers, and found, unsurprisingly, that not everyone believes Facebook is fully “open”. In fact, it’s believed some companies are playing fast and loose with terms that should be better understood.
To quickly summarize the discussion, there are essentially three major ways to bucket “open” APIs…
- open access
- APIs that leverage open standards
- open standard APIs like OpenSocial, OpenID, PubSubHubbub, AtomPub and others
In short, you have “open but we control the process”, “standing on the backs of open” and “truly open”, if this opinion is accepted. The developer adds, “In short, the first two mean nothing, the last one actually fits the dictionary definition. The Web is built on open standard APIs and protocols.”
Simon Phipps, A software freedom scorecard (video from a talk at the South Tyrol Free Software Conference last week) describes why an OSI-approved license isn’t enough to guarantee software freedom, and describes a number of indicators you can use to quantify the freedom of a given piece of software.
Matt Zimmerman, Open vs. open vs. open: a model for public collaboration describes three axes of openness for open source projects:
Open (available)
In order for your project to be open to anyone, they need to be able to find out about it and experience it for themselves.
Open (transparent)
The next flavor of openness is about transparency. This means enabling people to find out about what is happening in your project.
Open (for participation)
The third type of openness is open participation. This builds on transparency by creating a feedback loop: people observe activity in your project, react to it, and then actually change its course.
Finally, Melissa Draper posted about Open community, pointing out external commentary and even criticism is a natural part of having an open (transparent – to use mdz’s term) community.
(Note: Some blockquoted sections above have been edited for length.)
Got any other good links — especially recent ones — on the topic? I’m sure I’ve missed some.
I used to have a Facebook account. I deleted it. Not just suspended, actually deleted. The whole system over there gave me the creeps, between the ads that oscillated wildly between knowing too much and too little about me, to the way it would send me email notifications that someone had left me a message without actually telling me what was in the message. And then there’s the fact that Facebook’s friending system is reciprocal, which means I can’t let someone follow me without following them in return and taking the risk that they’re the sort of person who spends their day throwing sheep at me.
I gather that things have got better in the last year or two, and I keep seeing reasons why I should use it for work, so the time has come to try it again. Warily, and with much trepidation.
In addition to the obvious AdBlock I’ll be making use of articles like these:
- 5 easy steps to stay safe and private on Facebook (ReadWriteWeb)
- 10 privacy settings every Facebook user should know (AllFacebook.com)
It’s not that I particularly desire privacy — hell, I spew all the minutiae of my life across Twitter without caring who reads it — but that those same settings might just help keep me sane and sheep-free. The problem is, I know a lot of people — more than most of the people I know1 — which leads to a serious imbalance of traffic. So I’m much more concerned about filtering inbound information than I am about filtering outbound information. I’m not sure that Facebook’s really set up for that.
Tips, as usual, are appreciated.
1. Somewhat-related article of interest: Why your friends have more friends than you do, via Radar.
This is part of my “Craft of Community” series of blog posts; you can find more through my craft of community tag.
Like I said in my last post, I’ve started and participated in a pretty wide variety of communities: large and small, technical and non-technical, open and invite-only, non-profit and corporate-sponsored, focused and general. The only thing they’ve really had in common has been that they’ve all been online, to at least some degree; my life’s been pretty Internet-mediated since I first got online in 1993 and I can’t think of any communities I’ve been involved in since then that haven’t had at least an informal mailing list. So that’s just to declare (at least one aspect of) my bias up front.
Last year one of the designers at my work linked me to The Competitive Spectrum over at the Yahoo Developer Network, and it introduced me to a whole new way of thinking of the variety of communities. It’s part of a larger set of social patterns related to reputation, which is a whole nother subject, but for now I just want to talk about the spectrum itself.
The Competitive Spectrum describes communities as being:
- Caring: members are motivated by helping each other.
- Collaborative: members share goals and help each other to achieve them.
- Cordial: members have their own goals which do not conflict with each other.
- Competitive: members share the same goals, and compete against each other to achieve them.
- Combative: members must achieve their goals by preventing others from being doing so.
Yahoo gives some examples of each (mostly drawing from their own web properties), but I found it interesting to consider some technical communities I know and think about where they fit into the spectrum.
Most open source projects are collaborative, at least on the surface. Contributors come together to build a piece of software, each contributing their own time and skills to achieve the shared goal. However, you see some spread on the spectrum as well: as contributors get to know each other through online chatter and real-life meetups, they can be quite caring; some developers submitting uncontroversial patches that scratch their own itches do so in a way that’s basically cordial; and at times, developers who are keen to see their own preferred solutions make it into core, or whose egos become tied up in their contributions or their role in the community, can tend toward competitive or even combative.
It’s interesting to compare Dreamwidth, an open source project I’ve blogged about before, which seems to tend more towards the caring end of the spectrum. I’ve seen countless examples of generosity and personal support in that community, and can only think of very mild examples of competitiveness (and none of combativeness). It’s impossible to tell how much of this is due to their founding principles, the project’s relative youth, the fact that the project is centred around a journalling platform that tends to expose contributors as “real” people, or the fact that the majority of contributors are women who have (for the most part) been socialised to behave this way: any or all of those may be contributing factors.
There are a handful of open source projects that actually show a kind of dimorphism: part of the community at either end of the spectrum. One example of this is the Linux Kernel, whose mailing list is known to be one of the most combative in the field, while the Kernel Newbies group has a friendlier, more helpful, caring feel:
Kernelnewbies are a community of people that improve or update their Kernels and of aspiring Linux kernel developers and more experienced developers willing to share their knowledge. We help each other learn how the Linux kernel works and occasionally discuss other operating system kernels.
Along similar lines, the Rails community, which has a reputation for being quite rough, has Railsbridge, whose mission is “to create an inclusive and friendly Ruby on Rails community.” In both these cases, the more caring group was founded in reaction to the main group’s unwelcoming reputation. We could look at these groups as separate communities, except that the membership and activities tend to cross over and blur. (The question of what delineates a community and how you define the edges is a hairy one, and I’m not going there for now.)
You can apply the community spectrum to any kind of community, not just open source projects, nor even just online communities. It’s easy to see how it can apply to anything from sports teams to cancer support groups.
This model’s really helped me realise that what works for one community may fail dismally for another. It’s not hard to see how a community’s place on this spectrum can influence everything from appropriate leadership to rewards for participation to what kinds of online forums or real-world meetups will work best for the group.
So, how about your communities? Where do they fit on the spectrum? Anyone got any other interesting examples of dimorphism?
A surprising number of old friends seem to be asking me, lately, what exactly it is that I’m doing these days. I guess that after a decade of being known mostly as a Perl developer, it seems like I’ve gone off on a bit of a tangent. So, to make it clear: these days, my day job is as the community manager for Freebase.com, specifically for what we call the “Freebase geek community”: open source developers, data contributors, and all kinds of individuals who just think Freebase is cool and want to play with it. (I have less to do with the big companies that build stuff on Freebase — we have separate business development people who work with them.)
This is the first time I’ve had “Community” in my job title, but it’s obviously not the first time I’ve done it. One of the first Internet communities I built, back in 1994, was a mailing list called AusBDSM, which had hundreds of members, events in most major Australian cities, and a couple of spinoff groups by the time I handed it off to my successors in… was it 1996? Since then I’ve founded dozens of other communities, ranging from technical to political, from a handful of members to several hundred, and from pretty-damn-successful to thoroughly moribund. As for how many communities I’ve participated in, it would have to be in the hundreds, easily, though of course I don’t keep count.
All of which is to say: I have opinions on community management. Oh boy do I have opinions. But it occurred to me recently that although I used to blog a fair bit about programming when I was a professional software developer, I don’t often blog about community management now I’m getting paid for that. Which is funny, because I originally set up this blog to write about work-related/professional subjects.
Speaking of my opinions on community management, tonight I started reading Jono Bacon’s new(ish) book, The Art of Community. (It’s available as a free download under Creative Commons, if you’d like to read it too.) And of course I have opinions on it. Most of them are along the lines of, “But what about…?” and “Why didn’t he mention…?” and I have to admit I thought I could have done it better — which is easy to say, of course, having never written a book myself ;)
I already (regretfully) decided against doing NaNoWriMo this month because I didn’t have time. But blogging? That I can do.
So I’m planning to do a series of posts called “The Craft of Community”, because that’s how I like to think of it. Craft is something anyone can pick up. We learn crafts informally, by seeing and by doing, and our early efforts are usually pretty ugly. While there are some craftworkers who produce pieces so beautiful they’ll bring tears to your eyes, for the most part crafters do what we do because it makes us feel good, and because we like to see something we made with our own hands, even if it the back of it is kind of a mess or the legs are a little bit crooked. And in most crafts (like in Perl, a craft language if ever I saw one), There’s More Than One Way To Do It, so we can learn the most when we look at a broad range of technique and experience.
Some topics I’d like to cover:
- The variety of communities
- Anonymity, pseudonymity, privacy
- Status and advancement within communities (incl. meritocracy)
- Community metrics
- Implications of hosted community tools/forums/etc
- Challenges for for-profit companies trying to build communities
- Conference formats
- Things to do at meetups
I’m not sure I’ll get around to covering all of those, and no doubt I’ll come up with topics that aren’t on that list, too, so I’ll just imagine those are rough notes for my future self. Let me know what you think.
A couple of weeks ago I posted asking if anyone had had experience with dawn simulators or opinions of what model I should get. I went with the Philips HF3480 and this is my review.
Day 0: The lamp arrived from Amazon and I plugged it in and played with it a bit. Determined that it worked as advertised. Here’s a picture of it part-way through its 30 minute “sunrise” sequence:
So far so good. I went to bed looking forward to being woken by it.
Day 1: The light was meant to wake me for 8am. Starting around 4am, every time I rolled over or half-woke for any reason, I would think, “Is it happening yet?” and crack an eyelid to check. As you can imagine, this didn’t lead to a restful night’s sleep. And it turns I’d screwed something up in setting the alarm, so it never lit up, and I staggered out of bed around 9:30am bleary-eyed and annoyed.
Day 2: Made sure the alarm was set properly and snuggled down with a book to read before I went to sleep. The light at its brightest (setting 20) is too bright as a bedside lamp, so I dialled it down to 14. The problem with that is that the same setting is used as the maximum light in the morning, which means I woke to a dim, cozy light rather than a bright one. Not what I was aiming for.
Day 3: Working from home with a cold, so decided not to wake myself early. However, I did take the opportunity to read the manual, in the hope that it would explain how to use setting 14 for evenings and 20 for mornings. No luck; whatever you have it set to in its normal lamp mode is what it will use for the dawn simulation. However, I did discover that you can turn up the brightness while the light is off. Weird as it sounds, it just means that instead of just flipping the light off at night, I need to flip it off then spin the dial up to 20 before sleep. As long as I remember to do that, all will be well.
Day 4: A day off, and still feeling a little cruddy, so I set the dawn simulator to go off latish (9am) so I’d get a long night’s sleep. It worked as advertised, but when I woke to it I rolled over and hit the kill switch, and went back to sleep in the dark til noon.
Day 5: Feeling better, and I’d like to get to the local market at a reasonable hour. Set the dawn sim for 8am and — wow! — it worked, I woke up, and actually got up and did things (for values of “things” meaning “sitting round in my pyjamas reading email”). Can’t complain though; I wouldn’t normally be doing that at 8am on a weekend, or indeed any day.
Day 6: The end of daylight savings. Glad to have the extra hour, of course, not to mention the extra light in the mornings going forward. Set the dawn sim for 8am (i.e. 9am in old money) and actually woke a little before it (7:10). Rolled over and dozed for a bit longer, then woke easily and cheerily when the electronic birds started chirping at 8am. Hurrah!
Day 7: Monday morning. Once again, woke at 7-something, rolled over, dozed til 8am then got up pretty easily. Not much more to say, really. Hurrah! Tomorrow I’m going to set it for an earlier time, maybe 7:30 or even 7:00. I think we can call this a success, even though it took a while to get here.
One other point to note: this device does not come with international power plugs nor any of the indicators (such as a wall wart) that usually suggest it will work well in other countries. The label underneath says 120V-60Hz with no variations suggested.












