Unstoppable Code

"One has not only a legal but a moral responsibility to obey just laws. Conversely, one has a moral responsibility to disobey unjust laws." — Martin Luther King Jr., Letter from a Birmingham Jail

The goal of this article is to help readers understand the latest #CryptoEthics reading group where we discussed the mechanisms of decentralization/unstoppable code, the positive/negative impacts of them, and the 2nd-order solutions to those issues.

Context: As part of the DCI's initiative to catalyze and steward a field of #CryptoEthics, we're leading a weekly reading group on CryptoEthics. This week we explored the "Negative Ramifications of Decentralization and Unstoppable Code" (see the reading list here). I learn a lot every week when we host these sessions, so I'd thought I'd share these learnings with the world!

Driving Questions:

The driving questions of this session were:

  1. Why do we create decentralization and unstoppable code?
  2. How do these mechanisms work?
  3. What are the positive and negative results of these mechanisms?
  4. How can we mitigate the negative impacts and amplify the positive impacts?

(Note: This 4-part question structure holds for any given mechanism: why was it created, how does it work, what are its impacts, and what are the 2nd-order actions to maximize societal benefit?)

1. Why do we "implement" decentralization and unstoppable code?

We use decentralization-enabled unstoppable code as a way to "disobey"/exit systems that we see as unjust. This comes back to the MLK quote from the start of this article: "One has not only a legal but a moral responsibility to obey just laws. Conversely, one has a moral responsibility to disobey unjust laws." Unstoppable code allows developers to "disobey" these laws through code.

However, this mechanism (exit through decentralization-enabled unstoppable code) doesn't just allow one to exit only laws, it also allows one to exit any part of Lessig's dot: laws, code, norms, or markets. Let's look at how decentralization-enabled unstoppable code is used to exit each part of Lessig's dot.

2. How do these mechanisms work?

Disobeying Law (with Code): Exit Through A Cat-and-Mouse Game of Decentralization-enabled Unstoppable Code

The best overview of this mechanism comes from John Backus' piece: Resistant protocols: How decentralization evolves.

Backus' macro thesis is this:

https://twitter.com/backus/status/1015768635070033921

In other words, there's a cat-and-mouse game between the law and code:

  1. People disobey the legal system with code (e.g. sharing mp3s)
  2. The law cracks down on their centralized code
  3. Individuals create informal workarounds that decentralize the mechanism that the law was able to "win" on (removing legal responsibility through that decentralization)
  4. Those informal workarounds are (eventually) codified as a protocol
  5. (Which then the law tries to crack down on again—repeating the process.)

Disobeying Code (with Code)

To disobey code (with code), the primary mechanism is forking. (In contrast with disobeying law, where the mechanism is decentralizing aspects of the protocol). This is because developers aren't trying to "dodge" the law (which forces them to decentralize around it). Instead, they're simply trying to modify code (which they can do by simply forking). Three quick examples below:

Gab Forks Brave

In this article we can see how Gab forked Brave in order to disobey "unjust" code.

  • Gab made a browser plug-in that was removed from the Google and Mozilla extension libraries.
  • In order to allow users to use its rejected browser plug-in, Gab forked the codebase of Brave (an open-source browser) and then uploaded its extension to that library (where it couldn't be removed, because Gab controls the browser code).

In the "code exits code" form, exiting is a form of censorship resistance. One additional note: It's unlikely there will be a "cat-and-mouse game" here. But you can imagine a situation where the plugin is so bad for society that something further down the stack (e.g. operating systems) disallow users from downloading Gab's browser. (In this case, Gab could fork the OS, e.g. Linux, to allow users to download their Linux fork + Brave fork in order to download Gab's browser extension.)

Bitcoin Cash Forks Bitcoin

As other example, Bitcoin Cash forked Bitcoin. The BCH developers wanted a bigger blocksize but couldn't get it into BTC (through the governance mechanism of "voice"), so they exited by forking Bitcoin to add their desired changes (bigger blocks!).

Mastodon Instances Used For "ロリコン" (A "Variant" on Japanese Child Porn)

As a last example, see Ethan Zuckerman's article: Mastodon is big in Japan. The reason why is… uncomfortable. In summary: one can create Twitter-like Mastodon instances with any set of code-based rules. The Japanese folks who shared ロリコン ("lolicon") on Twitter were censored, so they exited to Mastodon instances where they could set their own rules and share lolicon there.

Disobeying Norms (with Code)

Finally, we can see how one can disobey norms (with code). The best example that we came up for this in the reading group was less "disobeying" norms and more "finding a community of aligned folks." A good example of this is how the LGBTQ+ community used Tumblr (see these articles from The Guardian or The Conversation). In summary: “For the LGBTQA community and other marginalized communities, Tumblr has more of an appeal because other platforms have more censorship built in … It created that safe space for them.” In addition to code-based censorship (of NSFW content) on other platforms, there's also the norms on the platform. e.g. LGBTQ+ folks may have be harassed on a platform like Twitter, so they searched for a place with "safer" norms (on Tumblr).


From the examples above, we can see how code allows users to disobey/exit laws, code, and norms.

(Note: In the reading group we didn't discuss "disobeying markets" with code. Leave a comment below if you have an example of this! [I think the democratized incentives of crypto may be a general example?])


Finally, a quick (non-deep) summary to answer the final two questions of this article. (Note: Thus far I've primarily worked with positive/is arguments. These next two questions are much more about normative/ought arguments.)

3. What are the positive and negative results of these mechanisms?

Positive:

  • Giving folks the ability to exit is generally good! (Though "hyper low-friction" exit may have negative ramifications. Should there be any cost to exiting?)
  • Our society should embrace the ability to disobey laws we see as unjust. (With code as one mechanism to do so.)
  • Specific positive results are things like: safe spaces for marginalized communities (LGBTQ+), flexing against power structures (record industry), options for folks in high censorship environments (Bitcoin in Venezuela).

Negative:

  • Many of these exit communities are incubation spaces for "fringe" folks, which have recently been more extremist groups like the alt-right.
  • Disobeying "just" laws is bad.

4. How can we mitigate the negative impacts and amplify the positive impacts?

  • For information, most of this involves what Renee DiResta calls "Free Speech, not Free Reach". i.e. That platforms should still curate information for the public good, instead of just allowing deleterious content to spread widely. Often this looks like "allowing folks to search out the 'bad info', but not actively recommending/promoting it." (e.g. You can find anti-vaxx stuff if you look, but maybe it won't be in your YouTube recommendations.)
  • The other version of this is "actively inserting" countermeasures when displaying the "searched for" information. e.g. Facebook shows users a "deradicalization" program when they search for white nationalist groups. (Though Facebook is also now just banning them outright.) Or another example is how YouTube links to Wikipedia when displaying conspiracy theory videos.
  • But to be honest, I'm not totally sure how to think about 2nd-order mechanisms when we think about non-information-based platforms. (The examples above are firmly in Web 2.0 world.) Please comment below if you have thoughts on shaping the impacts for Web 3!
  • See Section V of this review on the book "Blockchain and The Law" for an overview on how to regulate decentralized technologies.

To conclude: we can use decentralization-enabled unstoppable code to exit/disobey systems (laws, code, norms) that we see as unjust. Although this has mostly positive impacts (when the laws are unjust!), there are also some negative impacts (when the laws are just, or when the sub-group gets too insular).

Thanks to the folks who helped me work through these ideas in the reading group: Basil Halperin, Christine Ross, Nchinda Nchinda, Ellie Immerman, Mariana, etc.

P.S. One final note: I think I'm going to "double down" on CryptoEthics writing (instead of simply following my curiosity, e.g. writing about paradigm / meta x-risk).