Of camels and committees
March 13, 2011 36 Comments
I did a Biota podcast last night and Tom understandably asked me a little about my views on open source and collaborative development. I didn’t give a very good answer, but the subject keeps coming up, lately, so I thought I’d write a post about it to try to explain my position. People want to know why I don’t plan to develop my game as open source. Why don’t I collaborate with others (often specifically the person asking the question) and hence do a far better job than I can possibly do on my own? Why am I so opposed to teamwork? Why am I so stuck up and antisocial? (Alright, nobody actually asks that, but sometimes I suspect that’s what they’re thinking.)
I’m really not opposed to collaboration. Not at all. Nor open source. It just doesn’t work well for me personally, and in particular for this application. Collaboration is the norm, so it’s not like I’m discriminating against a minority here. It’s practically compulsory in many areas. Just try getting a European Commission science grant without including at least three different countries in the team. If it weren’t for Kickstarter and you lovely generous people I’d have little hope of getting my work funded at all, and for over a decade I’ve had to fund most of it myself. But that doesn’t mean collaboration is necessarily always the best way to go about things.
In the case of my Grandroids project, writing a computer game isn’t the objective, it’s the intended outcome. These are actually very different things. For instance, the intended outcome for the Kon-Tiki expedition was to arrive at the Tuamoto Islands, but it wasn’t the objective. If it was the objective then Thor Heyerdahl could simply have got on a plane. Any decent pan-European research collaboration could have told him that. At least after a few committee meetings to thrash out the reporting requirements.
If the game I’m writing was merely the objective then a bunch of us could sit down and discuss how we were going to achieve it. But for me it’s very much the other way round. I already have a theory that I’m trying to develop, and the game is intended to be an entertaining and useful expression of that theory. But the theory is in my head; it isn’t fully developed yet, and so I can’t delegate parts of it or even explain it properly to people. It therefore has to be a conversation between me and a computer.
And it’s not like I can even farm out the peripheral stuff. Not yet, anyway. The graphics and physics engines could be farmed out if it weren’t for the fact that they’re already written and I’ve bought the licence (in any case, without them I couldn’t do my part, so they had to come first). Even the 3D creature design is a biological issue, not predominantly an artistic one, because I’m using the physics engine and virtual muscles to control it, rather than conventional animation, so the weight distribution and anatomy have to work hand-in-hand with the muscle control system, which in turn is very co-dependent on how the brain is developed. If someone designs a beautiful creature but when I plug it into my code it keeps falling over, it’s not going to be held up by Art alone. Whereas if I develop the 3D art as well as designing the low-level postural control in the brain, my left hand can learn from my right and vice versa. These iterations occur on a minute-by-minute basis and I get a direct, personal insight into both the art and neuroscience problems that I would never have been able to take advantage of if someone else had done the graphics. This is why I’ve been building robots by myself, too. It was developing the electronics and signal processing that gave me insights and ideas into how the human brain might work, and it was neuroscience and biology that gave me new ideas about how to design the electronics and mechanics. Those intimate connections between apparently disparate ideas are the fuel for creativity. The creative act is primarily an act of analogy.
And all that has to happen inside a single brain, because in the brain ideas can connect up in myriad ways that aren’t confined to language and drawings. I don’t have any translation problems in my head; I don’t send memos to myself and then misread them; I understand every single word I say, which is rarely the case when I’m discussing things with other people. If I was a painter, this would be far more self-evident. It’s not like Michelangelo could have restricted himself to painting the faces on the Sistine Chapel ceiling while other team members chose the layout, focus-grouped the storyline, painted the arms, etc. It had to be a single creative act. Although now that I think about it, perhaps that explains the Venus de Milo…
In computing terms it’s somewhat similar to Linux. Zillions of people can maintain Linux and add to it now, but the core of it had to come out of Linus Torvalds’s head. Yet, even then, people already knew what an operating system was and roughly how to go about designing one. That’s far from the case in AI. We know hundreds of ways not to do it, but how to actually achieve it is still an open question. There are plenty of other, often well-funded attempts to sit round a table and figure out how to create AGI collaboratively, so if that’s the best way to go about it we’ll soon find out. But sometimes a better way to search an area is for everyone to spread out and follow their own nose. I have a specific route that I want to follow, I can’t explain it to anyone else in a way that would enable them to see exactly what I have in my mind, so it’s best for me if I just stay in my hermitage and write code. Sometimes code is the best way to explain an idea.
So, I really have nothing against collaboration or open source software per se, although if you’d asked me that yesterday morning, while I was up to my neck in CentOS, I might well have given a different answer.