Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Social Computation: The Freedom to Compute

June 01, 2013

Social Computation: The Freedom to Compute

The Internet has a rich history of promoting our social interactions, but who is in control? Let's explore the politics that govern even our open source movements and how it affects our networks. Then, let's explore a new distributed system that promotes the freedom to compute and the power of the individual.


June 01, 2013

More Decks by wilkie

Other Decks in Technology


  1. 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.
  2. 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
  3. 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.
  4. 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.
  5. The History of the Internet Bulletin Board System (BBS) -

    A spiritual ancestor Local networks (think small-town community)
  6. FidoNET Ability to converse globally was hampered by telecom costs.

    A wide network of BBSes was created to compensate.
  7. 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.
  8. How did we get here? UNIX 1969 AT&T could not

    sell UNIX due to 1956 agreement Bell Labs
  9. 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
  10. 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.
  11. 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.
  12. Richard Stallman Free software is software that respects your freedom

    and the social solidarity of your community. So it's free as in freedom.
  13. 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)
  14. 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.
  15. 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.
  16. Let's create a new system For a federated network to

    work, we must federate the process of creating software.
  17. 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.
  18. Goals Federated system where every device is equal. Individuals have

    influence on the system. Propagate good ideas, inhibit bad ideas.
  19. Defining the foundation We need a way to access hardware.

    Traditionally that's done through a kernel and operating system.
  20. 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.
  21. 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.
  22. 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!
  23. 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
  24. 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!
  25. 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
  26. 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 }
  27. 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!
  28. 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.