Social Computation: The Freedom to Compute

45cf72d0b5611b4372b8367759882b93?s=47 wilkie
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


  1. Social Computing The Freedom to Compute

  2. 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.
  3. To Free Computation We must first understand what computation is.

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

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

    A wide network of BBSes was created to compensate.
  9. 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.
  10. ARPANET Awwwww. Internet baby pictures.

  11. Robert Morris' Folly Wide-eyed research activism! How big is the

  12. Robert Morris' Folly Wide-eyed research activism! How big is the

  13. Robert Morris' Folly Wide-eyed research activism! How big is the

  14. Robert Morris' Folly Wide-eyed research activism! How big is the

  15. Robert Morris' Folly

  16. Robert Morris' Folly A connects to B

  17. Robert Morris' Folly B connects to C

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

  19. Robert Morris' Folly Oh No...

  20. What have we learned? The Internet is distributed!

  21. The Illusion of the Cloud Are we gaining more control,

    or giving it up?
  22. Centralization of the Internet The illusion of decentralization.

  23. Rediscovering Federation Tear Apart The Cloud

  24. Distributing Identity Is your identity replicated or under your control?

  25. Webfinger / Persona

  26. OStatus: /

  27. / These systems are open source:

    You may extend them, and then easily deploy them.
  28. Lotus We have generalized federation as a framework:

  29. However... Federation is currently built upon Linux, which has a

    centralized development model.
  30. How did we get here? UNIX 1969 AT&T could not

    sell UNIX due to 1956 agreement Bell Labs
  31. 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
  32. 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.
  33. 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.
  34. Richard Stallman Free software is software that respects your freedom

    and the social solidarity of your community. So it's free as in freedom.
  35. 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)
  36. 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.
  37. Linux

  38. GNU/Linux

  39. Linux and the Bazaar

  40. 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.
  41. Git is distributed

  42. GitHub is not

  43. Can we distribute distribution? ?

  44. Let's create a new system For a federated network to

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

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

    Traditionally that's done through a kernel and operating system.
  48. Unix and the Unified Abstraction UNIX uses a unified abstraction

    called a file.
  49. 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.
  50. 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.
  51. Kernel Design We need to have an exokernel.

  52. XOmB We are developing an exokernel!

  53. 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!
  54. 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
  55. 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!
  56. 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
  57. 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 }
  58. Choosing Implementations

  59. 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!
  60. Bootstrapping! Start breaking existing things down!

  61. Redefining Operating System

  62. 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.
  63. A System of Sharing Any node can contribute interfaces, specifications,

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

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

  66. Sharing problems... Does this system open opportunity to a more

    diverse set of people? ?
  67. Re-explore Trust How can we trust others to not act

    maliciously? ?