What’s code?
There’s much talk now about whether or not the source code needs to be accessible in order for people to build upon the ideas of a particular piece of software. Dave Winer is of the opinion that in ” user interface oriented software the UI reveals all. Perhaps source matters for infrastructure, but probably not as much as some people (who don’t write software) think.” Larry Lessig (as noted earlier) has a contrary view and in response he writes that he’s surprised to hear from Dave that the ideas are conveyed without source code.
Aaron Swartz delves into the analogy of books (as being “open code”) in comparison to software and points out some important things, but I’ve yet to see someone bringing up the fact that the source code first and foremost is a “book” to be read by future programmers – whether that future programmer is yourself or someone else.
Programming is not about giving instructions to a computer, it’s about representing concepts and ideas in a format that is readable to humans. Producing compilable and runnable code comes second – it can never be the top priority (for other than small quick hacks). So programming is primarily a social activity. There’s a quote that goes, “Programs must be written for people to read, and only incidentally for machines to execute” (attributed to Harold Abelson, et al, from their Structure and Interpretation of Computer Programs).
I don’t want to say that you can’t siphon ideas from studying the UI of a program. A well-crafted UI would embody very strong concepts, but those aren’t necessarily the same concepts as those on the inside. For example, some mail clients today have anti-spam features where you train the client to recognize spam. The idea that is conveyed is “a spam filter that learns from what I mark as ‘spam’ and ‘not spam’”. In this case, there’s a vast chasm between the observable idea and the functionality on the inside. Then again, in other cases, there’s a fairly one-to-one mapping and the idea could be easily adopted.
But I can’t agree to the standpoint that the source code doesn’t contain anything valuable not observable from the outside.
I don’t think the book analogy is perfect, though, but there’s some truth to it. Unfortunately, I don’t have a better analogy. Perhaps a complementary analogy might be food recipes (which I think Richard Stallman has used somewhere). If you eat a dessert that you like, you can’t just go home and recreate it without the recipe. You might observe from its “UI” that there’s strawberry and chocolate inside, but what’s that white sour-sweet mush that covers it? Or, how would I make myself a Big Mac with fries and coke at home? Even a recipe with four or five ingredients can be almost impossible unless you know what they are and how to put them together.
Food recipes aren’t copyrightable at all, from what I understand. I can take whatever my favorite TV chefs have published in their books, compile my own and release it. It would be illegal only if I made a book with the exact collection of recipes as someone else.
Chuck Shotton writes that the “work product and value being created by a piece of copyrighted software doesn’t lie in the source code. That’s just text on a page and is of no use to the viewer of the work (i.e., the user).” It might be of no use to the user, but to future developers. As far as I understand, Lessig hasn’t argued that the source code should be accessible before the copyright expires. In his Wired article, he writes:
If society is to give software producers more protection than they would otherwise take, then we should get something in return. And one thing we could get would be access to the source code after the copyright expires.
So, there’s no contradiction here to what Chuck writes about the code needing to be disclosed for competitive reasons.