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 irc.freenode.net, 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 growstuff.org — 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 Growstuff.org, please join our mailing list.

GUADEC talk: done! And a new project.

I gave my keynote at GUADEC today, on the subject of “From Open Source to Open Everything”, loosely based on this blog post from last year. I think it went pretty well, except that I ran badly overtime into the lunch break, for which I can only apologise and blame myself for hitting the wrong option on my laptop and not getting a timer on-screen, realising too late, then thinking I could muddle through without it rather than stop to fiddle with my laptop once I’d started talking. Ah well!

Sadly, after lunch, I was so wiped from the nasty head-cold I picked up somewhere in my travels, that I came straight back to the residence and slept all afternoon. If anyone was looking for me to chat about my talk, please hunt me down tomorrow.

I need to clean up my notes and post them, but stay tuned for a blog post version of my talk here sometime in the next couple of days.

In my talk I touched on a whole range of “open” communities including some in the green/eco/sustainability space. This morning I also attended a talk about “Gnome and the Systems of Free Infrastructure” by Federico Mena Quintero, from Mexico, who touched on similar topics. Federico and I have been talking about this stuff a bit over the last few weeks, to see what similarities we had in our talks. The other day we had lunch together and somehow the subject of open data for food crops came up: Federico asked me whether I knew of a free source of information telling you what crops grow in what climate regions at what times of year, and I said I didn’t know one, but that you’d have to look at information published (usually) by the agricultural departments in various places.

Or, of course, you could crowdsource it. Thinking about that idea, I realised it was in some ways similar to Ravelry, the awesome knitting community and database of all things knit-related. Nobody used to have a huge collection of all the knitting patterns in the world til Rav came along. Then, by each individual knitter putting in their own projects and notes, the aggregate of all of it became a useful general resource. Now you can do a complex search/filter for exactly the knitting pattern or yarn you’re interested in, based not on a centralised authority, but on each person adding their own small part to the whole.

If we wanted to, people growing food in their gardens and allotments and on their balconies in containers could do the same. 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.

So, consider this a launch announcement. If this is something you’re interested in, here’s where you can sign up to be part of it: mailing list, Dreamwidth community. If you’re interested on any level please do join — we will need all kinds of people from coders to gardening experts to people willing to try out early versions of the site as we build it. As I talked about in my keynote today, I would really like this to be the sort of project where we don’t have false barriers between developers and users, but where every person who’s involved can be part of the process of building this thing together. And again inspired by Dreamwidth, I’d love to help anyone who wants to learn to code as part of this, regardless of prior experience. Heck, I’ll probably be picking up a newish-to-me language/platform for this, so we’ll probably all learn together. (That said, if you’re a Ruby or Python person with solid experience of medium-size-and-complexity web apps, and want to be part of this, let’s talk!)

Oh, also, a quick note… “harvest project” is my working title for this thing, but I guess we’ll need a real name and a domain to match at some point; if you have any bright ideas let me know.