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

Social Computation: The Freedom to Compute

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.

wilkie

June 01, 2013
Tweet

More Decks by wilkie

Other Decks in Technology

Transcript

  1. Social Computing
    The Freedom to Compute

    View Slide

  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.

    View Slide

  3. To Free Computation
    We must first understand what computation is.

    View Slide

  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

    View Slide

  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.

    View Slide

  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.

    View Slide

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

    View Slide

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

    View Slide

  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.

    View Slide

  10. ARPANET
    Awwwww. Internet baby pictures.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. Robert Morris' Folly

    View Slide

  16. Robert Morris' Folly
    A connects to B

    View Slide

  17. Robert Morris' Folly
    B connects to C

    View Slide

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

    View Slide

  19. Robert Morris' Folly
    Oh No...

    View Slide

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

    View Slide

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

    View Slide

  22. Centralization of the Internet
    The illusion of decentralization.

    View Slide

  23. Rediscovering Federation
    Tear
    Apart
    The
    Cloud

    View Slide

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

    View Slide

  25. Webfinger / Persona

    View Slide

  26. OStatus: identi.ca / rstat.us

    View Slide

  27. 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.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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.

    View Slide

  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.

    View Slide

  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.

    View Slide

  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)

    View Slide

  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.

    View Slide

  37. Linux

    View Slide

  38. GNU/Linux

    View Slide

  39. Linux and the Bazaar

    View Slide

  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.

    View Slide

  41. Git is distributed

    View Slide

  42. GitHub is not

    View Slide

  43. Can we distribute distribution?
    ?

    View Slide

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

    View Slide

  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.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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.

    View Slide

  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.

    View Slide

  51. Kernel Design
    We need to have an exokernel.

    View Slide

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

    View Slide

  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!

    View Slide

  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

    View Slide

  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!

    View Slide

  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

    View Slide

  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
    }

    View Slide

  58. Choosing Implementations

    View Slide

  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!

    View Slide

  60. Bootstrapping!
    Start breaking existing things down!

    View Slide

  61. Redefining Operating System

    View Slide

  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.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide