- As of 2022-08-30 the source of truth for this has moved to the Google Doc: go/agora doc ~ https://docs.google.com/document/d/1DXJRDh9Ss5VCRBi3oirDw9d7yjn3H2hMqfN2ETTyjIc/edit
#push As of 2022-07-24 being produced as the draft for a pkg book chapter.
- Very much looking forward to the book because of others' contributions!
- See other chapters in https://personalknowledgegraphs.com/#/page/Personal%20Knowledge%20Graphs.
This chapter is about the Agora in general, and about an agora in particular, and what we could do with them together.
- Working title: "The Agora is a Distributed Knowledge Graph and Protocol".
- Working title (2): "The Agora is a Protocol, a Platform and a Commons".
- Subtitle: Experiments with a Distributed Knowledge Graph.
- Original title (for the abstract): "The Agora is a Social Knowledge Graph".
- Expected length: 5k-10k words ~ 10-20 A4 pages single spaced.
- #push deadlines
- #meta The preceding blocks and the following children exemplify Agora Protocol (see below for a concise description.)
In this subnode (meaning this text file) you will find the actual chapter text, including the introduction, which should be 5k-10k words once ready to be delivered on 2022-09-01.
- In the subnode below (meaning another text file, sourced from the Stoa), you will find a snapshot of the chapter outline as it was when I delivered it to editors on 2022-07-04 as a list of bullets. This is now an independent version, writable by any interested party; feel free to edit it in whichever direction you want to take it and use it to show what you think the Agora is about, or should be.
todo (see also lines below marked TODO)
- #pull agora
- agora protocol
- agora platform
- add more on pattern repository aspect
- document social -> agora and agora -> social flows
what about importing single resources like docs?
- I actually need this for this document, the following should work?
- #pull https://docs.google.com/document/d/1DXJRDh9Ss5VCRBi3oirDw9d7yjn3H2hMqfN2ETTyjIc/edit
In this chapter we describe the Agora, a protocol and reference platform yielding a knowledge commons provisioned by a self-governing community. This commons is bootstrapped as a distributed knowledge graph assembled from off-the-shelf components, upholding the user's data sovereignty while supporting integration with a wide range of tools for thought.
The Agora as described in this article is just an Agora, meaning it should be taken as a simple reference implementation of the principles delineated in this paper. Because the Agora-defining Agora protocol tries to build on common principles1 and incorporate conventions already in use at the time of writing, you will likely find that other Agoras already exist online and offline -- if not by name, then definitely in values and direction. When in doubt, the author2 likes to assume that all Agora-like entities we find will eventually be part of a greater confederated Agora network. Put another way, the reference Agora described here is just one possible seed from which an Agora network may grow.
A core aspect of the provided reference Agora3 is that its constituent distributed knowledge graph can be straightforwardly bootstrapped using just a well-defined freely-available subset of the internet. The provided software can already integrate crowdsourced sets of personal knowledge graphs, digital gardens, wikis and feeds of all kinds (including social), generalizing to arbitrary repositories maintained manually or via readily available tools for thought (both open and closed in nature). All supported data sources are retrieved and integrated using free software, while still supporting production and editing with arbitrary tools of the users' choice.
As hinted above, the Agora is a project with multiple facets which we will try to explore in order in this paper:
- The high level Agora protocol, which is designed to lower friction to information exchange and cooperation, mostly building on conventions and devices already in use within knowledge oriented communities of practice and supported by a variety of tools for thought.
- A free software reference implementation of an Agora platform based on the principles delineated in this article, including: a set of importers for diverse data sources and formats; an API with endpoints implementing the Agora protocol; and an integration layer serving as user interface to the knowledge graph.
- An example Agora commons, being a distributed knowledge graph provisioned by an Agora community using the tools and concepts above.
The triad above fits together in a variety of ways that we will try to explore in relevant sections, but in a nutshell: Agora protocol can be used by the community while interacting with the Agora platform to provision entities, intents and services in the Agora commons.
We2 then cover experiments and potential applications in the academic, social and political domains assuming the availability and widespread adoption of a free knowledge commons. This is done in the form of a series of short reports and exploratory essays.
The Agora can be defined most generally as a subset of the internet4 used consciously and towards a particular purpose. Slightly less generally, as per the above, it can be seen as a platform and a protocol for provisioning and maintaining a commons (initially digital) enabling a community to efficiently define and advance their goals. Because of these broad definitions and the wide applicability of the principles detailed in this article, the background required to put this effort in context is ample and fuzzily defined at the edges.
The Agora is inspired by the work of many. Here we mention some of the core influences.
- Elinor Ostrom, who pioneered the study of a well functioning commons. Her work resulted in dispelling the once dominant position that commons must be taken over by centralized agents like the state to prevent the so-called Tragedy of the Commons. Later in her career he explored the Knowledge Commons in particular in work which is equally influential.
- Douglas Engelbart, Alan Kay and Vannevar Bush among many others in the field of tools for thought5. The Agora started essentially as a social memex.
- Tim Berners Lee for his work on the web and later on Solid, which informs the Agora's approach to managing user data.
- Ward Cunningham for developing the wiki, his influence on the c2 pattern repository, and his current work on fedwiki, which explores many of the same patterns the Agora tries to explore in complementary ways6.
- Chrisotpher Alexander for developing Patterning as a discipline. The reference Agora, like the original wiki, tries to be a pattern repository.
- Silke Helfrich and David Bollier, who extended on the previous and worked actively on a Pattern Language for the Commons.
- Murray Bookchin for developing municipalism and his vision for the revolution in the 21st century.
Finally, a caveat emptor: the reference Agora is highly idiosyncratic. It is linked to a pragmatic project directed towards world improvement, specifically an experiment in protopian thinking applied to global reform and revolution. This project tries to explore the full nature of the internet as it could be, using the tools at hand to work on pressing tasks as we try to optionally improve the world together. More concretely, Flancia is an exploration on the power of tools of thought, including social media and more generally distributed writing, to advance altruism, rationality and loving kindness.
The heart of an Agora is the Agora Commons. It is a digital commons to start with, extending potentially to an inclusive virtual and real commons able to sustainably support its associated communities materially.
TODO (Diagram): Triad of Commoning as it maps to the triad of the Agora project: Agora Protocol, Agora Platform, Agora Commons? But the later sounds like a category mistake now. Is the Agora just recursive? :) Maybe this works better if we just mention intents.
TODO (Text Structure): Making the commons a higher level section would probably clarify the structure a bit, allow me to bring in the Triad of Commoning, etc. -- but maybe this has already happened, check/fix once we're in Google Docs as it'll probably be easier then.
This project is of large scope and makes use of terminology from different fields, drawing from computer science, systems thinking and political theory. It also makes use of metaphors. To aid understanding, here we provide a short summary of key terms to follow.
- Agora: a protocol, a platform, a commons. The noosphere. Internet as a tool held right.
- Graph: the heart of the Agora. A distributed knowledge graph in particular, both explicitly and implicitly containing a variety of social graphs.
- Node: a vertex in the knowledge graph. Maps to an entity description encoded in a wikilink or #hashtag. Maps to a mental context in an Agora user.
- Subnode: a resource contributed by a user which the Agora will provision when queried for a variety of Node contexts. A node is a collection of subnodes.
- Link: an annotated edge in the knowledge graph. A relationship or connection between concepts or contexts, optionally annotated. Technically you can think of it as tuple of nodes linking to each other, or more generally a set or sequence of nodes related to each other via a composite relationship (e.g. a link with annotations). The later results in a hypergraph which is what an Agora generally implements.
- Garden: a repository of resources maintained by a user over time. (Optionally entity mapped) information contributed by a user diachronically.
- Feed: a sequence of points in time with pointers to objects. Interesting resources as positioned in a timeline. A core Web technology that an Agora can both consume and provide.
- Stoa: a repository of resources maintained by a group over time.
- Bridge: a device or process connecting contexts, applying to both nodes and repositories.
- Siphon: a bridge which exploits a gradient.
- Commons: a social organism or social system provisioned and maintained by a community of practice for the common good. As per Elinor Ostrom, Silke Helfrich, David Bollier, etc.
This section details intents, goals and values as they relate to the definition of an Agora on a high level.
- The Agora is a project for the betterment of the internet, potentially leading to the betterment of the world.
- To join an Agora, you only need to say you want to join it.
- The Agora is a platform for commoning built on a set of public intents, including declarations of goals and values.
- If you tell an Agora about a resource you care about, the Agora will try to link it and optionally save it for you.
- The Agora as a project is positioned at the intersection of the fields of commoning, patterning and knowledge management.
- The Agora is a social memex.
- The Agora is an experiment which seeks to answer the following question: what if, in the field of tools for thought, multiplayer meant also multitool?
An Agora tries to meet the user where they are. As a service in the internet, you don't sign up to an Agora: you sign in. Albeit the reference Agora is based firmly on web 1 principles and core web protocols and architectural styles like http, rdf and rest, it also includes partial implementation of social protocols like activitypub which affords it a basic level of integration with the Fediverse and Twitter[^twitter].
In the terms of the Knowledge Futures Group, the reference Agora is a system that provisions an overlay (demo at https://anagora.org) querying an interlay (go/agora, the Agora Commons) integrating repositories from a primarily git based underlay.
With this tool the Agora community can embark on shared projects. The author, as one member of the Agora community, would like to propose (offer) a series of projects as public collections of intents in the commons.
Let us use Agora Protocol if we may.
This section describes a protocol for publicly defining sets of intents that can be said to define an Agora. An Agora is a public space that defines itself as such and follows an explicit variation of the Agora Protocol by convention.
In text format, Agora Protocol is a series of typographical conventions that allow users to link and annotate resources regardless of the medium. Annotating here stands for encoding metadata and personal meaning in resources in a way conducive to be later decoded in an Agora-like context.
If you are reading this book, you probably know Agora Protocol even before reading about it; it is meant to reflect and build on existing practices in the personal knowledge management space, like:
#Tags designate entities as related to the annotated resource.
- #PascalCase may be used to encode sentences.
Wikilinks designate entities as related to the annotated resource.
- Wikilinks may be preferred when trying to encode sentences a particular typographical realization, as they seamlessly contain lossless unicode strings.
On a pragmatic level: if a person declares a public space or shared resource to be in an Agora, it is in the Agora by definition. This extends to conversations in the real world.
Agora Protocol is parsed by every Agora. On interpreting a statement as an intent, an Agora may take action for the benefit of the user.
An Agora always links by default. Users can opt into automatic saving of resources, meaning storage of resources in a repository under the users' (preferred) or an Agora's control.
Optimistic linking is encouraged.
Links that lead nowhere (currently) are encouraged.
- In an Agora, the place they lead to by default includes resources written by others.
- Links that lead nowhere (currently) are encouraged.
- Outlines or Agora trees, as encoded by nested lists such as this one, might be parsed by default as declaring useful patterns7.
When interpreting the above and extensions, an Agora is liberal in what it accepts and when in doubt tries to default to being extra useful to the user -- meaning it is optimistic in association and surfaces all resources that have a claim to be associated with the context being served. For example: #CamelCase will be provided in all contexts matching camel case and all known variations, and this relationship is symmetric by default, in the sense that the user might provide either at write time and be later served matching resources in either context.
To put it simply, an Agora defines equivalence classes optimistically with good intention. Later we will discuss the hypothesis that this is an optimal default policy for a social platform.
Note that outlines plus linking seem sufficient to encode thoughts and structure of arbitrary complexity in a human readable way8. In the opinion of the author this seems sufficient to encode a hypergraph in a human friendly way, which might do away with the need for programmatically generated block references9. See Technical Specifications below for more.
Next we describe how Agora Protocol can help provision an Agora Platform which integrates pro-socially with the wider internet ecosystem, and how a community could use both to run experiments on distributed thought.
The Agora Platform as described in this article is decentralized in nature: it is meant to be a pragmatic stopgap solution that is relatively easy to bootstrap and still able to compete with the centralized platforms that currently dominate the market in many fields and might vie for enclosing the knowledge commons soon. A fully distributed architecture might be preferable soon -- surely soon after achieving and ensuring knowledge independence for future generations. But a decentralized model like that used widely in the Fediverse has core strengths that suggest it might be a good fit for bootstrapping a knowledge commons.
Individual Agora instances, initially provisioned and maintained by like-minded groups in a decentralized (Fediverse compatible) model, but tending towards a fully distributed model, are expected to federate in a greater Agora network10.
- #meta TODO: this Agora protocol block is a MARK for 'did new writing around here in the last pass', move/delete as needed.
The Agora network is built on a federated protocol the aim of reducing friction to cross-tool cooperation and maximizing the constructiveness of forks.
Take the case in which two groups might temporarily diverge in their views to want to run separate Agoras. Ideally their instances should be able to continue to cooperate on problems and solutions for which there is enough values/ideological alignment. Persistent best effort cooperation as a default contract also maximizes the chance of re-convergence leading to a merge.
A bridge is a process or device that can be set up to transfer resources across (previously isolated) networks, either one-time or recurringly.
Bridges are useful in that they lower friction for users to move across tools and platforms in an ecosystem, and to keep control of their data (as a bridge can be made to cross post data to a repository under the user's control, or compatible with the user's data sovereignty).
An Agora tries to provide safe, useful bridges to the community as a public service.
A siphon can be seen as a bridge across which flow happens efficiently after some initial effort, with cost-benefit often following a Pareto-like 20-80 distribution. Many Agora siphons are specialized to perform pro social adversarial interoperability.
An example siphon would be a bridge with a one-time setup cost (e.g. an end user having to set up an API key for a walled garden) but which can then be run continuously afterwards at low cost (of maintenance on behalf of the user, and of computation).
- Commoning, an activity.
Commoners, a group of people.
- Interacting optionally in the Agora Platform as described above.
Common goods, a group of resources.
- Described in this section.
sources.yamlfile containing a list of all repositories to be integrated into an Agora plus useful metadata.
CONTRACT.mdfile containing a list of assertions declaring high level goals and values for the Agora.
README.mdfile containing instructions on how to provision an Agora using the above and free software.
By becoming part of the reference Agora, users endorse common intents by default, but can opt out of any intents perceived as problematic. In addition they can contribute personal intents which can be endorsed by other users, thus becoming common.
These are sample intents of the author. They can be optionally endorsed by users of an Agora.
- The author proposes we use an Agora to define and extend Agora Protocol as a project in the commons.
- The author tries to follow the principle of charity.
- The author tries to use Agora protocol to communicate with clarity.
- The author tries to cooperate with others pro socially by default.
- The author tries to help others whenever possible.
- The author proposes we extend Agora Protocol with feature requests contributed as agora rfcs.
- #push values
- A free, distributed internet.
- Freedom of information.
- A world without poverty or violence.
- #pull manifesto
Intents in Agora protocol can be interspersed in long form writing, in which case they can act as human-readable metadata.
They are meant to be cheap to write, and conducive to running experiments. RFCs are specified by nodes declaring themselves to contain an Agora RFC; a number might be provided by an Agora, but at present time there is no mechanism for allocating numbers except claiming one by pushing an RFC to it in the Agora of Flancia (or any other trusted root). Conflict resolution is done by the community of the Agora. To put it bluntly, an Agora is its own numbers Czar13.
Agora RFCs might be of varying length and detail, spanning in length from that of common IETF RFC to a tweet or toot describing a social custom to be considered by the community. RFCs which are judged promising by a community will generate and can be expounded about at greater length by the interested community and potentially worked upon in a Stoa.
An Agora Action is a hint left in some medium by a user of Agora Protocol for the Agora. The purpose of the hint (its nature) is defined by the action; in general, though, Agora actions can be seen as lightweight contracts between an Agora and its authors. Invocations of an action are interpreted as intents.
The sections below should clarify this.
Go links provide an interesting base case to study in the field of provisioning and (pro socially) exploiting14 a knowledge commons. Put simply, go links are named social bookmarks -- strings of text (usually slugged, but not necessarily) associated with URLs by users in a community of practice.
Go links are a cognitive tool which was developed in Silicon Valley corporations and has the potential to spread and provide utility at internet scale. As cognitive artifacts they have a meaningful complementary component, which makes them interesting as a case study of Agora RFCs regardless of primary utility of application.
As an Agora action, the contract provided by Go links is as such:
- When you tag a URL with #go or go by placing said links previous to it in your writing, an Agora will interpret this as an intent to create a Go Link and provision and provide one for you on querying.
- An example:
The primary utility of Go Links, regardless of implementation details, is high. In a go links rich environment, users can depend on other users to have defined canonical links for named entities; that is, collections of specially relevant resources to the terms at hand, as shared in a commons.
Go links provide an individual function.
- They allow the user to associate a (usually short) string with a resource of interest, and then recall it from any computing with network access with a short deterministic flow.
- At companies supporting go links, typing go/ in the browser address bar is usually sufficient to be redirected seamlessly to the target resource.
Go links provide a social function at low or no additional cost.
- The trivial extension case for them is social bookmarking; even with invidivuals (not groups) claiming go link space recall of links spreads through a community of practice.
- Sharing documents becomes simpler by definition in a community of practice that is go links aware. Instead of locating a resource and invoking a sharing flow to share, users are able to say to each other 'go thisdoc' (meaning either go/thisdoc or go/this-doc by convention), effectively transferring a URL in spoken word very efficiently, depending only on a previously understood mechanism to resolve such links (at a well known point, ideally a schelling point).
#push is an Agora Action. Its effect can also be described as transclusion, but in the opposite direction: whereas Pull will transclude a remote context in the current context, Push will transclude the current context in a remote context. Push can be thought of as publishing to a topic in a PubSub system.
#push takes a node, a node/heterarchy or a URL. The meaning of pushing to a node is to publish the blocks or context in the destination node; the reference Agora publishes them in a similar format to local resources, either preceding them or after them depending on configuration. The meaning of pushing to a heterarchy (or "path") is to request attaching the resource or context at a point of insertion identified by the heterarchy as an anchor, if one is found (essentially allowing to fine tune placement).
In an Agora, section headings may push the whole section to mentioned nodes.
This section explores possible further applications in the social and knowledge spaces in the form of a series of short essays.
Provisioning meaning together with federated heterarchies
- An Agora supports taxonomies in principle but mostly provides a set of basic tools to converge on meaning best effort through social processes based on federated heterarchies.
- Agora trees, meaning by default outliner mode text with wikilinks, hint at sections containing Agora Protocol.
- Agora RFCs allow a distributed Agora community to extend the base Agora Protocol for more efficient commoning using atomic proposals.
- TODO: (Details on an open source algorithm for ranking and filtering based on the above go here.)
- TODO: (Details on eventual convergence as a phenomenon to be studied.)
An Agora tries to solve all of these based on social signals contributed to the commons:
- equivalence classes
- It is well known15 that links provide a strong signal for relevant and notability in graph like systems.
- #uprank is an explicit Agora Protocol action that takes a subnode or user and hints at an intent to rank them more highly than the current resource.
- #pull can be used as a ranking hint as well: if x pulls y, y is more likely to be roughly as relevant as x in any contexts in which x is relevant.
Collaborative world building
- We seek to provision and maintain a distributed knowledge graph tailored specifically to the goal of solving problems: those of its users and society at large.
Its users, as a cooperative group, are promped to take a naive but rational and constructive approach to problem solving by default:
For each problem in the set
Pof all problems:
- Describe it as thoroughly as possible.
- Maintain a set of known and supported possible solutions,
For each solution in
- Describe it thoroughly as an algorithm, a dependency graph or both.
- Maintain a set of resources (people, time, attention, wealth) needed to implement it,
Individual users can also declare their views on the state of the world explicitly: they define which subsets of
Rthey agree with, in the sense that they believe they are feasible, true, interesting.
- Users that agree on their defined subsets can then efficiently collaborate on solutions as they become available by pooling of resources.
- For each problem in the set
Assuming the existence of such a graph we apply some good old recursivity and bootstrap an Agora with the problem of building itself.
- That is, we are tasked with solving the problem of building a system that allows participating users and entities to collaborate optimally in the face of adversity (such as biases and irrationality), maybe only assuming good intent.
Once a week or a month (depending on the time of the year), the Agora community proposes a set of nodes to be provisioned loosely concurrently over the next period -- meaning nodes to be contributed to individually, at roughly the same time.
Solving coordination problems
- An Agora can be seen as a would-be Schelling point built around the principle of charity.
- An Agora can be used to solve coordination problems like those we need to solve to enable users to leave walled gardens and protect the commons against enclosure by anti disintermediating parties. It can be said to be a device for enacting counter anti disintermediation.
- #pull liquid democracy network flow
We seek to bootstrap a Universal Basic Income experiment using an Agora with a set of simple rules:
- If you consider yourself under-privileged, you sign up to receive an income.
- If you consider yourself over-privileged, you sign up to donate an income.
- Incomes are recurring donations for a set number of months.
Optional virality rule: the person receiving the income should elect to forward e.g. 10% of the sum received to someone less privileged than them.
- The virality rule both pushes network growth and constructively exploits wealth inequality and asymmetry of information: an under-privileged person is closer in the world to a more severely under-privileged person than the initial donor, so can more efficiently allocate the resources. This also empowers under-privileged people to also make ethical decisions.
- Flancia Collective runs experiments in this field using an Agora.
Market composition and regulation
A knowledge commons may be conducive to tackling the issue of regulating markets responsibly. A commons can essentially embed a federated network of ethical markets; the community of commoners can agree on the definition of such network and the rules which they which to enforce on transactions through the interface.
Commons can be seen to be well positioned to operate as meta-markets in a world (and internet) where markets, originally distributed in nature, have been coopted by corporations.
Application stores worldwide, the dominant bookseller in many countries -- all work as centralized markets that can impose high trading fees because of the lack of competition. It seems evident we must avoid this same scenario from reoccurring in the Tools for Thought space; a federated network is needed. But corporate profit driven interests are likely already dreaming of taking hold of the space; how can we stop them?
Simple, maybe: we must retreat up a level and build a healthy integration layer that pushes back against early efforts to build walled gardens around tools and their strong communities. We must build bridges out of walled gardens and into the commons and there provide services to users of a wide range of tools, and enable ethical corporations to use these bridges to also provide these services.
Agora Protocol example
#push agora protocol
- (Push can be used for writing child blocks to a remote context, as if broadcasting to a pubsub topic.)
- Based on lightweight conventions conducive to knowledge federation of supported data formats as described below.
- plain text as layer 0 (bootstrapping).
- wikilinks, #hashtags and other link conventions and annotation as part of layer 1.
Layer 2 being defined, the same as refinements to other layers, as extensions.
- If you are a member of an Agora, you can propose extensions to Agora Protocol by contributing to Agora RFCs.
- This should be sufficient to bootstrap a governance layer defined by each Agora.
- #pull agora rfcs
- (Pull instructs an Agora to incorporate a remote context into the current context, e.g. transclude or provision below.)
Layer 0: plain text.
- Plain text is ubiquituous.
- It is not only a common standard for all tools in the knowledge space, which simplifies interoperability; it is a common standard for thought as shown by thousands of years of preserved culture.
It can trivially encode outlines.
- It can be made to encode trees, like in this example.
- Indented bulleted lists designate a useful heterarchy.
It generalizes to binary data.
- It can be made to encode arbitrary data via application of uuencode or other encoding conventions.
Layer 1: markup and conventions for cross-referencing and linking.
- Markdown, org mode, HTML or other rich markups building on top of plain text belong to this layer.
- wikilinks and #hashtags seem like sensible cross-format extensions for semantic linking.
- Markdown plus wikilinks is the default Agora layer 1 format.
- More generally, this is an inline metadata layer. The above are just relatively unobstrusive generally available implicit standards that inline well.
Layer 3: JSON, EDN, RDF, protobufs.
- In general, data exchange formats.
- The Agora reference implementation currently provides JSON and RDF endpoints.
The Agora knowledge graph can be defined as a hypergraph
A with a set of
N (entities an Agora knows about) integrated out of subnodes
SN_0 .. SN_k, each containing subedges
SE_0 .. SE_k, aggregating into edges
E_0 .. E_k (semantic links between entities inferred from known subnodes). Edges are annotated implicitly by link context and explicitly via the use of agora protocol affordances, which is extensible and tries to build on existing conventions in the personal knowledge management space.
An Agora differs from other projects in the personal knowledge space in a few ways: whereas a personal knowledge graph usually contains resources authored or collected by a single person, and a wiki usually contains resources produced by a group, an Agora contains, integrates and interlinks both personal and group resources. Whereas links in a personal knowledge graph or wiki usually have a single target, Agora links fan out by default and can be thought of as queries mapping to sets of resources. This is consistent with a general design principle of facilitating storage and retrieval of entity-mapped information with a view toward removing friction from agreement and cooperation.
Building on these general principles and a free software3 reference implementation of the underlying protocols and data, we model and detail how to implement a distributed system that provisions social knowledge services ethically and sustainably with a focus on upholding data sovereignty principles. We then analyze some of the potential applications of such a system. Finally, we shortly explore future work and implications assuming that the Agora network is run as a confederated system for the public good.
Being built around a knowledge graph, an Agora can be defined as a set of vertices or nodes
N(each mapping to an entity in a knowledge base) and edges
E(each mapping to a relationship between entities, annotated by context).
An Agora node is a collection; it contains the set of all known resources about (or related to) the entity described by the node id, defaulting to its name as an arbitrary length unicode string.
- (But potentially overridden or extended with provided metadata and annotations.)
- In this paper each such resource attached to node
Nis known as a subnode
- Note that because links can be annotated by context (as they can be considered to be by nearby #tags and wikilinks), an Agora graph can be said to be a hypergraph 16.
- An Agora node is a collection; it contains the set of all known resources about (or related to) the entity described by the node id, defaulting to its name as an arbitrary length unicode string.
- This section covers details on the work-in-progress reference software implementation built on the principles described above, developed as free software and run as public service.
- The provided reference Agora is designed to be a minimum viable cooperative platform that integrates and complements personal knowledge graphs in particular and, more generally, any writing done with a social stance.
- Its guiding architectural principle being to build as much as possible on already existing conventions common to as many tools and platforms as it is possible with the aim to achieve maximal inclusivity and diversity.
Here we cover some details of the provided free and open source reference Agora which provides a minimum viable implementation of the underlay, interlay, and overlay components of a distributed knowledge graph17.
The reference Agora stands out from other projects in the knowledge graph space in a few ways:
- Whereas links in a personal knowledge graph or wiki usually have a single target (a particular note or page), Agora links fan out by default; targets can be thought of collections of resources.
- While a personal knowledge graph usually contains resources and links authored or collected by a single person, and a wiki usually contains resources provisioned by a group in (a priori) a shared voice, an Agora tries to integrate and interlink both personal and group resources while preserving distinct voices18.
- As of the time of writing, some personal knowledge graph tools are exploring collaborative editing in format- and platform-specific ways. In contrast to this, the reference Agora described in this chapter tries to be tool, format and platform agnostic to maximize interoperability and data exchange and provide utility to users of many tools and systems. This is achieved by targeting a minimum viable set of cross-tool conventions.
The reference Agora is a simple distributed architecture based on off the shelf components.
- agora root is a git repository containing the Agora definition, meaning a base contract which sets the tone and high level goals of the Agora, and a list of data sources to be recurringly integrated.
agora bridge is a git repository containing connectors and importers for supported data sources.
- User controlled git repositories are the default data source.
- agora server provides a UI supporting querying and composition and json, rss, rdf endpoints.
Data ownership model
The Agora platform, although strictly rooted in web 1 principles in its reference implementation as of the time of writing, is based on a strictly distributed model: by default users are entities that inform an Agora of repositories they want to contribute to the commons. As such, an Agora is trivially distributed in the sense that all data required to bootstrap it is hosted independently by users at independent locations19.
Users can contribute repositories to an Agora.
- To do so, they publish their resources to a repository they control and then they let an Agora know of their intention to integrate, a desired username and their agreement with an Agora's contract.
- git repositories are the default data source, with other repository providers (http, ipfs, drive, dropbox) to follow.
Users can contribute individual resources to an Agora.
- As of the time of writing they can interact with an Agora system account (i.e. bot) in supported platforms like twitter and mastodon while indicating nodes they want to attach to using a Layer 1 convention.
- (Soon they will be able to submit this information directly on the agora server provided interface.)
Whenever a user signals opt in to remote writing (bridging, siphoning, cross posting), an Agora does its best to guarantee user data ownership.
- By default, an Agora will not store data for the user if it the user has not signaled a strong enough intent to write full data. Instead, an Agora will try to link to resources only in matching contexts, allowing users to recover resources without meddling in data management (see go links study case).
Whenever it does write data, an Agora will try to provision a separate repository per user and try to turn data management into a user's concern at the user's earliest convenience.
- To put it another way, an Agora actively tries actively to own no data, preferring instead to act as a temporary data steward of the users' repositories.
- When an Agora sets up a repository for the user, as in the case in which the user requests to write without having previously indicated their repositories, the Agora will try to set up repositories in such a way that turn-key full access can then be given over to the user on demand.
- Inasmuch the user depends on services associated with an Agora for repository hosting, an Agora tries to trees repositories as instances of pods in the Solid20 sense.
This section triers to summarize the endpoints that Agora server provides and plans to provide.
Agoras can define mappings from these to URL schemes generalizing to isomorphic REST-like APIs using
- GET /<context> -> by default the same as /node/<context>, might be overridden with a more particularly useful context
- GET /node/<node> -> entity resolution, node can be percent-encoded
- GET /nodes -> lists known entities in canonical form
- GET /@<user> -> provides details about a user and the subnodes in their repositories.
- GET /users -> lists users
- GET /search?q=<query> -> generally redirects to /node/<node>?q=<query> with node being a maximally useful context while preserving fidelity with the percent-encoded query string
- GET /feed/@<user>
- GET /feed/<node>
- GET /feed/journals
- GET /feed/journals/@<user>
- GET /go/<node>
- GET /go/<node1>/<node2>
- meta TODO: move these to IPA? :)
- #pull elinor ostrom
- #pull murray bookchin
- #pull christopher alexander
- #pull how can we develop transformative tools for thought
- #pull hans widmer
Thanks and farewell
To my friends: for your ongoing love and support.
To you: for reading.
To all the Agora builders and maintainers through history, including those of the motivating historical poleis and those who will build Agoras for the peaceful cities and countries of the future.
Finally, some friendly parting words: if you don't like this Agora, rest assured that's perfectly alright -- it is early stage. The Agora of Flancia is open source; these projects have Apache and Creative Commons licenses respectively. Please consider improving them!
The provided reference Agora tries to remain tool, format and platform agnostic, building on general conventions common to many tools and platforms in the knowledge space for ease of integration and maximal inclusivity22 and diversity23. ↩
As per Matuschak and Nielsen (2022), Kenneth Iverson seems to be the source of the currently dominant blanket term "tools for thought" -- although I can report he didn't use it in his seminal paper, preferring instead "tools of thought". I use these two interchangeably, maybe preferring the latter due to it giving thought agency.↩
As of the time of writing the reference Agora can't publish to fedwiki, but can import fedwikis into the Agora Commons as repositories.↩
indentation is sufficient↩
An Agora is part of the Fediverse.↩
TODO: find paper or good up to date reference.↩
"Stephen Wolfram likes them." -- see for example https://www.wolframphysics.org/technical-introduction/.↩
as of the time of writing, GitHub is the most popular git host, but not by much (TODO: percentage goes here). This is likely suboptimal as it undermines the claim of the resulting knowledge commons of being truly distributed, and can be seen as an instance of the (anti-)pattern Anti Disintermediation.↩