1 of 36

Look, an [[Agora]]!

]

2 of 36

Meta

  • This is anagora.org/go/agora-slides.
    • In Agora parlance, this means that action #go will redirect to this slide deck when applied to node [[agora slides]] as of the time of writing.
  • 2021:
    • Presented the original version of this deck (see anagora.org/agora-slides for history) in I Annotate.
  • 2022:
  • 2023:
    • Internal version (fork) produced and presented to Workspace SRE.
    • Next presenting this deck to the Fellowship of the Link during September.

3 of 36

What is an Agora?

An Agora is a [[commons]] defined by a community both explicitly and by convention. It has several facets:

  • It is a space.
    • Public, mostly virtual, with semi-public subspaces (“stoas”.)
    • Containing, but going beyond, markets: for the common good :)
  • It is a distributed knowledge graph.
    • Assembled out of crowdsourced entity-mapped resources like notes, posts and annotations.
  • It is a social network.
    • The integration of the social graphs described in the knowledge graph and the networks otherwise federating with the commons.

Fig.: Athenian Agora ca. 150 CE.

4 of 36

Why build an Agora?

As of 2023, the pro-social subsets of the internet, including its social and knowledge spaces, would benefit from the wide availability of a free [[interlay]] provisioned and governed by a community as a commons.

The Agora project seeks to develop tools and instructions to facilitate the emergence of such a connective layer.

Fig.: early representation of an Agora.

5 of 36

Vision, continued

The note taking, wiki building and web annotating communities seem to have an unique opportunity at hand: it still seems possible for these communities of early adopters to self-organize in cooperative groups and set up tools and workflows that federate within a commons, thus protecting against vendor lock-in, enclosure and the lure of centralized/hierarchical systems in the knowledge space.

This seems conducive to the goal of preserving knowledge independence for future generations regardless of the direction preferred by the corporate internet.

Fig.: early representation of an Agora.

6 of 36

Design principles

The reference Agora tries to be as simple as possible (but no simpler) conceptually and in its basic architecture, even if that means initially presenting as complex elsewhere (like in its UX and onboarding process).

We try to leverage existing conventions and formats whenever possible to keep the cost of integrations low.

Our core intent is to bootstrap a simple Agora that helps interested communities in their pursuit to build better Agoras.

7 of 36

Key characteristics

From the preceding statements, a few of the characteristics of the reference Agora seem to naturally follow:

  • It is free software enabling a community to provision a (basic) knowledge commons.
  • It tries to require little of would-be integrators and give back generously to participating communities.
  • It tries to be inclusive and make use of existing conventions, formats, tools and networks for as long as it is practicable.

Fig.: Agora Server in 2021.

8 of 36

Architecture

9 of 36

Nodes are social

Nodes are a key Agora concept. They are locations in the knowledge graph assembled from resources contributed by many users.

In an Agora, links are social by default, meaning that a single resource linking to another resource is sufficient to build a node-to-node connection.

10 of 36

Nodes are social

See https://anagora.org/nodes for a visualization of all nodes in the reference Agora of Flancia.

Common patterns: digital garden note, blog post, personal wiki page, journal, node club.

Fig.: the Agora of Flancia as of 2023.

11 of 36

Stoas are social too

Stoas, in the Agora, are locations that act as semi-public spaces for the purpose of collaboration – and can usually be embedded.

Common patterns: shared document, video/chat space, group wiki.

Fig.: One stoa for node [[fellowship of the link]] as of 2023.

12 of 36

There are many stoas

Their name was inspired by the [[Stoa Poikile]] but, as was the case with the Agora of Athens, there are many stoas.

To the right, an Etherpad-based stoa in the reference Agora.

13 of 36

How to join

You take notes using the tool of your choice and optionally submit them to an Agora for integration.

Or you can join the Fediverse or Matrix and follow an Agora bot.

Or you can just contribute to a Stoa near a particular Agora node :)

Fig.: pseudo-404/default call to action as of 2023.

14 of 36

How to join: for note takers

An Agora makes no claim of ownership over any user data. All data can remain in control of users and their platforms of choice. This makes publishing to an Agora a three step process:

  1. You take notes using your preferred tool.
    1. Shown to the right are [[foam]], [[obsidian]], [[roam]] and [[logseq]]. These can all directly produce Markdown or export to it; other tools and formats are supported. See [[agora editors]] for more.
  2. You publish a subset of your notes in a platform of your choice. The default is git.
    • Filenames, if available, are assumed to encode an entity.
    • Wikilinks in content can be used to aid entity mapping and signal other relations.
  3. You let an Agora maintainer know about it, indicating also your username of choice and your acceptance of the Agora's [[contract]].

1

2

3

15 of 36

Agora Editors

Many are supported; any that generate Markdown plus [[wikilinks]] is sufficient.

This is [[foam]], fully open source.

16 of 36

Agora Protocol: building by convention

An Agora is built upon optional conventions for [[linking]] and #tagging yielding the so-called Agora Protocol of any given Agora.

  • #push [[Agora Protocol]]
    • Built upon public declarations of intent of users in a [[Commons]].
    • Bootstrapped on a semi-formal set of rules for incrementally better [[discourse]] (leading to [[thought]]) and [[cooperation]].
    • Currently implemented as a semantic layer on top of widely available markup, such as: (lists), [[links]] and #hashtags.
    • See also: [[wikilinks everywhere]].

17 of 36

Wikilinks everywhere

The Agora project tries to embrace the [[wikilink]] as a lightweight convention for distributed sense-making in its goal to build and provide common functionality for the benefit of all interested communities.

In an Agora graph:

  • Nodes map to entities, which are in identified by their [[wikilink]]: a unicode string usually notated between square brackets.
  • Edges are [[wikilinks]] referring to other nodes as found in volunteered subnodes.
  • Nodes can be composed; composition of nodes can yield specialized functionality, as is the case with Agora actions.

18 of 36

Agora actions

Supported actions as of the time of writing:

  • [[go]]
    • If you write #go <url> in node [[foo]], [[go/foo]] will redirect to <url>
  • [[pull]]
    • If you write #pull [[bar]] in [[foo]], visiting [[foo]] will also bring in resources in [[bar]].
  • [[push]]
    • If you write #push [[bar]] in [[foo]], visiting [[bar]] will show the locality of the push from bar.

Fig.: more old school Agora, vintage 2021.

19 of 36

End of the talk

  • This is the end of this talk. Thank you for listening!
  • There is much we couldn't cover, including:
  • Remember that you can resolve links and use actions anytime on anagora.org.
    • In particular can use [[go/agora-slides]] for jumping to the most current version of this slide deck.
  • For a 20-pager on the Agora in depth, please refer to [[go/agora-chapter]].
  • Please reach out to a member of the [[flancia collective]] if you have any questions!

20 of 36

Glossary of the Agora in [[underlay]] project terms

  • Underlay
    • [[digital gardens]]
    • [[blogs]]
    • [[social media accounts
    • In general, repositories
  • Interlay
    • [[agora root]]
    • [[agora bridge]] (ingestion)
    • [[agora server]] (integration)
  • Overlay
    • [[agora protocol]] (convention)
    • [[agora server]] (rendering)

21 of 36

How nodes are built

An Agora node is a collection of subnodes related to a particular entity. In this example, there are two subnodes for entity [[decentralized]]: a PNG file and a Markdown file.

The Agora renders subnodes sequentially, sorted by an open ranking algorithm and according to user preferences.

22 of 36

How does it work?

Our Agora is built around few common building blocks: notes repositories as bootstrapping corpora, the [[wikilink]] as an integration primitive, and a set of optional lightweight conventions for sense making.

  • We assemble a [[distributed knowledge graph]] from users' notes, web annotations (alpha) and social media activity (coming soon) and present it as a social wiki-like construct.
    • Nodes map to entities, which are in identified by their [[wikilink]]: a unicode string usually notated between square brackets. They are composed of subnodes: notes and resources that users thought relevant to the entity at hand. All notes by all users are presented sequentially when a user visits a node context.
  • Edges are [[wikilinks]] referring to other nodes as found in volunteered subnodes. They are labeled by context, e.g. by adjacency or proximity to other links. This gives the graph hypergraph-like qualities, which will be expounded on later.
  • We see ourselves as hosting also an [[experimental social network]] inspired by the internet around the year 2000.
    • Wikis, Livejournal, Everything2; but also the newer [[fedwiki]], [[pkm]] and [[dweb]] movements.
  • We are trying to build a [[commons]].
    • Our vision is that of a subset of cyberspace that tries to maximize mutual understanding and interoperability, seeks to provide a platform for cooperation on projects of public utility, and is administered by its community.

Note anagora.org is just an Agora: that is, it is a reference implementation run by the [[flancia collective]] as a public utility.

23 of 36

What is an Agora?

An [[agora]] is:

  • A crowdsourced [[distributed knowledge graph]] assembled out of volunteered entity-mapped information.
    • In particular, anagora.org is a collection of [[digital gardens]], blogs, personal knowledge graphs and other volunteered corpora amenable to be integrated into a wiki-like construct.
    • In Project Underlay's terms it is mainly an [[interlay]] plus a set of reference [[overlay]] components to explore.
  • An experimental social network.
    • Because the information volunteered by users is produced in a social context and can also be directly about people, its knowledge graph contains a social graph.
  • A public space that is run as a commons.
    • Our vision is building a subset of cyberspace that:
      • tries to maximize mutual understanding and provide a platform for cooperation on projects of public utility.
      • is defined as an explicit set including optional conventions and protocols.
      • is administered by its community.

24 of 36

Context

Links to and from a node define a context.

The example is the context for [[protopoi]].

Aside from incoming ("back") and outgoing ("forward") links, the agora currently supports two other kinds of links: [[push]] and [[pull]]. More on those later.

25 of 36

Agora Search

26 of 36

Graphs

In lieu of nice graphs, please accept RDF :)

https://anagora.org/turtle/node -> renders the node context (in/out/push/pull links)

The whole Agora crashes all RDF graphers I've tried so far.

Working on adding client-side rendering to anagora.org proper.

27 of 36

Functionality (as of [[2021-04-07]])

  • As an agora reader you can currently:
    • Navigate the agora, which is composed of [[nodes]] which aggregate content from many users about the same topic or [[entity]].
    • Make use of [[backlinks]] and limited forms of [[transclusion]] to discover or build a network of relevant content.
  • As an agora user you can:
    • Have your content be surfaced to readers at relevant times (when they are visiting a [[node]] for which your content is considered relevant by the community).
    • Have relevant content be surfaced to you as you traverse your [[personal knowledge graph]].
    • Make use of [[agora actions]] (more on these next).
  • Anyone can run an agora of their own if they so desire. The agora is [[open source]].
  • anagora.org will focus on trying to be a useful generic platform for [[cooperative problem solving]].

28 of 36

Functionality (planned)

  • [[wikilinks everywhere]]
    • Leading to [[agora protocol]]
  • [[moa]] integration
    • [[tabfs]] integration
      1. Browser tabs sync; save and restore tabs fitting a certain [[context]].
    • [[hpi]] integration
      • Keep a backup of all your personal data around all the sites you use.

29 of 36

Stack

  • An [[agora]]
    • Consists of
      • [[agora server]] (renderer implementation)
      • [[agora repository]] (distributed knowledge graph)
    • Takes input from
      • [[agora clients]]
        • Exchange format is [[markdown]]
        • Default source is any [[git]] repo
      • [[agora bridge]] (in progress)
    • Works with
      • [[agora protocol]]
        • [[wikilinks everywhere]]

30 of 36

Experiments

  • [[agora actions]]
    • [[go]]
      • A 'named redirect'.
      • Can be simple or composite. See [[iap21]] for examples.
    • [[push and pull]]
      • Looking for a 'minimal set' of operations that might suffice for implementing transclusion, ranking and semantic coalescing.
      • [[pull]] is like an include.
      • [[push]] is a transclusion operation.
  • [[agora search]]
    • The potential topic of a separate talk :)
  • [[agora recipes]]
    • The topic of the remaining slides
    • I use [[cake]] as a placeholder/metasyntactic variable :)

31 of 36

Study case: [[agora recipes]]

  • Description
    • A repository of [[recipes]] built on top of an [[agora]] or any [[agora like]] platform.
  • Prior art abundant in the wiki space
  • Same in blog space
    • Many commercial blogs, SEO optimized and stuffed with ads
  • Questions
    • What could be interesting functionality to explore in a new project in this space?
    • What could be useful [[units of collaboration]]?

32 of 36

Study case: [[agora recipes]]

Definitions

  • Recipes are procedures to transform [[ingredients]] and [[time]] into tasty and nutritious [[food]].
  • A [[recipe]] is a possible [[solution]] to a [[problem]] (you don't have cake yet you want cake; here's how to produce cake).
    • It includes a set of requirements or [[dependencies]].
      1. [[time]]
      2. [[ingredients]].
      3. Sometimes [[skill]].
    • It includes an [[algorithm]].

33 of 36

Study case: [[agora recipes]]

  • Units of collaboration
    • Add a recipe (of course)
      • Implementation: contribute a subnode to [[cake]]
    • Review a recipe
      • Implementation: via ranking of subnodes (as a proxy)
  • Read only use cases
    • You can jump to a "hosted" (in-agora) recipe for [[cake]].
      • Implementation: already possible if users agree to submit cake recipes to node [[cake]], or pull/push them there.
    • You can jump to a known-good off-agora recipe for [[cake]].
      • Implementation: already possible using [[go links]].

34 of 36

Study case: [[agora recipes]]

  • Units of collaboration
    • Mutate a recipe (experiment)
      • Implementation: perhaps submit a subnode with the mutation and push it to the original (this links them) with a description of the result
    • Suggest a mutation (experiment)
      • Implementation: as per the above but linking it to a well-known node that tracks 'pending work'
    • Simplify a recipe (experiment)
      • Remove a step in a recipe and see what happens (™), ideally with a [[control]]
  • Use cases
    • Find which recipes, proven or experimental, map to the ingredients you have
    • Find a [[platonic recipe]]
    • Find someone’s notes taken while executing a copyrighted/non freely available recipe

35 of 36

anagora.org at a glance

36 of 36

Case studies