[HacktionLab] New project: Drogulous = Distributed data store
sam at bristolwireless.net
sam at bristolwireless.net
Sat Nov 24 16:36:27 UTC 2012
I spotted this on Twitter
It seems like a distributed data/ document store.
Might be of interest to someone
https://github.com/ntoll/drogulus
https://github.com/ntoll/drogulus/blob/master/docs/why.rst
From website:
Why is there a Drogulus?
The Internet is a Mess
The World-Wide Web has become a ghetto of walled gardens built upon
years of technological compromise. DNS (used to link domain names with
their host computer) is beholden to the whims of governments and
companies without recourse to due process. More worryingly still, our
data is analyzed by companies, sold via targeted advertising or handed
over to governments without our consent.
Problem #1: Users are no longer in control of their digital assets.
In order to publish anything on the web most users need third party
services (web sites) to curate data on their behalf. How this data is
organized is usually not decided by the user whose data it is but by
the service provider. Furthermore, how this data is stored and made
available is often done in such a way that makes it difficult to
change service provider. As if that wasn't enough, each service
requires its own set of credentials to identify the user - making it
hard to tell if the provenance of data on one service is the same as
data on yet another. Baroque technological solutions have been
proposed to solve the problem of multiple identities on different
services but these are merely a manifestation of problem #2 (see below).
Problem #2: hackers (used in the positive sense of the word) are
obstructed by incumbent technology from tackling problems with
elegant, useful and joyful solutions.
The beautifuly simple hypertext system originally envisioned by Tim
Berners-Lee has grown into a monster. It's a plethora of complex
technologies specified by committee that run on quirky browsers which
never behave consistently. The ubiquity of the web also means it has
assumed the status of de-facto platform for solutions thoughtlessly
implemented in a sub-optimal way in order to cope with the limitations
of web based technology. Furthermore, the resilience of the web's
decentralized nature has been undermined: large parts of the web go
dark when certain hosting providers break down or if popular websites
fall over.
Problem #3: At a fundamental level the web isn't openly writable or
configurable.
Creating, editing or organising content is not part of the web itself,
but implemented at a higher level of abstraction (causing problem #1)
in a way that abuses and complicates the original simple hypertext
system (see problem #2). This technical situation has profound
political and ethical implications concerning control, privacy and
participation. Such potential disempowerment extends to DNS - a single
point of control over linking domains to computers. As a result,
naming places on the Internet requires permission and a single use name.
Drogulus is not a Solution
Rather, it is a utopian alternative undertaken in the spirit of asking
"what's the worst that could happen?":
Drogulus is a web of cooperating, decentralized nodes that federate
data in a global key/value store (a distributed hash-table). Users who
store data in Drogulus have no idea of the physical location of the
machines holding their data. Because of this there are no walled
gardens, there is only the Drogulus.
Every Drogulus node contains a small yet powerful version of a LISP
like programming language used for searching and processing the data
stored within the Drogulus. In fact, in its raw form, data is stored
as S-expressions.
Drogulus does not depend on DNS. Under the hood, Drogulus nodes are
only referenced by IP address and port number. Data is replicated
around Drogulus should nodes be taken offline by nefarious or
accidental reasons so content remains intact and available.
The identity of users and access to data is based upon public key
cryptography. At the lowest level data is protected by encryption and
signing. Keys in Drogulus's distributed hash-table are partly derived
from the public key of the user whose data is stored there. Data to be
stored against a key is appropriately signed to ensure that nodes can
check the provenance of the key/value being stored.
In a global sense, the user is their public/private key pair and is
the only form of identity they need.
The network of nodes is ad hoc in nature and can grow / shrink with
minimum risk of data loss.
The implementation details of the distributed nature of Drogulus are
hidden from the end user.
All interactions are asynchronous.
Motivation
Autonomy ~ literally, "autos" (self) "homos" (rule or law) is a
favorite word of mine.
For me, when someone or something is autonomous it is self-directing,
free to act of its own accord and lacking imposition or direct control
from external parties. It also suggests intelligence and awareness
enough to be able to enjoy and make use of such freedom. Furthermore,
such intelligence entails ethical and political considerations on the
part of the someone or something. (I'm using the term "ethics" to mean
how an individual makes moral choices and "politics" to mean how
individuals organize themselves within groups).
Autonomy is also the opposite of terms describing such undesirable
states as tyranny, slavery, ignorance and apathy.
My definition contains two different states relating to freedom:
Freedom to self-determination, and
Freedom from imposition or coercion.
These are Isiah Berlin's famous "Two Concepts of Liberty" (Berlin uses
the words "freedom" and "liberty" interchangeably). He calls them
positive and negative liberty and introduces them by relating them to
a question:
"...the negative sense, is involved in the answer to the question
"What is the area within which the subject - a person or a group of
persons - is or should be left to do or be what he is able to do or
be, without interference by other persons?" The second, ...the
positive sense, is involved in the answer to the question "What, or
who, is the source of control or interference that can determine
someone to do, or be, this rather than that?"
Put simply, negative liberty is freedom from coercion or interference
and positive liberty is freedom to act in a particular way.
Berlin qualifies this by saying that coercion implies deliberate
interference from other persons when one could act otherwise and that
the capacity to do or act in a particular way does not count as a lack
of ones political liberty. As Berlin puts it, "If I say I am unable to
jump more than ten feet in the air ... it would be eccentric to say
that I am to that degree enslaved or coerced. You lack political
liberty or freedom only if you are prevented from attaining the goal
by human beings."
Berlin explains, "I wish to be the instrument of my own, not of other
men's acts of will. I wish to be a subject, not an object; to be moved
by reasons, by conscious purposes, which are my own, not by causes
which affect me, as it were, from outside. I wish to be somebody, not
nobody; a doer - deciding, not by external nature or by other men as
if I were a thing, or an animal, or a slave incapable of playing a
human role, that is, of conceiving goals and policies of my own and
realizing them."
But are these definitions of freedom/liberty the same as autonomy?
No.
What makes autonomy different is a will to act. Freedom/liberty is a
necessary condition for autonomy but not the only condition. One might
have freedom to do "this" or "that" but, due to habit, laziness,
apathy or some other reason, may simply not do "this" or "that".
In some sense, autonomy requires reflection and then a conscious
decision to act upon one's freedom (positive liberty). However, it's
important to acknowledge this doesn't imply rationality, good
behaviour or a good outcome. There are further considerations beyond
autonomy: the ethical and political implications of exercising autonomy.
So we get to the nub of the essential matter in hand: I believe that
autonomy is a desirable state to aspire to and to encourage. People
should have the freedom, encouragement and means to act autonomously.
Furthermore, without such freedom to act we are machines devoid of
ethical or political responsibility.
What has this got to do with software?
Software is Ethics and Politics
So much of our world is (and will be even more) controlled by
computers and the software running on them. Whoever controls the
computers controls how things work which in turn controls what people
are able to do and how they are able do it. This relates directly to
the freedoms described above. Unless it is possible to audit, change
and improve the source code of software then we lose both freedoms: we
have no way to become free from the coercion and limitations of
software and we have no way to meld the software to our needs. As Doug
Rushkoff exclaimed, "Program or be Programmed".
This is the same position taken by free software advocates such as the
Free Software Foundation (FSF) (where free is meant in the context of
freedom not gratis).
Yet there are further considerations:
By writing software to be used in such and such a way the designers
and developers are expressing an opinion about how the world should
be. Often the decisions concerning how software should work do not
have an ethical or political dimension yet the end result does insofar
as it causes users to behave and interact in certain ways that cannot
be changed by those participating.
Drogulus is an exercise in personal autonomy. I choose to implement
Drogulus in a way that reflects my emphasis on autonomy with clear
philosophical reasons for certain technological and implementation
details.
More information about the HacktionLab
mailing list