Status
- This document was mostly written in 2018. The Agora was then just a thought experiment. It has since grown to be a living project.
- As late as 2020-10-17, the Agora barely existed as a concrete implementation -- it was not a single tool but rather many which you could use in tandem following a convention, which I provisionally named Agora Protocol.
- As of 2022-01-02, a reference Agora is online on https://anagora.org . Using terminology gained and derived in the last three years (with the help of the Agora community!), I can now describe it as a [[knowledge commons]].
Regardless of implementation details, an Agora can be assembled out of off-the-shelf parts available on the internet, mostly for free:
- Knowledge management tools used for the purpose of building a distributed knowledge graph, following the aforementioned convention based on lazily evaluated [[wikilinks]]. See https://anagora.org/agora-editor for a review of some of the tools in this space, or Roam Likes for an older take.
- Social networks and the constructive bits of the internet as we have them, annotated and enriched using open tools and standards.
- An explicit constructive social contract. For reference you can consult the anagora.org default.
If you are interested in collaborating on building Agoras or similar constructive spaces, please reach out or peruse the Git repository.
See also: https://flancia.org/go/agora-howto , https://threadreaderapp.com/thread/1322619094563258370.html.
Head
You can think of the Agora as a convention based social network; an optional, user-controlled annotation layer that can be applied over any internet platform which supports user-generated content.
I think one of the best possible uses for such a network would be to use it to pro-socially 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, could by default take a naive but rational approach to problem solving:
-
For each problem in the set P of all problems:
- Describe it as thoroughly as possible.
- Maintain a set of known or argued possible solutions, S(P).
-
For each solution in S(P):
- Describe it as thoroughly as possible.
- Maintain a set of resources (people, time, attention, money) needed to implement it, R(S).
Individual users could also declare their views on the state of the world explicitly: they define which subsets of P, S and R they 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.
We apply some good old recursivity and seed the Agora with the problem of how to build itself. That is, how to build a system that allows participating users and entities to collaborate optimally in the face of adversity (such as biases, irrationality and even actual ill intent)1.
The Agora should be built on a federated protocol to limit the harmfulness of diasporas. Groups might temporarily diverge in their views enough to want to run separate Agoras, but different Agoras should be able to cooperate on problems and solutions for which there is enough ideological alignment, and eventually merge.
Tail
I have a more focused and detailed unpublished document which will probably replace or complement this chapter soon.
I know the premise sounds almost like a joke: what the world needs is a new social network. The internet and social networks are technologies we are just barely learning to live with, and the recent cause of a lot of polarization and political escalation and Trump Being President2. It doesn't sound at first like we should add another stick to that particular dumpster fire. But hear me out.
We need a designated place in the internet where we can discuss ideas in a constructive way. In particular, where we can discuss possible strategies to face the problems that humanity is facing. This is already happening, for sure; but is it happening somewhere on the internet where everybody can contribute? I don't think so. If the Agora exists already, please point the way -- I'd like to get there, and building it from scratch would be hard. The network of universities and institutes are the closest we have and I love them, but the Agora should be fully open and available to all over the internet, so every participating individual can contribute work and thought. Of course the whole internet could be an Agora; but the internet as a whole is chaotic and disorganized and thus its implicit Agora is entangled with places that are not constructive and not safe. There must be a better way.
Nick Bostrom has a paper on existential risk where he talks about a kind of lottery of ideas; humanity is constantly playing this game, the metaphor goes, and drawing ideas out of big lottery wheels of Science and Technology and Culture. Some of the balls in this wheel are colored white; these are good ideas. They contribute to human good, and we're glad we found them.
There are also black balls, though. These are bad3. They are things that, on the whole, produce enough bad to be existential risks to humanity. Nuclear power seemed to be this for a while; perhaps mutually assured destruction could have resulted in an apocalypse. But it didn't! Aren't we lucky? If (and it's a big if) things stay this way, we got away with playing with something dangerous. Perhaps we can use the idea for whatever good it holds (cheap and relatively safe energy), or perhaps we decide to bury it underground in a big vault of ideas (this one doesn't have to ever spin again) that says Do Not Go There, Trust Us. For now, though, the idea might still turn out to be black; we could, perhaps, represent this situation as a grey ball of whatever shade we deem most likely.
We need a social network for discussing ideas. For talking about Bostrom's lottery urn, and what it has in it for us. In the Agora, we discuss ideas and their shades and merit; we discuss, first and foremost, ethics. We talk openly and clearly about how to best move forward as a society of humans, with the knowledge we've gotten and the resources we have.
What if social networks are grey? How dark is their shade? The high modernist in me wants to believe that the structured flow of information is more of a good thing than a bad thing. But we need to be cautious, and this is why I wrote this and you are reading it now.
I need your help.
In Flancia there is no poverty.
-
To start with, discussion in the Agora should follow the tried and tested Principle of Charity.β©
-
what if Twitter is already a decent Agora, and Trump just woke up to the fact that it's a superior meme transfer device sooner than others?β©
-
White = good and black = bad is in the original paper. Now, an apology: I don't like the fact that our culture encodes bad things as black, it's associated with death, etc. I think associating black with badness is a bit trite in a world that puts so much stock on being a particular kind of yellow.β©
-
#push [[agora]]
- #push [[agora writing]]
-
#push [[agora development]]
-
set up local dev environment in the train
- I like [[poetry]].
-
[[better search]]?
-
what's a quantum of better search? it's pretty bad right now; e.g. [[poetry install]] would not bring up [[install poetry]]
- would re-adding fuzzy matching fix this?
-
should I implement a simple search algorithm myself for the purpose of understanding how to solve this?
- tokenization -> compute combinations is trivial but expensive
-
-> [[bag of words]] is cheap
- this actually requires defining what is the source of truth for [[equivalence class]] and for [[proximity]] between nodes
-
I've always wanted to think of Agora search as as an exploration within a certain [[radius]] of an inferred center of gravity; maybe this is distance in some embedding?
-
-> [[edit distance]]
- seems like an interesting approach to explore next
-
-> [[edit distance]]
- [[auto pull wikipedia]] sort of also tackles this in a totally different direction, in particular if we extend it to [[wikidata integration]]: if wikidata surfaces an entity for us, volunteer its type; if the entity is far from the current node in an interesting way, maybe [[auto pull]] it as well after some time.
- if I'm adding auto pull maybe it's time to make [[settings]] clearer, in particular have an easy toggle for auto pull to trigger or not (leads to [[agora autopilot]] maybe, which I've always thought could be very fun.)
-
what's a quantum of better search? it's pretty bad right now; e.g. [[poetry install]] would not bring up [[install poetry]]
-
set up local dev environment in the train
-
#push [[agora]]
- #push [[agora writing]]
-
#push [[agora development]]
-
set up local dev environment in the train
- I like [[poetry]].
-
[[better search]]?
-
what's a quantum of better search? it's pretty bad right now; e.g. [[poetry install]] would not bring up [[install poetry]]
- would re-adding fuzzy matching fix this?
-
should I implement a simple search algorithm myself for the purpose of understanding how to solve this?
- tokenization -> compute combinations is trivial but expensive
-
-> [[bag of words]] is cheap
- this actually requires defining what is the source of truth for [[equivalence class]] and for [[proximity]] between nodes
-
I've always wanted to think of Agora search as as an exploration within a certain [[radius]] of an inferred center of gravity; maybe this is distance in some embedding?
-
-> [[edit distance]]
- seems like an interesting approach to explore next
-
-> [[edit distance]]
- [[auto pull wikipedia]] sort of also tackles this in a totally different direction, in particular if we extend it to [[wikidata integration]]: if wikidata surfaces an entity for us, volunteer its type; if the entity is far from the current node in an interesting way, maybe [[auto pull]] it as well after some time.
- if I'm adding auto pull maybe it's time to make [[settings]] clearer, in particular have an easy toggle for auto pull to trigger or not (leads to [[agora autopilot]] maybe, which I've always thought could be very fun.)
-
what's a quantum of better search? it's pretty bad right now; e.g. [[poetry install]] would not bring up [[install poetry]]
-
set up local dev environment in the train
-
#push [[agora]]
- #push [[agora writing]]
-
#push [[agora development]]
-
set up local dev environment in the train
- I like [[poetry]].
-
[[better search]]?
-
what's a quantum of better search? it's pretty bad right now; e.g. [[poetry install]] would not bring up [[install poetry]]
- would re-adding fuzzy matching fix this?
-
should I implement a simple search algorithm myself for the purpose of understanding how to solve this?
- tokenization -> compute combinations is trivial but expensive
-
-> [[bag of words]] is cheap
- this actually requires defining what is the source of truth for [[equivalence class]] and for [[proximity]] between nodes
-
I've always wanted to think of Agora search as as an exploration within a certain [[radius]] of an inferred center of gravity; maybe this is distance in some embedding?
-
-> [[edit distance]]
- seems like an interesting approach to explore next
-
-> [[edit distance]]
- [[auto pull wikipedia]] sort of also tackles this in a totally different direction, in particular if we extend it to [[wikidata integration]]: if wikidata surfaces an entity for us, volunteer its type; if the entity is far from the current node in an interesting way, maybe [[auto pull]] it as well after some time.
- if I'm adding auto pull maybe it's time to make [[settings]] clearer, in particular have an easy toggle for auto pull to trigger or not (leads to [[agora autopilot]] maybe, which I've always thought could be very fun.)
-
what's a quantum of better search? it's pretty bad right now; e.g. [[poetry install]] would not bring up [[install poetry]]
-
set up local dev environment in the train
-
#push [[agora]]
-
#push [[agora development]]
- ship [[agora graph]] in some version?
-
[[dynamic subnodes]], sometimes also known as [[executable subnodes]]
- ship executable subnodes with allowlist?
- start on [[client side subnodes]], meaning [[javascript]] in gardens :)
- easy improvement: I want to adjust the node/subnode icons back to what they were one or two months ago; a stack for a node made sense, whereas the current red book for node is puzzling.
-
#push [[agora chapter]] next steps
-
read George's email.
-
end of week as deadline for all, then we need to....
- work on updated abstracts and...
- start on the Markdown port.
-
end of week as deadline for all, then we need to....
-
read George's email.
-
#push [[agora development]]
-
#push [[agora]]
-
#push [[agora development]]
- ship [[agora graph]] in some version?
-
[[dynamic subnodes]], sometimes also known as [[executable subnodes]]
- ship executable subnodes with allowlist?
- start on [[client side subnodes]], meaning [[javascript]] in gardens :)
- easy improvement: I want to adjust the node/subnode icons back to what they were one or two months ago; a stack for a node made sense, whereas the current red book for node is puzzling.
-
#push [[agora chapter]] next steps
-
read George's email.
-
end of week as deadline for all, then we need to....
- work on updated abstracts and...
- start on the Markdown port.
-
end of week as deadline for all, then we need to....
-
read George's email.
-
#push [[agora development]]
-
#push [[agora]]
-
#push [[agora development]]
- ship [[agora graph]] in some version?
-
[[dynamic subnodes]], sometimes also known as [[executable subnodes]]
- ship executable subnodes with allowlist?
- start on [[client side subnodes]], meaning [[javascript]] in gardens :)
- easy improvement: I want to adjust the node/subnode icons back to what they were one or two months ago; a stack for a node made sense, whereas the current red book for node is puzzling.
-
#push [[agora chapter]] next steps
-
read George's email.
-
end of week as deadline for all, then we need to....
- work on updated abstracts and...
- start on the Markdown port.
-
end of week as deadline for all, then we need to....
-
read George's email.
-
#push [[agora development]]
-
#push [[agora]]
- [[agora recipe]] for [[coop cloud is taking shape \o/
- https://link.agor.ai is live in basic form, tweaking upcoming
-
#push [[agora]]
- [[agora nugget]]
- [[agora chapter]]
- [[an open letter to the agora]]
-
#push [[agora]]
- an [[agora]] is a seed that wants to grow into a [[tree]], and from there into a [[distributed]] network.
- the [[seed]] of this agora is [[go/agora/git]], defining a [[commons]].
- [[flancia collective]] is the keeper of https://anagora.org.
- [[agora bridge]], [[agora server]] contain input (write) and output (read) code respectively.
-
#push [[agora]]
- an [[agora]] is a seed that wants to grow into a [[tree]], and from there into a [[distributed]] network.
- the [[seed]] of this agora is [[go/agora/git]], defining a [[commons]].
- [[flancia collective]] is the keeper of https://anagora.org.
- [[agora bridge]], [[agora server]] contain input (write) and output (read) code respectively.
-
#push [[agora]]
- An Agora is an engine for storing and retrieving [[mental contexts]].
- I make my mental contexts [[public by default]].
-
[[push]] [[agora]]
- fix toggle switch for [[auto pull]]
- implement [[auto pull]]
-
implement [[auto push]]
- probably requires [[agora protocol parsing]] to make efficient/reasonable
-
client side pulling
- done for: mastodon, twitter, wikipedia
-
need to test general URL pulling, see how many sites allow iframes
- test with flancia.org
-
improve [[agora graphs]]
- I like what logseq does: show link direction as particles. push/pull could be different particles. hmm. particle diagrams. check out [[feynman]] for inspiration?
- could get inspiration from some diagrams in [[a rosetta stone]]
-
[[wikilinks everywhere]] -> [[agora ext]]
-
I really want to move wikilinking to on-demand (push button/ctrl-shift-l) or cronjob-like behaviour but right now it just wikilinks everything every time you click, and some sites break
- this is already better after a quick PR to linkify on click instead of mouse movement
- twitter still sort of breaks though
- [[vera]] is on this though
-
I really want to move wikilinking to on-demand (push button/ctrl-shift-l) or cronjob-like behaviour but right now it just wikilinks everything every time you click, and some sites break
- [[agora server]]
-
parse agora protocol
- recognize (match) and style differently
-
[[push]] [[agora]]
- fix toggle switch for [[auto pull]]
- implement [[auto pull]]
-
implement [[auto push]]
- probably requires [[agora protocol parsing]] to make efficient/reasonable
-
client side pulling
- done for: mastodon, twitter, wikipedia
-
need to test general URL pulling, see how many sites allow iframes
- test with flancia.org
-
improve [[agora graphs]]
- I like what logseq does: show link direction as particles. push/pull could be different particles. hmm. particle diagrams. check out [[feynman]] for inspiration?
- could get inspiration from some diagrams in [[a rosetta stone]]
-
[[wikilinks everywhere]] -> [[agora ext]]
-
I really want to move wikilinking to on-demand (push button/ctrl-shift-l) or cronjob-like behaviour but right now it just wikilinks everything every time you click, and some sites break
- this is already better after a quick PR to linkify on click instead of mouse movement
- twitter still sort of breaks though
- [[vera]] is on this though
-
I really want to move wikilinking to on-demand (push button/ctrl-shift-l) or cronjob-like behaviour but right now it just wikilinks everything every time you click, and some sites break
- [[agora server]]
-
parse agora protocol
- recognize (match) and style differently
-
[[push]] [[agora]]
- fix toggle switch for [[auto pull]]
- implement [[auto pull]]
-
implement [[auto push]]
- probably requires [[agora protocol parsing]] to make efficient/reasonable
-
client side pulling
- done for: mastodon, twitter, wikipedia
-
need to test general URL pulling, see how many sites allow iframes
- test with flancia.org
-
improve [[agora graphs]]
- I like what logseq does: show link direction as particles. push/pull could be different particles. hmm. particle diagrams. check out [[feynman]] for inspiration?
- could get inspiration from some diagrams in [[a rosetta stone]]
-
[[wikilinks everywhere]] -> [[agora ext]]
-
I really want to move wikilinking to on-demand (push button/ctrl-shift-l) or cronjob-like behaviour but right now it just wikilinks everything every time you click, and some sites break
- this is already better after a quick PR to linkify on click instead of mouse movement
- twitter still sort of breaks though
- [[vera]] is on this though
-
I really want to move wikilinking to on-demand (push button/ctrl-shift-l) or cronjob-like behaviour but right now it just wikilinks everything every time you click, and some sites break
- [[agora server]]
-
parse agora protocol
- recognize (match) and style differently
-
#push [[agora]]
- [[Agora chapter]] delivered (finally!). It is what it is; I am glad it exists, for all its shortcomings.
- [[Agora development]] resumes (with more time to dedicate to it).
- [[agor.ai]] setup matures.
-
Couldn't parse #push. See source for content.
-
Couldn't parse #push. See source for content.
-
#push [[agora]]
-
finish [[agora chapter]]
- may require rewriting in parts :) but it's alright, I think I have enough time thankfully
- move to containers based setup
-
finish [[agora chapter]]
- public document at doc.anagora.org/agora
- video call at meet.jit.si/agora