And a third thing:

3) I’ve been sitting on this for a little while, but it’s been announced now, so: I’ll be keynoting Open Source Bridge in Portland, Oregon (USA) in June. I know a bunch of my people will be there and I can’t wait to see you all. If you have never been to Open Source Bridge before, it’s one my my favourite conferences, bridging (get it!) software and social responsibility in a way that you don’t see many other places. I’m pretty sure I’ll be talking about Growstuff and how growing food is like writing software. It is, really!

Why Growstuff is Open Source

This was originally posted on the new Growstuff blog, which I set up the other day. I also set up a fortnightly newsletter, to which you should subscribe if you want to keep up with what’s happening with Growstuff as we count down to our public launch, in (eep!) about 2-and-a-bit months.

My background is in open source software, and I’ve been using and producing it for almost twenty years. Sometimes it’s easy to live in the open source bubble, and fail to notice that there are areas where open source software is not common or standard. Over the past few months, working on Growstuff, I’ve attended a number of events for social enterprises and sustainability, and checked out dozens of websites aimed at food gardeners or people trying to live more sustainable lives. Venturing outside my former bubble, I’ve found that open source software is the exception rather than the rule in these areas, so I thought it would be a good idea to talk about why Growstuff is open source, and why we think it’s important.

It’d be traditional at this point to talk about what open source software is, and to give a quick definition. But open source is at least three things, and each needs its own explanation.

First of all, open source is a political movement that aims to change the power balance between software creators and software users. When you use traditional software, you have to take it as-is. If you don’t like it, you have few options. Software makers can change the software any way they like, charge you what they want for it, or withdraw their support for it at any time. You’re locked in an unequal relationship with them, where they hold all the power. Open source software gives power back to the users, letting them — us — understand how it works, use the software how we want, modify it if we need to, and access it regardless of who we are, where we’re from, or how rich we happen to be.

It does this through special software licenses. You’ve probably clicked “Accept” on a lot of software licenses in your time, and open source licenses are just like this, except that they offer you (as a software user) a bunch of rights, where other licenses typically take them away. An open source license says that you have the right to use the software for any purpose whatsoever. It says that you’re allowed to read the source code — the underlying program that makes the software run — and to change it if you need to, to suit your needs. It says that you can share the software freely, passing it on to friends or colleagues without having to pay license fees or worry that the software creator will come after you. In some cases (as in the license Growstuff uses) it says that if you modify the software and share it with others, you must use the same open source license, to make sure that people down the line have the same rights you do, and to share the love as widely as possible.

Finally, by changing the balance of power between software creators and users, and enshrining that greater equality in a formal document, we open ourselves up to a more collaborative way of working. Software creators and users are able to come together to build the software they need, and users can even contribute directly to the software itself, by modifying the source code and offering their changes back to the original creator. Over the years, open source software developers have learned all kinds of effective ways to work together as distributed, often international teams, and to engage their user communities in developing something that they really want to use and in which they feel a sense of ownership.

So what’s this got to do with social enterprise, sustainability, and Growstuff? In my mind, open source, sustainability, and social enterprise are closely intertwined, to the point where I feel that choosing open source is a vital part of the whole picture.

When we talk about social enterprises — businesses that hope to achieve a social good through their business activities — we seldom look at their software practices. But the choice of software to use, or decision to develop software under a closed or open model, has a social impact, just as do the choice of environmentally friendly materials for physical manufacturing, or the decision to employ people from disadvantaged backgrounds. We expect social enterprises to follow ethical business practices; why not expect them to follow software practices that support equal access, transparency, and accountability?

When it comes to sustainability, it’s about more than changing your light bulbs or using a fancy water bottle. Sustainability’s about developing communities and ways of living and working that can survive and thrive in the long term. Open source is a sustainable way of building software. If a company that writes closed software goes under, the software dies with it, but an open source software project can live long beyond the people or institutions that started it. Since there’s a broad community of people familiar with the software, who know how to read and modify its source code, new developers can step up. An open source project is one that builds community and resilience against all kinds of change: exactly what sustainability is about!

These are the reasons why we think it’s important that Growstuff be open source. We want to work openly and ethically, in collaboration with our members, building a community that feels a sense of ownership and deep involvement in the software that runs our website. We want other projects, especially those working in similar areas, to be able to look at what we’re doing and learn from us, through reading or re-using our source code. We want to know that if something happens to Growstuff itself, a new Growstuff — or a hundred new Growstuffs — could sprout up, and that people could continue to benefit from what we’ve built far into the future.

Fresh links for October 1st

  • OStatus: like Twitter, but open – Ooh. I'm actually quite excited about this. The HN thread has some good points about WordPress integration as well. If OStatus can get itself hooked in closely to the WordPress ecosystem, it could actually have enough people using it — non-geek people, that is — to be worthwhile.
  • Proofreading font – Did you know there is a special font for proofreading OCR'd texts? This one was developed by Project Gutenberg. "It's designed to constantly throw you OUT of the story and get you to focus on the letters and punctuation. It's glorious. And ugly. Wow, I didn't know it was possible to make a font that ugly and still readable."
  • The day I confronted my troll – An engaging story with a twist at the end. There's something about it that rubs me the wrong way. Perhaps it's the delight with which people have been latching on to a story that portrays trolls as harmless individual actors. Few such stories are solved as neatly as this.
  • To Encourage Biking, Cities Forget About Helmets – What makes cycling safe? Tons of cyclists on the road. Helmet laws make cycling seem difficult and scary, discouraging ordinary riders and paradoxically making cycling less safe. Take note, Melbourne!

Growing stuff (vegies, open source projects, communities…)

The other week I posted from GUADEC, saying I’d been inspired to start an open source project to build a gardening website.

If I posted, “I planted tomatoes in my garden in Melbourne on the 1st of November” and everyone else did likewise, we’d wind up with an extensive database of food plants, including things like heirloom varieties and where to source them from. We could also build a histogram of the distributions of planting times for every location. Eventually, we could build in tools for sharing your harvest with your local community, saying eg. “I have a tree full of lemons, does anyone want them?” or facilitating seed-sharing and other community gardening activities.

I couldn’t stop thinking about this over the next day or so, and I realised it’s something I really want. Really really want. I want a resource that’s like Ravelry, but with a focus on food gardening, especially the sustainable/organic/heirloom end of that scene. My perfect site would have a strong community committed to sustainability both in the green sense and in the sense of a successful online community. I’m also thinking of Dreamwidth as inspiration, especially with regard to its ethics and the way its developer community works. I’d definitely want this whole thing to be open source and community-built.

This project is now up and running, and has been active for about a month, so I thought it was about time to post an update.

What we have so far:

  • Github — this is where our source code lives, along with most of our project management. Take a look at our dev branch for active development, also our wiki (note: moving to self-hosted soon) and issue tracker, especially this iteration’s stories (see notes below on development process).
  • Mailing list — most of our interaction happens here, strongly recommended to join if you want to take part in the development of the site. We need technical and non-technical people, coders and gardeners. If you’re interested in having input into what Growstuff will be, you should probably be on this.
  • Dreamwidth community/project blog — Dreamwidth and its inclusive development community are inspirations for Growstuff, and many of our contributors already have accounts there. The Dreamwidth community operates, to some extent, as the project’s blog, and has an RSS feed you can follow if you don’t already use Dreamwidth. It’s low-traffic and often gets highlights and important points crossposted from the mailing list. Note that if you don’t have a DW account you can still comment anonymously or using OpenID.
  • IRC channel – realtime chat room for anyone interested in the project. If you are already familiar with IRC, it’s #growstuff on, otherwise see the linked page for more information on connecting.
  • Twitter — if you want to follow us for occasional updates on that platform.
  • Server hosting with a provider that uses 100% renewable energy — geothermal, actually, as they’re based in Iceland. This is part of our commitment to sustainability.
  • Placeholder website on — there’s nothing much there, but I link this so that if you want to tell people about it, it’s somewhere to send them.
  • License (AGPL3+) — Growstuff is free, open source software. Our license choice allows anyone to use or build on our work, but they must use the same license for what they do. Our data about crops, once we have the site up and running, will be under the roughly equivalent CC-BY-SA.
  • Community guidelines — we wanted to get this in place from the start so everyone would know the groundrules. These apply to all project-related forums.

Most importantly, we already have a team of people who are working on building this thing. I wanted to talk briefly about our development process, because I think it’s unusual. We’re using an agile development methodology called Extreme Programming. XP consists of a collection of practices including:

  • sustainable pace
  • constant involvement of the customer (in our case, gardeners)
  • simple design focused on present needs
  • pair programming
  • test-driven development
  • continuous integration
  • short release cycles

XP isn’t often used by remote teams or by open source projects, but we’re taking a shot at it because it’s such a good fit with our community’s goals. It’s been a bit rocky trying to get things going at first, but we are currently in our second iteration, and as I am travelling around Europe (currently in London) I’ve had the opportunity to meet and pair-program with a few of our developers on different tasks. It’s amazing how much more productive, and more fun, it’s been to work on stuff with other people, especially as we’re learning the development stack. This is my first “real” Rails project, though I’ve played with it before. If it weren’t for pair programming, I would have been spending a lot of time pounding my head on my keyboard in frustration as I tried to figure out how everything fits together. For other contributors, it’s their first open source project, or first time sysadmining, or first time writing unit tests, but since we have people who know all these things, we can use pair programming to help spread that knowledge around. For those who can’t pair face to face, we make sure that the two people assigned to each story can work together online, co-ordinating via email and/or using tools like tmux and voice chat to share their work.

Right now, we’d love to more people to join us. If you have Rails experience (and experience with all the related technologies, like RSpec and Capistrano and so on) that would be great, but we’ll also welcome inexperienced developers who are keen and want to learn, or non-developers who’d like to be involved by sharing their gardening knowledge and helping us understand what you’d want from a site like this.

If you’d like to help us build, please join our mailing list.

Fresh links for July 27th through August 31st