Agreeing with Strangers

Business is a process for getting things done with people you don't much like. When plans don't work out strangers can fall back on contracts knowing civil courts can be called upon to arbitrate. But how much were those contracts understood in advance? How will increased automation help? Here I reflect on my own experiments.

Contrast with similarly named Writing with Strangers.

# Background

Post university, my career started with a decade in industrial research where brilliant engineers struggled to get projects done. In the name of software productivity we explored modularizing decisions based on composable solutions called patterns. We called it a new literature of programming and founded the first wiki to promote it.

My experience with objects and methods carried over to the young web then inhabited by mostly computer savvy and well intended explorers. I made wiki embarrassingly simple so that my future colleagues could see themselves within it and discover together how it should work. Within days a colleague wrote that wiki was so cool that he had stayed up all night writing a version for himself.

Of course I knew how much mechanism I had left out of wiki in order to project a sense of opportunity. I have since benefited by watching wikipedians invent cleverly-enabling replacements for my omissions as their work has grown to become an object of scientific inquiry on its own.

# Elections

IBM contributed substantial intellectual property to found the Eclipse open-source project which soon reformulated itself as the Eclipse Foundation modeled on the successful Apache Foundation before it. I joined Bjorn Freeman-Benson as the committer facing arm of this foundation where I was awed by the complexity of processes Bjorn had articulated and the huge burden he had taken on guiding folks through them. Most outstanding among them were merit-based elections of new committers.

I suggested that much of Bjorn's day could be automated if we were to first devise an original mechanism for capturing and then communicating in computer logic the collaborative workflows already defined in documents.

Together we built a portal to the foundation where members could, for example, elect new members. The voting was transparent and votes could be changed. Elections were followed by further vetting for intellectual property agreements that might prevent a contributor from properly assigning rights to their work. An election then is a long-running transaction involving many individuals including many edge cases that need to be well specified and communicated.

Most importantly, the entire repertoire of tests by which we understood our systems were made available to users at every decision point they faced. One could ask, if I change my vote today, what will happen to the election tomorrow? The visualizations captured every case we had considered that faced this same question. Of course situations did arise that we hand not considered. Only late in the project did we add the case, "nominee changes email address during election".

# Decentralize

Both wiki and portal promised transparent exchange with their users but retained ultimate control over the store of experience thus mediated. Is the database, I wondered, a fundamental requirement or just the remnant of programming traditions. I developed an interest in how life and culture evolved without this centralization.

Carver Mead notes in the introduction to his book on analog circuit design that digital designers seek to overcome the properties of transistors where nature insteads finds ways to exploit physical properties of the chemistry from which it is made.

I launched federated wiki with the promise to do for numbers what the original wiki did for words, give them meaning to everyday people. I wanted a wiki where one could do work as well as talk about doing work and thus work better together. I wanted to bring data to everyday decision making where we collectively decide how we will live on earth. I have progressed but not yet succeeded.

Decentralization gives each participant equal standing in a computer mediated conversation. We supplement this with attribution and dynamic resource lookup to reassemble fresh copies of computational states so that all parties have just sufficient shared experience to say they agree. I say that this is wiki to be disarming.

In each wiki space we grant all read privilege but only one write privilege. This simplification has allowed us to make progress without engaging in more complex transactions. Object capabilities offer an alternative where the possible complexity is unbounded.

(Here I have yet to bring this note to conclusion. It remains as more a question to a future me.)

# Related

See Federated Wiki already met OCap? with got us thinking along these lines.

See Wiki Gravity Plug-In? which summarized the conversation that almost had us traveling up to the OCap workshop.


Looking forward to grokking OCAP as an alternative to complexity.