Sourceforge and emergence
(This is from an e-mail I just sent, as an answer to the question: “As far as software development goes, don’t you think something like sourceforge is a great example of bottom-up software development?”)
Well … I’m thinking about what would be required to take it even further. The tools provided by SourceForge are indeed significant, but still there are humans in control. The few people that controls what goes into each release, accepts or rejects bug patches, honors or ignores feature requests – the decisions made by these people are what actually “drives” the system.
I’ve been reading an (excellent) essay by Richard P. Gabriel and Ron Goldman, called “Mob Software: The Erotic Life of Code” about what’s “beyond” open-source in terms of ecosystems of code.
Gabriel and Goldman developed a pattern language (PDF) for the Jini community. Sun’s Jini is an architecture or platform for distributed systems, which is all about providing services and looking them up. The network is whatever connects devices: Ethernet, Wi-Fi, Bluetooth, infrared, etc. They claim that Jini is one of the first examples of mob software.
If you put together a service of some kind, it has an interface that I can use, so I can either build a new service that uses your service, or (since you release the sourcecode) I can modify your service in a direction that’s meaningful to me. So, I can either use yours or fork my own version – in other words it becomes a local decision.
Jini isn’t a prerequisite for mob software, but so is an Internet where you can look up and use remote services, and also provide your own. Now services that build upon other services start to appear, such as Allconsuming.net that uses Google’s, Amazon’s and Alexa’s services to build a little community of book-reading webbloggers. In Gabriel’s and Goldman’s future, I guess there would be “search engines for services”, so services can dynamically find other services that match a specification, instead of being hard-wired to Google and Amazon.
So, the Internet would turn into an ecosystem of code, where the software you use for, say, word processing, might use Google’s “spellchecker” service and perhaps some service to query which weblogs have mentioned the keywords in the current paragraph your writing (like Steven Johnson talked about at the Emerging Technology Conference). The authors talk about users being able to tailor their software themselves, and I guess they mean wiring it up to the services of their choice.
For Sourceforge to be more emergent, the system itself should accept patches (bug fixes or new features), recompile and run a bank of tests to see whether or not it broke, and if it still works, a new version would be released. Perhaps if every submission came with a specification, users could navigate the graph of all available versions (“No, I don’t want Norwegian spell-checking, but that speech feature seems good …”) and download the ones that suits them best. Combine this with a Slashdot-style voting mechanism, and buggy versions could be filtered out, and versions that others had found useful – perhaps even users that in some way match my profile – can be recommended.
So, like anyone can comment on Slashdot, anyone can contribute to a computer program.