This is a new blog about MicroDB, a distributed online tag-based database for humans.
Over the coming weeks and months, I will try to explain and motivate MicroDB in some detail, but today I just want to make a number of statements about the system that I hope will help people with different backgrounds to understand roughly what it is, where it has come from, and why it might be interesting.
MicroDB is a distributed online database with a REST-based API
that allows anyone to attach information
to anything in the world.
The information takes the form of tags with (typed) values.
So whereas a simple, valueless tag would normally be a word
such as like
or own
,
a tag with a value might be something like rating=3
or owner="njr"
.
Social bookmarking sites (originally Joshua Schachter’s Del.icio.us, and today, primarily, Maciej Cegłowski’s excellent Pinboard) allow users to bookmark URLs onine, organize them by attaching tags, and see each other’s bookmarks (subject to permissions).
MicroDB is like a social bookmarking site in which the items saved don’t have to be web pages and where tags can have values.
Fluidinfo, the brainchild of Terry Jones, was an attempt to create a centralized online tag-based database that was world-writable and world-readable, subject to a rich permissions system. The fundamental idea was that each user had a namespace and stored his or her data in the values of tags within that namespace. But while tags were owned by users, all users attached their tags to a shared set of common “objects” that could be used to represent different real-world entities or other things—the Eiffel Tower, George Orwell’s 1984 or π.
Fluidinfo had a query language and a REST-based interface. I was peripherally involved in the company, wrote an O’Reilly book Getting Started with Fluidinfo withone of its staff—Nicholas Tollervey. Fluidinfo captured the interest of an interesting set of investors, including Tim O’Reilly, the afore-mentioned Joshua Schachter and Esther Dyson, but ran out of money before reaching critical mass.
MicroDB is a fairly direct reimagining of some of the core ideas from Fluidinfo with two key modifications:
MicroDB is entirely decentralized: just as no single server contains the whole web (not even Google’s!), different users’ information in MicroDB is stored on different servers
Rather than there being a common set of objects to which
different users can attach information, tags are attached
to nominal entities identified only through shared identifiers
which we call object identifiers (OIDs),
but which can be legitimately viewed as
URIs.
For example, if we user the URI book:1984 (george orwell)
to refer to the book 1984 by George Orwell,
I might attach a tag called rating
on my MicroDB server
(njr.radcliffe0.com)
with the value 10
.
Other people can attach their own data to “the same” entity
(the book 1984 by George Orwell) by attaching tags
to the same URI on their own MicroDB servers (or, indeed, within
their domain on a shared MicroDB server).
For more information on Fluidinfo, see my About Tag Blog,
now hosted here on MicroDB at
https://njr.radcliffe0.com/abouttag/index.html
.
Microblogging is a term that has been coined by IndieWeb proponents to describe Twitter-like systems in which users post short-form updates across a network. Attempts to create more distributed, open alternatives to centralized systems like Twitter, have included app.net, Mastodon, Diaspora and more recently Manton Reece’s micro.blog.
MicroDB takes the same idea of moving from a centralized service containing everyone’s (social) data to a more distributed system in which users can own and control their own (social) data, but rather than focusing narrowly on microblog posts, MicroDB is a distributed database in which users can store any kind of data and share some subset of it publicly through well-defined REST APIs (and other web interfaces).
My own Microblog, which you can access at
micro.blog/njr,
is in reality just a set of tags on my own MicroDB server.
There’s OID (object ID) for each post—e.g. microblog:2018-02-28T17:49:33
—and each such OID has two tags—post.html
, with the content
of the post, and date
, with the date of the post.
So
is a microblog post (which the server serves with Content-Type set to
text/html
).
There’s also a tag (feed.rss
) on the whose value is the RSS feed for the microblog
at njr.radcliffe0.com/microblog/feed.rss.
When Terry described Fluidinfo to Paul Graham, Paul summarized the system as “an a-list on everything”—an a-list being what lisp programmers call the data structure variously known in other contexts as a dictionary, a hash, an association list or set of key-value pairs.
This is a great characterization of Fluidinfo before, and of MicroDB now, though perhaps even more accurate would be “an a-list per person on everything”.
Most of us entrust some of our data to one or more applications or services from one or more of the tech giants. I’m thinking particlarly of things like contacts, calendar entries, to-do lists, bookmarks, notes and so forth, but also other things such as books or products you’ve rated, lists you’ve made, posts to social media services, or other data you might have stored in files or databases.
Many of us have a feeling of unease about such data being siloed in applications and services that might not last, might not respect our ownership and control of the data, and which might make migration to other services or use in other contexts harder than we would wish. I’ve long had that feeling, ever since I started viewing my collection of such data as a coherent entity, which was really back when I first got a Palm V.
So another way of thinking about MicroDB is as a personal data silo, somewhere you can keep key data for yourself, but also with the option to share/publish some of it if you wish.
That’s probably enough for an introduction. Further details will follow.