Slide 1

Slide 1 text

Social Computing The Freedom to Compute

Slide 2

Slide 2 text

Goals of this talk Learn the history of networks. Understand how the Internet is flawed. Determine what is missing from current systems to provide individual freedoms. Design a distributed system that gives individuals control and truly gives them the freedom to compute anything.

Slide 3

Slide 3 text

To Free Computation We must first understand what computation is.

Slide 4

Slide 4 text

Ada Lovelace ...the Analytical Engine might act upon other things besides numbers... the engine might compose elaborate and scientific pieces of music of any degree of complexity or extent. -- "Notes" Section A, 1842

Slide 5

Slide 5 text

Abuses of Computation? Computation produces or replicates non-trivial, creative work Digital forms are easily copied and shared. Never before has the ability to distribute work been easier. However, copying has been seen as antagonistic to both law and other artists. They wish to control the means of distribution and production of derivative works.

Slide 6

Slide 6 text

Computer Fraud and Abuse Act Enacted 1984, not used for conviction until 1991. United States v. Riggs - 1990 - Against Phrack Magazine's publishing of AT&T 911 data. Not guilty. United States v. Morris - 1991 - Computer worm that took down the Internet. Guilty. United States v. Swartz - 2011 - Allegedly downloaded documents from JSTOR. Charges dropped after suicide. United States v. Manning - 2010 - Allegedly used access to publish military information. Longest ongoing case on record.

Slide 7

Slide 7 text

The History of the Internet Bulletin Board System (BBS) - A spiritual ancestor Local networks (think small-town community)

Slide 8

Slide 8 text

FidoNET Ability to converse globally was hampered by telecom costs. A wide network of BBSes was created to compensate.

Slide 9

Slide 9 text

Tom Jennings We're not going to agree. We don't need to agree. The protocols have to run, that's all. Technically, this stuff works, and if you want to spin off your own network, that's just fine. It just has to follow these minimal standards. The rest of it... I couldn't give a shit. Who. How. What bad thing they did. It doesn't matter.

Slide 10

Slide 10 text

ARPANET Awwwww. Internet baby pictures.

Slide 11

Slide 11 text

Robert Morris' Folly Wide-eyed research activism! How big is the Internet?

Slide 12

Slide 12 text

Robert Morris' Folly Wide-eyed research activism! How big is the Internet?

Slide 13

Slide 13 text

Robert Morris' Folly Wide-eyed research activism! How big is the Internet?

Slide 14

Slide 14 text

Robert Morris' Folly Wide-eyed research activism! How big is the Internet?

Slide 15

Slide 15 text

Robert Morris' Folly

Slide 16

Slide 16 text

Robert Morris' Folly A connects to B

Slide 17

Slide 17 text

Robert Morris' Folly B connects to C

Slide 18

Slide 18 text

Robert Morris' Folly C connects to A ... wait

Slide 19

Slide 19 text

Robert Morris' Folly Oh No...

Slide 20

Slide 20 text

What have we learned? The Internet is distributed!

Slide 21

Slide 21 text

The Illusion of the Cloud Are we gaining more control, or giving it up?

Slide 22

Slide 22 text

Centralization of the Internet The illusion of decentralization.

Slide 23

Slide 23 text

Rediscovering Federation Tear Apart The Cloud

Slide 24

Slide 24 text

Distributing Identity Is your identity replicated or under your control?

Slide 25

Slide 25 text

Webfinger / Persona

Slide 26

Slide 26 text

OStatus: identi.ca / rstat.us

Slide 27

Slide 27 text

identi.ca / rstat.us These systems are open source: https://github.com/hotsh/rstat.us http://gitorious.org/projects/statusnet You may extend them, and then easily deploy them.

Slide 28

Slide 28 text

Lotus We have generalized federation as a framework: https://github.com/hotsh/lotus

Slide 29

Slide 29 text

However... Federation is currently built upon Linux, which has a centralized development model.

Slide 30

Slide 30 text

How did we get here? UNIX 1969 AT&T could not sell UNIX due to 1956 agreement Bell Labs

Slide 31

Slide 31 text

The fall of UNIX In 1983, the Bells were officially broken, 1956 agreement was void. AT&T could now, and did, make UNIX into a product. However, it was already widely used and prospered under the former openness. Certain organizational efforts were suddenly motivated: ● BSD ● GNU

Slide 32

Slide 32 text

Information Freedom Hackers have long strived for open access to information... ... open education ... ... free modification ... Yet. UNIX presented both a desire and conviction to these freedoms and an interesting eventual failure to provide them.

Slide 33

Slide 33 text

Richard Stallman UNIX was built upon an open source model but it betrayed us. Richard Stallman set out to create a system where the freedom of that system was ensured.

Slide 34

Slide 34 text

Richard Stallman Free software is software that respects your freedom and the social solidarity of your community. So it's free as in freedom.

Slide 35

Slide 35 text

GNU Richard Stallman created GNU (GNU is Not Unix) to provide a full UNIX replacement. Through the use of a software license the software would be forced to remain open by some means for access and modification. The GNU Public License ensured that openness is passed off to derivative works (copyleft)

Slide 36

Slide 36 text

Four Software Freedoms 0 - The freedom to run the program for any purpose. 1 - The freedom to study how the program works, and change it to make it do what you wish. 2 - The freedom to redistribute copies so you can help your neighbor. 3 - The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits.

Slide 37

Slide 37 text

Linux

Slide 38

Slide 38 text

GNU/Linux

Slide 39

Slide 39 text

Linux and the Bazaar

Slide 40

Slide 40 text

Network Federation is not Sufficient Federation built upon Linux will be meaningless to freedom of computation / information. Linux is not a federated design. The project has centralized arbitration. Linux's foundation is rooted in information freedom, and thus software freedom. Which may suggest that the four tenets of software freedom are not good enough.

Slide 41

Slide 41 text

Git is distributed

Slide 42

Slide 42 text

GitHub is not

Slide 43

Slide 43 text

Can we distribute distribution? ?

Slide 44

Slide 44 text

Let's create a new system For a federated network to work, we must federate the process of creating software.

Slide 45

Slide 45 text

Let's create a new system Design distributed systems not to reflect what society currently is or the wants of the few, but what an ideal society should be: inclusive.

Slide 46

Slide 46 text

Goals Federated system where every device is equal. Individuals have influence on the system. Propagate good ideas, inhibit bad ideas.

Slide 47

Slide 47 text

Defining the foundation We need a way to access hardware. Traditionally that's done through a kernel and operating system.

Slide 48

Slide 48 text

Unix and the Unified Abstraction UNIX uses a unified abstraction called a file.

Slide 49

Slide 49 text

Monolithic Kernel Linux/Windows/OSX are all monolithic. All code used to access hardware and arbitrate access to resources is located in a single location. How such access is determined has been decided by a small group of developers for the application developer. It is disguised as "ease of use" using the term abstractions.

Slide 50

Slide 50 text

Exokernel Exokernels strive to be small. No abstractions in the kernel. Applications can bypass the kernel and speak directly to hardware. This gives the power of the hardware directly to the application developers bypassing the kernel developers' control.

Slide 51

Slide 51 text

Kernel Design We need to have an exokernel.

Slide 52

Slide 52 text

XOmB We are developing an exokernel! https://github.com/xomboverlord/xomb

Slide 53

Slide 53 text

How do we build applications? We need to move away from the location centric model Programs should be built from pieces. They should be a list of required functionalities ! I need a sorting algorithm! I need the capability to view PNG graphics! I need an HTML parser!

Slide 54

Slide 54 text

Interfaces ... How we invoke Example! Let's teach a computer how to sort: We describe an interface You start with a name: "sort" You tell it what information it needs: "a list" You tell it what information it represents: "a list" sort(list) -> list

Slide 55

Slide 55 text

Playing the game... (specifications) Well, it could... give us any list. So, let's tell it what the result should look like. Give it rules that describe its behavior: ● Every item should be at least as large as the item that precedes it Computer now knows: Ascending order!

Slide 56

Slide 56 text

The rules of the game... Specifications can be written in code: describe Sort do it "should yield a list in ascending order" do input = [5,1,3,6,3,7,4] output = sort(input) assert output == [1,3,3,4,5,6,7] end end

Slide 57

Slide 57 text

Open ended implementations Implementations are just code that fulfills the interface and the specification: sort(list A) -> list { for i ← 1 to i ← length(A)-1 { valueToInsert ← A[i] A[i]=A[holePos] is now empty holePos ← i while holePos > 0 and valueToInsert < A[holePos - 1] { A[holePos] ← A[holePos - 1] holePos ← holePos - 1 } A[holePos] ← valueToInsert } return A }

Slide 58

Slide 58 text

Choosing Implementations

Slide 59

Slide 59 text

Building an application... Programs are a set of functions and a list of instructions! I need a sorting algorithm! I need the capability to view PNG graphics! I need an HTML parser!

Slide 60

Slide 60 text

Bootstrapping! Start breaking existing things down!

Slide 61

Slide 61 text

Redefining Operating System

Slide 62

Slide 62 text

Changing the rules... Since rules are propagated freely, absolutely anybody could come along and add a new rule: ● Items of equal value maintain their original position This limits what implementations are deemed acceptable. This change may propagate if it is advantageous.

Slide 63

Slide 63 text

A System of Sharing Any node can contribute interfaces, specifications, implementations.

Slide 64

Slide 64 text

Attribution? Does attribution exist in a content-centric code distribution model? ?

Slide 65

Slide 65 text

Can an implementation of code ever be suppressed? Sharing Code ?

Slide 66

Slide 66 text

Sharing problems... Does this system open opportunity to a more diverse set of people? ?

Slide 67

Slide 67 text

Re-explore Trust How can we trust others to not act maliciously? ?