-
A [[project]]. [[open source]].
-
The [[goal]] is to make [[wikilinks]] work everywhere on the internet.
- A [[wikilink]] is any entity or phrase surrounded by two square brackets.
-
[[wikilinks]] can be [[lazily resolved]] in a user chosen [[context]].
- Default context: an [[agora]] of the user's choice.
- It has a [[browser extension]] component.
-
It has a [[social network]] component.
- People could start using [[wikilinks]] on any platform that supports user generated [[content]] online, social networks being likely the most popular interfaces.
- For the purpose of connecting to such platforms we'd like to develop an [[agora bridge]].
- [[go]] https://docs.google.com/document/d/1h2kSuh7TntPj_XZ7BnLPDwtwshq7skzF3BIYwLgVquA/edit#
- [[chat]] https://app.element.io/#/room/#wikilinks:matrix.org
- [[tweet]] https://twitter.com/flancian/status/1337835415215202308
- See also [[agora rfcs]], in particular 0 and 2.
-
The [[goal]] is to make [[wikilinks]] work everywhere on the internet.
[[2021-04-14]]
The plan is to get in at least two pomodoros in this to advance it somehow in the direction of a prototype. Will try to build on [[agora ext]].
Wikilinks everywhere
[[wikilinks]]
Developed by [[@evan]] Boehs, [[unlicense]]d, powered by [[flancia]]
Wikilinks everywhere is a chrome extension that brings [[wikilinks]], and through it the [[internet]], to life. It can be installed on a large number of browsers and services, and will intelligently determine where [[broken]] wikilinks should go to based on your settings.
Sources
You can order or disable any of these sources at will. When a wikilink (regardless of if it is properly linked already) is detected the extension will go through these sources in that order you provided. The default order is explained below.
Options
Global
-
Error codes:
- Comma separated HTTP status codes
- Supports
n
xx - Default:
4xx, 5xx
Source specific
-
Ignore errors
- Checkbox
- Should error cases be ignored?
- Default: Unchecked
Actual sources
Note: The last source is the catchall, no matter what it will ignore errors and faithfully complete the link. This means do nothing has importance. Don't remove or reorder
Existing
If a existing link is already present do nothing
Note: the only difference between the existing source and others is it changes nothing in the browser. By default, if the existing link resolves to
global.error
, it will move on to the sources below and consider replacing it with them
Note: this might have made no sense. Don't mess with it, probably, it exists for a reason
Prefix
Things like WP:link
for wikipedia, or AG:link
for [[anagora]], the schema looks like PREFIX:page
.
Options
-
Prefixes
-
A table of prefixes and the corresponding url
- use
{page}
to have the provided back link, so with theWP
prefix the url would bewikipedia.org/wiki/{page}/
- DON'T INCLUDE THE
:
IN THE PREFIX
- use
-
A table of prefixes and the corresponding url
[[IWLEP]]
The user's [[IWLEP]] rules. See the IWLEP page for that config, but it is it looks a lot like your config, instead made by the author of the backlink. Don't worry, it can't be faked *unless the user gets hacked but lots worse things could happen.
Unprefixed
Iterates through all the listed urls in your order until one does not error, or all error.
{page}
is the value between the brackets
Options
-
List
-
Default:
wikipedia.org/wiki/{page}/
anogora.org/{page}/
-
Default:
Nothing
What does it say on the tin?
Concerns
Bandwidth
We use an extraordinarily large amount of bandwidth, and there is not much that we can do. That being said, the whole web is obese so I highly doubt we end up using more than 0.2 of the bandwidth of a standard blog (~1Kb a page so ~15kb a wikilink so ~150kb a page). Below is what we tried
βοΈ Request methods
There is no STATUS
request so we had to make due with HEAD
. This will only fetch the part of the website that has the page name and useful information. It does not get the page contents, saving bucket loads of bandwidth.
π·ββοΈ Local catch
Once implemented we will store the last 1000 pages we checked, so if a wikilink is frequencintly used it will only be loaded once
β Catch server
This means storing the status code of every website we checked. I don't really like the idea of storing personal information like that.
Ratelimits
By
Browsers
- Powercord π (Discord) Plugin
- Chrome
- FireFox π₯π¦
<link rel="stylesheet" href="https://doc.anagora.org/css/center.css"> <button class="pull-url" value="https://doc.anagora.org/css/center.css">">pull</button>
<div class="container-fluid text-center">
<div class="vertical-center-row">
<h1>500 Internal Error <small>wtf.</small></h1>
</div>
</div>
-
[[push]] [[wikilinks everywhere]]
- [[dbieber]] (in the [[athens discord]]) recommended wikilinks don't render by default, instead being marked up for client rendering when the client supports it.
-
#push [[wikilinks everywhere]]
-
a [[browser extension]]
- it makes [[wikilinks]] clickable on your browser on arbitrary websites... sometimes :)
- by [[vera]], [[evan boehs]], [[flancia collective]].
- [[firefox]] https://addons.mozilla.org/en-US/firefox/addon/agora/
- [[chrome]] https://chrome.google.com/webstore/detail/agora/joalfhedjllnlphmdbegppmhchhmlddc
- we had a bit of a confusion at some point and we ended up with two different repos, or maybe three :)
-
a [[browser extension]]
[[Agora]] has this idea of having [[pull" title="[[https://anagora.org/wikilinks-everywhere | wikilinks everywhere]]" class="wikilink">wikilinks everywhere]]. And they actually write them everywhere.
The basic idea is as follow. Surround words with square brackets (as you would in marked up text) in places where you are not supposed to, like social networks. Look at [[all the toots by @flancian]] and how he surrounds every second word with them. You gotta follow the links somehow. You can copy and paste them to Agora, or you can get [[pull" title="[[https://anagora.org/agora-ext | an extension]]" class="wikilink">an extension]] for your browser.
= My implementation I don't use Firefox, so gotta make something up. I did this in ten minutes. The workflow is as follows:
*. Select text anywhere *. Press the hotkey (one key hotkey would be perfect) or select the action from the context menu *. An An [[Agora]] hypha with such name will be opened in a browser
If you have a Mac, you can recreate it by following these steps:
*. Open Automator. On Monterey, it is replaces with something else. Dunno, open the replacement. *. Create a new document. Type = //Service// | //ΠΡΡΡΡΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅//. *. Make the service accept text from any program somewhere in the dropdowns above. It's the default option afaik. *. Add shell element. Find it in the menu to left. In Russian, it's called //ΠΠ°ΠΏΡΡΡΠΈΡΡ shell-ΡΠΊΡΠΈΠΏΡ//, in English it might be called //Execute shell script//. *. Paste this code: {
HYPHA_NAME="$(cat /dev/stdin | sed -e's/.*\[\[//' -e's/\]\].*//' -e's/ /-/g'"
URL="https://anagora.org/$HYPHA_NAME" <button class="pull-url" value="https://anagora.org/$HYPHA_NAME"">pull</button>
open "$URL"
} *. Save.
Now, this service shall be available in both context menu and menu bar whenever you //select// text. You might also want to bind it to a hotkey. It can be done in the hotkey settings. You service shall appear there somewhere. I've bound the service to βΒ§.
Test it on the text below. [[https://anagora.org/melanocarpa]] should be opened:
[[melanocarpa]]
= Possible X11 implementation Just links and ideas for a possible implementor:
=> https://stackoverflow.com/questions/3983354/getting-selected-text-in-current-window | Get selected text like that => https://wiki.archlinux.org/title/Xbindkeys | Bind hotkeys with xbindkeys or whatever
And replace open
with xdg-open
.
- public document at doc.anagora.org/wikilinks-everywhere
- video call at meet.jit.si/wikilinks-everywhere
2020 12 05
2020 12 12
2021 02 15
2021 02 21
2021 02 27
2021 03 05
2021 03 10
2021 03 19
2021 03 20
2021 03 29
2021 04 14
2021 05 04
2021 11 13
2021 11 28
2022 05 14
agora client
agora development
agora ext
agora hypothesis integration
agora plan
all possible wikilinks
auto wikilinking
chris aldrich
context
conventions
dan whaley
do
exgenesis
flancia chats
flancia collective
flancia plan
iwlep
join
mathew lowry
matrix
melanocarpa
oliver sauter
patterns everywhere
readme
response to flancian 1
siphons
sophia xu
stoa
the agora is a markdown extension
vera
we
webmentions
weekend 17
wikilink
wikilink dumping
wikilinks
wikilinks amount to a lightweight universal standard for knowledge interoperability