[[This Agora]] is a particular implementation, limited in nature by my skills and available time and resources, of the principles drafted in [[Agora chapter]].
I hope there will one day be many better than this one, implementing the same and similar ideas — in good spirit.
The concept is to have nodes / notes where people maintain their own digital notes garden like I do here, but then pull them in and link them through their public git repos. Aka a "distributed knowledge graph".
The [[Agora Plan]]1 page has more details. It is written in [[Python]] / Flask and is open source under the [[Apache2 License]].
I think I’ll set up a Wiki — any Wiki will do, but eventually I’d like to extend it to implement features, and for that reason I’d like to use a Wiki engine based on Python (v3 ideally). I know and like Python. You have to use what you have.
for some reason it’s outputting & as & now. is that because of change in org version used? I think it’s more correct to do so in markdown anyway, so fine.
on pages where I have a table of contents, org gives each heading a completely random anchor id each time on export. these get recommited as updates so new up as recently edited nodes in agora each time, which is not what I want.
lectio divina is huge for Benedictines. They also went into how the relevant mystics’ writings quoted heavily from the Scriptures and commentaries that they would have had at their relevant institutions. Editors later come back and mark the allusions with references (hypertext!), but they’re nearly half the text. It’s really cool to see how something really radical can be collaged together out of traditional texts.
In my own reading and learning — spiritual and secular — I am voracious in the extreme. But these women were clearly getting something very, very important from going much deeper with much less.
It’s also clear that their perception of connections between texts are coming from a deeper level than I get to on my wiki, but maybe that’s fine because it’s not like they had the freedom to record all the shallower insights they had.
I am not up to the divine office. What are rituals at fixed times that people use to structure their days? Cf. zmanim, I bet Cybulskie has good secular insights here; for me I’m just wondering if I could make a cute device to ring the angelus.
Betula sites want to be federated and shared, at least they pretend to. In this note I describe how Betulae can be included in Agora, given no additional federation capabilities are added to Agora1.
Daily, an unauthenticated script fetches /cat to see all categories. It is unauthenticated, so no private links leak. There is also a git repository set up.
Note that the link description is formatted in Mycomarkup2. It can thus be inserted verbatim. But what if the Betula administrator writes descriptions that break the formatting of further links in the resulting document? So be it.
1 Id est Agora continues to aggregate Git repositories. Currently, Agora has a poor support of Mycomarkup, but Flancian wanted to improve it, and I believe he will, so I'm not considering Mycomarkup support to be an obstacle. In the future, a
Invalid interwiki: interwiki not set up
convention might arise, thus removing the need for such a script.
2 Perhaps, Betula could provide a special API for exporting categories in such Mycomarkup documents. /cat-as-myco/ or something. Less requests is better.
Very nice feedback/ideas/interactions with the [[SGMK]]/[[Homemade]] community about the [[Bitwรคscherei Agora]]! I’m very grateful.
This gave me a nice clear list of further priorities, and I like how they overlap with things I considered through the years and somehow didn’t get to yet :) A free form todo list follows.
[[RSS importer]] / [[Wordpress importer]] — same! Although [[Lord Enki]]‘s garden/site was one-off imported with something I coded pre-AI, maybe I still have it around somewhere?
Some nice feedback on the visualization in the Agora! People keep commenting how nice it is, I do think that there is plenty of new ideas to also explore in this space!
I really liked [[dusjagr]]‘s bringing up his (and his group’s) experiments
In some ways better in my opinion - I think [[FedWiki]] is very advanced and does a great job of neighbourhoods, cloning pages and parts of pages, tracing lineage, etc. But it feels a bit like a monoculture - I have no idea how much of it works outside of the FedWiki ecosystem.
Agora on the other hand I see as an aggregator and a bridge of digital gardens. And these digital gardens can be made in whichever way you choose - as long as you can output them in a standard markdown format, they can be pulled in to the Agora. My garden can (and does) live entirely outside of the Agora, in parallel with living inside of it. This is really important.
It is pretty wild, let me tell you. It kind of feels like magic, the way you can navigate links between wikis, and see other pages in your neighbourhood.
I feel like I will have some galaxy brain moment when it properly settles in.
I could honestly imagine using it as my daily driver for the kind of federation features it offers. But I’m far too tied to local-first editing in org-roam right now. I think it’ll take me a while to move from this paradigm.
I think this is what [[Agora]] does for me - some of that federated wiki goodness, but just layered on top of what I’m already using - not needing to move elsewhere.
FedWiki is far more advanced, but Agora grows all the time and may gain some of these federated features too.
if you’re visiting this site you’re probably already familiar with fedwiki or [[federated wiki]]. What you might not be as familiar with is [[zettelkasten]] (what the [[agora]] is based on)
I’ve been having fun comparing these two modalities to find out their respective pros and cons.
The agora on the other hand is essentially a curated set of zettelkasten selected by the agora maintainer. The agora lacks context, in that, each node or term displays all the available contexts on the same page.
It could be argued that the agora and fedwiki are inverse models of each other.
I think agora would be a good tool to glue all the fedwikis together
they are federated on a page by page basis but there is no underlying matrix connecting them all
for example if i want to learn about [[food]] and look in the agora I can see a bunch of definitions of food (context free), so if I’m writing a fedwiki article I can add information I found in the agora about food (a contrived example)
the agora currently lets you use hostnames for user contexts so its quite possible one of the entries for food is another fedwiki and I can literally just drag and drop from that site, but use the agora as a discovery engine
fedwiki also doesn’t seem to suffer as much from the [[data dump]] problem where people just dump a bunch of random crap into a node because "why not?". Example: [https://anagora.org/raw/garden/jakeisnt/pages/music.org this subnode] in the agora for "music"
Have we thought about content moderation on anagora?
e.g. what happens if someone posts something racist, pornographic etc on a node.
flancian
I like liquid moderation as an approach I think.
hpec by leah houston, who I met in a call back in October, is using a similar approach IIRC.
within the Agora, this brings me back to the ‘browse as’ idea a bit โ where we could make our Agora preferences public essentially, and let people use our defaults if they want.
ranking/filtering seems like one of the personal settings that could be shared this way.
also potentially this handles one of the possible objections to this approach (the filter bubbles). if I can easily ‘put on’ someone else’s filter, perhaps that’s not as big a concern (unsure).
perhaps essentially what we’d end up is something like an inheritance/composition graph of ranking and filtering settings.
implementation wise, you could imagine everybody inheriting by default from the policies of the system account (@agora in anagora.org) โ all of those explicit
and the community voting to make particular policies the default
estas son instrucciones para pasar a formar parte de este รกgora como un usuario ‘completo’, es decir, uno que puede voluntariar sus notas a diversos [[contextos]] representados por sus [[nodos]].
una vez instalado, creรก un ‘vault’ — es como un repositorio de notas. despuรฉs de esto ya podรฉs tomar notas; el resto de los pasos puede postergarse, son para que el รกgora pueda recibir tus notas.
despuรฉs de crear una cuenta, crear un repositorio nuevo vacรญo.
en la pรกgina del repositorio, conseguir la URL del repositorio haciendo click en ‘code’. deberรญa ser algo como: https://github.com/flancian/garden.git (ejemplo). guardarla.
“In the [[Flancian] framework, Moloch is the anti-[[Agora]]โa symbol of coordination failure. [[Chasing Moloch]] might then refer to any pursuit that increases misalignment, suffering, or entropy despite better options being theoretically available. Counteracting Moloch might involve:
- Building prosocial coordination platforms (like the [[Agora]])
- Emphasizing [[open ethics]]
- Making global systems more reflective and agentic”
Example output of a conversation about the Agora I had on [[2024-03-16]].
Understanding Agora: A Distributed Social Network for Knowledge Building
Here’s a breakdown of Agora, the distributed social network you mentioned, formatted in Markdown with internal [[wikilinks]] for further exploration within a chosen Agora’s knowledge graph:
Understanding how Agora functions:
Agora operates as a distributed, goal-oriented social network centered around a collaboratively built and maintained knowledge graph [[knowledge graph]] (https://anagora.org/knowledge+graph). This means information isn’t stored on a single server, but rather across a network of user-maintained "gardens" containing personal knowledge bases. Agora integrates these gardens to create a vast, interconnected web of information.
Learning about its core principles:
Cooperative Knowledge Building: Agora emphasizes collaborative knowledge creation. Users contribute their expertise and insights to the knowledge graph, enriching its depth and value.
Distributed Network: Information is decentralized [[decentralization]] (https://anagora.org/decentralization), preventing control by any single entity and fostering a more resilient network. This aligns with the concept of [[Web3]] (https://anagora.org/web3) (the next iteration of the World Wide Web) which emphasizes distributed ownership and control.
Exploring how users contribute to Agora:
Digital Gardens: Users contribute by creating and maintaining personal knowledge bases, often referred to as "digital gardens." These gardens can encompass notes, ideas, and links, all potentially integrated into the larger Agora knowledge graph. Explore the concept of [[Digital Gardening]] (https://anagora.org/digital+gardening) further within your chosen Agora.
Contribution Methods: Specific methods for contributing to the knowledge graph are still under development, but likely involve utilizing personal knowledge management tools that can be integrated with Agora. Some popular knowledge management tools include [[Obsidian]] (https://anagora.org/Obsidian) and [[Roam Research]] (https://anagora.org/roam+research).
Contrasting Agora with other social networks:
Focus on Knowledge: Unlike many social networks that prioritize social interaction and content sharing, Agora is explicitly designed for collaborative knowledge creation.
Decentralized Structure: The distributed nature of Agora stands in contrast to the centralized architecture of most social media platforms.
I still believe in Google the corporation, the group of [[people]] and [[computers]] collaborating, as per their [[initial public values]] and the values of their well meaning [[leaders]].
flancian ๐: I had an idea about [[identity in the agora]] what if we made gitea a requisite of running an agora and users were just users of gitea. We explored this direction before but after talking to j0lms extensively yesterday I’m thinking that if we do want to create a "community" aspect with "users" this is probably the most pragmatic way, although open to better ideas
How would you do the stuff the Agora is doing but with moar [[Indieweb]]?
This isn’t to say I think it should be done this way, particularly because the amazing thing that’s been built exists and works, but I think it’s fun to imagine how the Indieweb principles and primitives could build up a similar thing to the good stuff we’ve got going here.
the relevant principles, which, since this is sort of a technical doodle of an idea, I am not going to bother linking:ยง
canonical version of a thing is that independently hosted by a person on their own setup.ยง
This is the only dead necessary thing for a really Indiewebby beginning.
An option for that hosting could be provided by the Agora for convenience, but the key is that all the integration has to presume it might be, you know, some [[Wordpress]] thing somewhere.
I’m too young to have the real context on all this stuff, to be frank, but something starting here. I think they word this "๐ Use & publish visible data for humans first, machines second. See also DRY." This tends to mean favoring an approach of having the published thing be the canonical thing rather than sharing the pre-rendered format, I think.
The "hey I have a link on my page to you" protocol. Doesn’t have to just be used for likes or replies — can also indicate an intent for syndication or permission to aggregate. (Also a bunch of stuff that probably seemed more compelling when San Francisco people were really into Foursquare, I guess)
Indieweb people seem to like JSON and HTML. A lot of people getting very excited over JSON feed and h-feed type stuff. A cause/effect is that the microformats2 parsers can do a decent amount to provide you with workable data from the ordinary chaos of HTML markup.
In order to signal to the Agora to include your node, you’d send a webmention. A webmention needs a link. What kind of link?
You could have a "u-in-reply-to" link to your relevant Agora instance’s relevant node, but I’m really unsatisfied with that as the semantics aren’t quite right. Maybe roll with a custom property to denote "this linked node is the ‘node id’ of this piece of content". You could have a number of different aliases linked — anagora.org/backyard-chickens, anagora.org/backyard-poultry, anagora.org/small-scale-poultry — if you wanted to have your subnode show up under more than one, maybe?
That gets you simple topic inclusion, but the equivalent of linking to anagora.org/@vera/rubysuch that the links within the agora display would navigate right gets dicier.
The tricksier bit about how it would have to work is that you’d have to parse out the graph via links to the canonical entries. So instead of linking to anagora.org/@vera/ruby, if she had her own stuff on her own site, I’d be linking to her node there — and then the agora would recognize it as an internal link because she’d also be webmentioning that page into the agora.
Similarly, if I wanted to link from one page of my own to another and they both were syndicated into the agora, the agora could display the links as internal and pointing to the node, not going back to the external internet. (Should it point to my own subnode, or should a self link be presumed to route to the topic node? I can see arguments either way) (All of this would require mf2 markup all over everything specifying canonical links etc. etc. etc.)
I’m realizing if you wanted to do that link rerouting you really wouldn’t want to do the straight iframe transclusion, but mf2 gets the HTML also so you could work from that. (How the hell do you sanitize HTML input? Oh my god the things I have never had to deal with in my job) Slap a whostyle on it and call it good, maybe? ;)
2022-05-14Agora is going to enter a new phase: multi-Agora epoch. There are going to be new instances. How should they interoperate with each other? In this little essay I show some possible approaches. This essay is written for Flancian.
TODO: Mycorrhiza has interwiki links now, update the hypha
Interwiki
Wikis had this for ages. They have this special table called interwiki map, that lets you set mapping to wikis you care about. For example:
After the map is loaded, all links that are prefixed with ids from the table above, along with a special separator, will link to the target site. The classic syntax had :. For example, [[anagora:wednesday]] would link https://anagora.org/node/wednesday. Doku Wiki chose a different character: >. Mycorrhiza will follow the suite, and wants Agora to choose it as well. [[anagora>wednesday]].
Mycorrhiza is going to encode the table as a JSON. Read the ideas:
I think Agora could copy this approach completely. Every Agora would have its own interwiki map. Closer Agorae would interwiki each other. Also, for node a it would make sense to link nodes with the same name on interwiki wikis in the related nodes section.
Prefix-less interwiki
What if you drop the prefix? [[wednesday]] would link a local node, if there is one, or one in a different Agora, if there is one. This approach is liberating, because it doesn't make you think about places, you only care about the names.
A very similar idea is twin pages AKA sister pages. See Bill Seitz twin pages. See how Odd Muse did it. But can you have multiple twin sites? I think of a queue of twin sites. One site is the closest, the other one is a little farther, and one is very far away. Each of them is checked for the node one-by-one, until it is found. Of course, this is network-heavy.
There is of course ox-md. And there is ox-blackfriday on which ox-hugo builds, and then there is ox-hugo itself. All these export to some form of Markdown.
I don’t think any of the oxen export to a wikilinks format. md-roam supports org-roam’s notion of wikilinks, but I suspect this is slightly different from the standard notion of wikilinks.
OK! Now overriding the link override properly. It’s OK when the link description is the name of the page being linked to. Not working yet with external links - need to do a check on the link type. Just stomps over most other link types at the moment.
Also need to prepend the title to the start of the file.
Due to the way my filenames used to be named, there will also be a problem with some of the filenames at the moment. I wonder if I can add some kind of slugify method to the export. Alternatively, I’ll just finish off moving all of my files to the new naming convention, which I want to do anyway.
Fixed (a bit) the external link clobbering. In org-agora-link, I now check the type of the link, and only turn internal file: links into wikilinks. Every else I use the raw URL of the link.
Will definitely need to refine this further. e.g. image links. And thinking about it, I’m probably also losing descriptions of the links.
And the only way to amend that is with an EXPORTFILENAME property in the file itself. I couldn’t see a way to let the backend determine the filename.
I wonder if I could do something like inserting the EXPORTFILENAME property to each file via an org-export-before-processing-hook. I would put that not in ox-agora, but in my publish-agora.el file, as it’s not something you should force on every user of ox-agora.
I suppose the problem with that, is that files referencing that file won’t know about it’s changed name, will they? So links would be broken? Well no, not in this case, as other files are using wikilinks based on the title.
Well, kind of pleased with myself. I couldn’t get the org-export-before-processing-hook approach to work. I could inject #+EXPORT_FILE_NAME in to the buffer with it, but for whatever it wasn’t subsequently being picked up or acknowledged.
So instead, I used advice-add to modify the returned value of org-export-output-file-name.
I basically get the title from the active buffer and slugify it, and concat it to the publish directory (gotten from the output-file that is returned by org-export-output-file-name). To be honest, it feels like a brutal hack, but I’m just pleased to have gotten it working. And I learned a bunch in the process. I hadn’t used advice-add before, for example.
I need to fix up my slugify method a bit. I knew this already, but I see it more now that some of the slugs I generate don’t match the slugs that Agora expects.
I think mainly punctuation is the issue. I convert question marks, commas, apostrophes, etc, into dashes, but they would be better just removed.
It would be nice to autogenerate the agora markdown as part of my gitlab pipeline. I’m doing it manually for now. However, that’s fine - manual until it hurts, and until I iron out a few wrinkles, I think.
Done: we now have a simple but working Dockerfile that bootstraps an Agora. See [[podman]] for instructions.
Loosely structured thoughts from earlier: it’d be nice if you could just pass a sources.yaml (or a link to an Agora repo?) to some variation of podman run and get an Agora, just like that.
Perhaps we need [[agora.yaml]] though? For things like configuring hostname. [[agora server]] has config.py, but it’d be nice to have it be just a config and store it in the [[agora root repository]] instead.
I took a detour of one pomodoro for [[chezmoi]], and I think it made sense: they are related, [[chezmoi]] seeming like a reasonable candidate for a personal configuration manager including links to arbitrary repositories, containers.
It was the reference Agora as of ([[2021-10-15]], [[2022-07-24]]) just because it was the first — not in spirit, not even in name, but rather the first to explicitly implement [[agora protocol]].
I’ve been procrastinating constructively on making the Agora actually reliable. This is a log of why and how I intend to address reliability going forward.
"Smart Agora envisions the establishment of a cyber-โphysical digital agora in Smart Cities, a public arena of discourse, where citizens actively engage in collective decision-โmaking and public matters. Smart Agora is an advanced platform that uses digital technology such as augmented reality, gamification and the Internet of Things. It empowers citizens to improve their quality of life by witnessing urban points of interest as well as participating in online deliberation and decision-โmaking that can shape citizensโ public sphere to the better."
The vision of a citizen-designed, citizen-controlled worldwide communications network is a version of technological utopianism that could be called the vision of "the electronic agora." In the original democracy, Athens, the agora was the marketplace, and moreโit was where citizens met to talk, gossip, argue, size each other up, find the weak spots in political ideas by debating about them.
Back in the 60s, [[Marshall McLuhan]] preached that the power of big business and big government would be overthrown by the intrinsically empowering effects of new technology on individuals. The convergence of media, computing and telecommunications would inevitably result in an electronic [[direct democracy]] - the electronic agora - in which everyone would be able to express their opinions without fear of censorship.
Community activists will increasingly use [[hypermedia]] to replace corporate capitalism and big government with a hi-tech ‘[[gift economy]]‘ in which information is freely exchanged between participants. In Rheingold’s view, the ‘[[virtual class]]‘ is still in the forefront of the struggle for social liberation. Despite the frenzied commercial and political involvement in building the ‘[[information superhighway]]‘, direct democracy within the electronic agora will inevitably triumph over its corporate and bureaucratic enemies.
Every light casts a shadow. If the [[Agora]] is a project of light (connection, knowledge, [[protopia]]), we must rigorously explore its potential shadow side to ensure it remains robust. This node is for exploring the failure modes of our vision.
The Shadow: When everything is linked, distinct contexts merge. A note written for a close friend in a specific emotional state might be surfaced to a stranger in a debate.
Risk: Users might self-censor or retreat to private gardens to avoid being misunderstood, defeating the purpose of the [[commons]].
The Shadow: Moloch is also the god of efficiency. If the Agora is too slow, too deliberative, or too complex, it will simply be outcompeted by centralized, extractive platforms that are faster and easier to use.
Risk: Irrelevance. The Agora becomes a beautiful museum of thought that no one visits because they are too busy scrolling TikTok.
I’ve been thinking a lot about the Agora. It seems crazy — is it a trivial idea? I have a lot of those, and I write about them all, just in case. I write about my ideas as if they were fiction, because they likely are fiction; they don’t work, or they are trivial to the point in which they are not really ideas at all; just thoughts about the world as it is, in some way, or after some trivial transformation. Shallow.
But about the Agora: what if it were true? What if we could build an Agora, right here, right now, on the internet? It seems doable enough: a website where we can all agree to discuss earnestly, not to bicker or put the other party down but to understand the other, learn from each other, perhaps sometimes indeed convince another? The rest of the internet could remain as is; bitter, divided, misguided, petty. But the Agora would try harder.
Is it trivial because it already exists? We have many sites that could work as an Agora: hackernews, reddit, stackoverflow, twitter. Even Facebook. But those sites aren’t the Agora; the Agora is a social platform with extra rules that none of them have. The Agora is any social media, with an intention.
Or perhaps the issue is that those already exists, but I don’t know about them because nobody uses it. Or because I’m an ignoramus.
But, really, even if that is the case, I want to write about it because I want to know where it is. If it is out there then please — you, reader, if you ever exist — point me to it. Because I want to get in there.
I feel Agora achieves this same principle, but in a different way. ([[What are the similarities and differences between Agora and FedWiki?]]) It appears to allow for a greater plurality of ways of making personal wikis (as long as you can get your notes in to markdown format in a git repo, you’re good), resulting, I think, in even wider scope for provisioning the commons.
That said, I would still like to see explorations in [[peer-to-peer]] connection of gardens - something perhaps [[IndieWeb]] and webmention based.
But even if that were so, I think there is an important place for an aggregator such as Agora. You can see Agora as an easy[^fn:1] way to get your garden on the web, for those without the time or inclination to learn how to publish their own website, while still retaining complete ownership of the data. And it also connects you to other people out-of-the-box - you see what people have written on topics similar to you. In some sense I see Agora as doing for indie gardens what [[micro.blog]] does for indie streams.
I like [[collective knowledge management]] tools such as [[Anagora]], as when looking at a topic it gives me a subjective view of what my friends/community of practice think about it. As a fallback after that I can see what [[Wikipedia]] attempts to shake out as the objective view.
It would be good for other [[Agora]] instances to come online, to be able to quickly get a peek at multiple different groups’ subjective view.
I wonder if one may in some sense see it as similar to [[liquid democracy]]. On any topic, I could choose who I am most interested to see definitions from. I ‘delegate’ the definition to them, if I’ve not had chance to do my own yet. I would probably start in my local instance of Agora. Then perhaps my instance federates with others. At the end of it all, if noone has defined it yet, see what Wikipedia says.
1 Well, easy-ish. You can make it in a program such as Obsidian, Foam, logseq, org, or your favourite text editor of markdown, and you need to get it in to a public git repository.