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?
?