From 6a6a550cd246e137429d406e13d4a23b07e5a028 Mon Sep 17 00:00:00 2001 From: a Date: Wed, 25 Sep 2024 15:35:01 -0500 Subject: [PATCH] idk man --- .../.well-known/{host-meta => host-meta.xrd} | 0 public/buttons/index.html | 1 + public/buttons/owly.fans/owlyfans.png | Bin 0 -> 2025 bytes public/error/404.html | 123 ++++++++---- public/error/Error.png | Bin 0 -> 630 bytes public/error/I_am_Error.png | Bin 0 -> 1726 bytes public/error/frack.html | 58 ------ public/error/index.html | 43 ++++ public/error/zii.ttf | Bin 0 -> 28544 bytes public/icons/amazon-color.svg | 1 - public/icons/amazon.svg | 1 - public/icons/az-influencer.png | Bin 14669 -> 0 bytes public/icons/birdsounds.svg | 1 - public/icons/camera.svg | 6 - public/icons/discord-w.svg | 1 - public/icons/discord.svg | 63 ------ public/icons/github-text-w.svg | 59 ------ public/icons/github-text.svg | 59 ------ public/icons/github-w.svg | 15 -- public/icons/github.svg | 3 - public/icons/hangouts-w.svg | 67 ------- public/icons/hangouts.svg | 73 ------- public/icons/kofi-w.svg | 66 ------- public/icons/kofi.svg | 79 -------- public/icons/liberapay-color.svg | 1 - public/icons/liberapay.svg | 1 - public/icons/mastodon-alt-w.svg | 52 ----- public/icons/mastodon-alt.svg | 1 - public/icons/mastodon-w.svg | 52 ----- public/icons/mastodon.svg | 1 - public/icons/medium-w.svg | 6 - public/icons/medium.svg | 13 -- public/icons/patreon-color.svg | 1 - public/icons/patreon.svg | 1 - public/icons/paypal-color.svg | 1 - public/icons/paypal.svg | 1 - public/icons/sid.svg | 92 --------- public/icons/skype-w.svg | 6 - public/icons/skype.svg | 53 ----- public/icons/society6.svg | 1 - public/icons/steam.svg | 1 - public/icons/twitch.svg | 1 - public/icons/twitter-w.svg | 6 - public/icons/twitter.svg | 6 - public/icons/whatsapp-w.svg | 58 ------ public/icons/whatsapp.svg | 68 ------- public/icons/wire-color.svg | 2 - public/icons/wire-loop.svg | 1 - public/icons/wire.svg | 1 - public/icons/youtube.svg | 1 - public/unstable/fedi-vs-web.html | 183 ++++++++++++++++++ 51 files changed, 312 insertions(+), 1018 deletions(-) rename public/.well-known/{host-meta => host-meta.xrd} (100%) create mode 100644 public/buttons/owly.fans/owlyfans.png create mode 100644 public/error/Error.png create mode 100644 public/error/I_am_Error.png delete mode 100644 public/error/frack.html create mode 100644 public/error/index.html create mode 100644 public/error/zii.ttf delete mode 100644 public/icons/amazon-color.svg delete mode 100644 public/icons/amazon.svg delete mode 100644 public/icons/az-influencer.png delete mode 100644 public/icons/birdsounds.svg delete mode 100644 public/icons/camera.svg delete mode 100644 public/icons/discord-w.svg delete mode 100644 public/icons/discord.svg delete mode 100644 public/icons/github-text-w.svg delete mode 100644 public/icons/github-text.svg delete mode 100644 public/icons/github-w.svg delete mode 100644 public/icons/github.svg delete mode 100644 public/icons/hangouts-w.svg delete mode 100644 public/icons/hangouts.svg delete mode 100644 public/icons/kofi-w.svg delete mode 100644 public/icons/kofi.svg delete mode 100644 public/icons/liberapay-color.svg delete mode 100644 public/icons/liberapay.svg delete mode 100644 public/icons/mastodon-alt-w.svg delete mode 100644 public/icons/mastodon-alt.svg delete mode 100644 public/icons/mastodon-w.svg delete mode 100644 public/icons/mastodon.svg delete mode 100644 public/icons/medium-w.svg delete mode 100644 public/icons/medium.svg delete mode 100644 public/icons/patreon-color.svg delete mode 100644 public/icons/patreon.svg delete mode 100644 public/icons/paypal-color.svg delete mode 100644 public/icons/paypal.svg delete mode 100644 public/icons/sid.svg delete mode 100644 public/icons/skype-w.svg delete mode 100644 public/icons/skype.svg delete mode 100644 public/icons/society6.svg delete mode 100644 public/icons/steam.svg delete mode 100644 public/icons/twitch.svg delete mode 100644 public/icons/twitter-w.svg delete mode 100644 public/icons/twitter.svg delete mode 100644 public/icons/whatsapp-w.svg delete mode 100644 public/icons/whatsapp.svg delete mode 100644 public/icons/wire-color.svg delete mode 100644 public/icons/wire-loop.svg delete mode 100644 public/icons/wire.svg delete mode 100644 public/icons/youtube.svg create mode 100644 public/unstable/fedi-vs-web.html diff --git a/public/.well-known/host-meta b/public/.well-known/host-meta.xrd similarity index 100% rename from public/.well-known/host-meta rename to public/.well-known/host-meta.xrd diff --git a/public/buttons/index.html b/public/buttons/index.html index 4c656fe..fdd19c2 100644 --- a/public/buttons/index.html +++ b/public/buttons/index.html @@ -34,6 +34,7 @@ diff --git a/public/buttons/owly.fans/owlyfans.png b/public/buttons/owly.fans/owlyfans.png new file mode 100644 index 0000000000000000000000000000000000000000..cdca188fec49c70485d74e0b31a90cd5a56fbdf4 GIT binary patch literal 2025 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@@!OXzGs4RHO1xUqbIy(nsCMPp6RNShau;1G$ zP~`ajD8(7Pfz8f`XD@mfy2w$FH%r0w!eOpW%btG@U$Fjkwf>@v?rQ?S_>D67q$Y7R zPit#a$m&?J_T%FX8 z)uxieX@quKl&mJyQ-$`a9opS^~Z^Qx_2~N%E`CP zmc^-_XB2xA#H2SI3~1_;)wm$=Q{7(mGiOdy;H5?Tn7RrUD6pxiKk0a$aOeO_$Rh)% zB^!1Wzpm?F`+H?>{(s&XD~r$R-@aEPYcZSc&(>|`VytYx8*fWp){Tv_Rmr#GubIQd zoSE=qUe&d?H7alNlI^QNG*{US7BqtRdaB%;CL(nm& z1XUEI9ux#QnV^uh%1O*iw^gdpO-W5lEX^rVvJ1@v8xV;4ncEMZ^R|M+8v0y6ST@_{Lt0{EQIBud6^}4Faywpk#r%&k`*-ILclSC8JswkLXCq2EmDew zWCw6G0P}+#myJF=Z`pDEJvZ+MFvH~p_=LFr2Z4}>4Br41x zB*4JO$H&9N!@U3N!oti9ERvEjy<6Z>>Y8lxUF&Y&`~ScHbRzq0-T;SJ!gkTi`ArbJIuq@cF(e=Mz@2 z6jyC1=y;sn7d?Te_}lCx@wc}VW^87vn<2;-?`za~V;j$f-nQ-j2@UMe6rZenAZk$k z;V|3RG%+Wy&7VzPcTUl};dyG(lXGtaw)6h8(O0=~gYoy4H%9;Xn%g(7`TliQk91<2 z*^K5b9O)5j!!Ct9`>@lnjHAWlp}=7Wos0fl+JQ3}d5*8)sGrWT8zZM(A{#i;%FUdwbcjrIGAZUruX+;s>vG~ggZAntH!W=f+r4+kZ<(>` ztz^;<&Nl_dt`%p$%sdq8Gnu)+Y&W z<5o$HV-d49|DJdvnM+=_`FF|b+Z(fY7iPcMyS%YI^P@q#LHGjxBj+BT|1mkVhE0b# zf>BXvW!22Jc1atjZE&<=Q8l}g#40QLdESoqi>)$$&pWM_W>|A}|GxfL>jQs>t?8V7 zWX(ONLT;YO8dd9S3qoqvY8UQ^y|ZH3%A@CclL}NCFDFQ{$(wh^7hAtSl62qCmuE@m z`S^Q5Ic|5d=f(JJlzQj2u{f;em4EXy-TkjSoiAKX>UjIs{~!E{xv3f(rX2;Q4+aKLS3j3^P6 + - -404 - Page not found - - - + + + + 404 + -
-

404

-

Computer hamsters not found

-

Either this was a mistake, or you meant to arrive -at an error in order to test this page.

-
- + + "404 computer hamsters not found." + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "404 computer hamsters + not found." + + + + + \ No newline at end of file diff --git a/public/error/Error.png b/public/error/Error.png new file mode 100644 index 0000000000000000000000000000000000000000..2ddb843488af67496d58aafe6165e271cde45e05 GIT binary patch literal 630 zcmV-+0*U>JP)&Q5?tduiA?!8j^@;xPvw2ViApIfdmF(23if>hcED60Hq9z33|qzX)f9aU*QTV{?wZfRt&m(qc7h>W-%XpQam{<3z)na79?pmsJ431@xti zXZ;ViTV8kH!AYLia1S8D=A69ZsK5A_q>Kp*Ud?5mXD@elm{!W>WZ0x-25AF4VV QZ~y=R07*qoM6N<$f|#QXaR2}S literal 0 HcmV?d00001 diff --git a/public/error/I_am_Error.png b/public/error/I_am_Error.png new file mode 100644 index 0000000000000000000000000000000000000000..246a9304eeabba51f57d332bec496a36ae6b760a GIT binary patch literal 1726 zcmXw4eLR%;7XLl-n0cnb> zw<*Jo*^;EC*}P83v%9Rd#PqT#JB;$SObBh5&D`nUz31~e=llJBzUQ3J`R`l^3iQ*b zSW*B0`T_nv2LXVz6fEe#+Dez*S<%Agp#34fTGVJX-l(R*iJ{@A#z{5FDIjv3rRnYD zZCx)I0^&e$cYR9|0Hn|WpFJTNkV*_CO)v}uUE_pRPkvt%-l^*-SC=QMW07a}BD3=B za9Zw4dCkoD-W!mSxa5Da=Abi0jM7<{QxL8~Q|BIdu>~6k-=2=_JKobUdSH3s^0U?% zqc(Tzp13TM(mW)w;q5hZ5!a$TxxL)~(=Fa-jMARe(UlvgmUaxxt~OKjc_`{YA|sudBqFm%x&C+c(rAq`57+Bd5gfi;5b{>z}J8 zq#Y^yZf|whIdo~|=3XC$s%`$uccC$LyDnS)LbyHd!Qps7x$1QG{XezQwKWdME0~>P&_#0ANqO#APzx_4r zDr44KAi^a<(W{ae9`@bx&F1(c^l75`HG#s9MUlKWTKD7Oelmwzc83@!W^~NMkW7er z${tswE5ot1LfXhk)-l-s0AZ*_vzS9a425-T`LIjX5`G+WWa|^io*u{nV=NegJA@y zs7L9NLmERL6Jti+jmIuwa1xz4*Pj>E>&O`kCW67j?pdy`uOPqwRG zLIOD0Ab)K8W6QHb-??1T4XOIRa|-j9yS_~!83ryVqjuXaZ7Nv*-5N2`T_%`gaNHw6 zYIR3{)aBs!{wqQdDW?&TOpu>4AU!5kI7ToJqBEWmht#hCyHZ!G>4ZKx2H;dl{F5?I!*tSK)Co8~vOrEQUK4?u(Vc$wY3&5D-e>%@bhk zXsMou(m~>p8qJ{__@(2^R$t9wzp-r<&>+`m2lAZYiad|ta8b|vhj8t;Zj5}-rvI1u zN0V4gbNqSO+bx}jvDEta9QqMtfX`EAwnrsQ;j24m)&?L;XKL2&P0{^T zvmVHaAgcwlX)DQ|*Z4eAJsW|Xkh|fg7qrgwVY<}pgx2BVQ4%gjxCC1d{USy%`mXds<+3=>cpH^JIM~ zRvzN=B$vU)Z9lylS)|(G@;3Ni*E_2*af0M5 zvZKP^5U`f#@NI%~skEP)D=*XK;>fsWw-g&8YgvU+SOQisaUUvgfh&r>E24aJ*p53- z6*`d&?|ETPy34b`H8AaB6wP!+b~Dhhga;@)7nx%&H32im&a-&Y;!LM*^wRI_V}o&V zIcNOpsK1Iz3-0{AeSl}Yl9sF0CQ!`ERz?G=b*xu9JFSQFoS^Oy!ee(Z(Q#3bLE5)D z#CZ<128E!k%13lJO%6FDT&rW_hM-!|{4Bp4~gZh4OSGbhF9E$yVy1fie!k|!Zg6CEicRCdO*3(Z;m zG-ovI!@NR&y?!t9@!ja - - - - - -404 - - - - - -
-

-
- - diff --git a/public/error/index.html b/public/error/index.html new file mode 100644 index 0000000..b049e25 --- /dev/null +++ b/public/error/index.html @@ -0,0 +1,43 @@ + + + + + + I AM ERROR. + + + +
+

I AM ERROR.

+
+ I AM ERROR. + + \ No newline at end of file diff --git a/public/error/zii.ttf b/public/error/zii.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3f145068bf8a9ae22446941541b697214504e51d GIT binary patch literal 28544 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 \ No newline at end of file diff --git a/public/icons/amazon.svg b/public/icons/amazon.svg deleted file mode 100644 index 3068a91..0000000 --- a/public/icons/amazon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/az-influencer.png b/public/icons/az-influencer.png deleted file mode 100644 index b605da927e2439b1ed916514f7ad6c5a3c73c479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14669 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 diff --git a/public/icons/birdsounds.svg b/public/icons/birdsounds.svg deleted file mode 100644 index 6bfc8b5..0000000 --- a/public/icons/birdsounds.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/camera.svg b/public/icons/camera.svg deleted file mode 100644 index 21d886c..0000000 --- a/public/icons/camera.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/public/icons/discord-w.svg b/public/icons/discord-w.svg deleted file mode 100644 index f8d16a6..0000000 --- a/public/icons/discord-w.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/discord.svg b/public/icons/discord.svg deleted file mode 100644 index 895f27f..0000000 --- a/public/icons/discord.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - diff --git a/public/icons/github-text-w.svg b/public/icons/github-text-w.svg deleted file mode 100644 index e47ae8f..0000000 --- a/public/icons/github-text-w.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - diff --git a/public/icons/github-text.svg b/public/icons/github-text.svg deleted file mode 100644 index a141b3a..0000000 --- a/public/icons/github-text.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - diff --git a/public/icons/github-w.svg b/public/icons/github-w.svg deleted file mode 100644 index 2b77918..0000000 --- a/public/icons/github-w.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - diff --git a/public/icons/github.svg b/public/icons/github.svg deleted file mode 100644 index 146f66f..0000000 --- a/public/icons/github.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/icons/hangouts-w.svg b/public/icons/hangouts-w.svg deleted file mode 100644 index 4014893..0000000 --- a/public/icons/hangouts-w.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/public/icons/hangouts.svg b/public/icons/hangouts.svg deleted file mode 100644 index 7cda6c6..0000000 --- a/public/icons/hangouts.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/public/icons/kofi-w.svg b/public/icons/kofi-w.svg deleted file mode 100644 index d5c77d4..0000000 --- a/public/icons/kofi-w.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/public/icons/kofi.svg b/public/icons/kofi.svg deleted file mode 100644 index 6a39ce4..0000000 --- a/public/icons/kofi.svg +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - diff --git a/public/icons/liberapay-color.svg b/public/icons/liberapay-color.svg deleted file mode 100644 index 677fc0d..0000000 --- a/public/icons/liberapay-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/liberapay.svg b/public/icons/liberapay.svg deleted file mode 100644 index e7f90be..0000000 --- a/public/icons/liberapay.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/mastodon-alt-w.svg b/public/icons/mastodon-alt-w.svg deleted file mode 100644 index 2683043..0000000 --- a/public/icons/mastodon-alt-w.svg +++ /dev/null @@ -1,52 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/public/icons/mastodon-alt.svg b/public/icons/mastodon-alt.svg deleted file mode 100644 index 9b70717..0000000 --- a/public/icons/mastodon-alt.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/mastodon-w.svg b/public/icons/mastodon-w.svg deleted file mode 100644 index ea6c655..0000000 --- a/public/icons/mastodon-w.svg +++ /dev/null @@ -1,52 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/public/icons/mastodon.svg b/public/icons/mastodon.svg deleted file mode 100644 index d6be0d4..0000000 --- a/public/icons/mastodon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/medium-w.svg b/public/icons/medium-w.svg deleted file mode 100644 index 84c87c8..0000000 --- a/public/icons/medium-w.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/public/icons/medium.svg b/public/icons/medium.svg deleted file mode 100644 index fa86a2d..0000000 --- a/public/icons/medium.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/public/icons/patreon-color.svg b/public/icons/patreon-color.svg deleted file mode 100644 index 73e7b0b..0000000 --- a/public/icons/patreon-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/patreon.svg b/public/icons/patreon.svg deleted file mode 100644 index 60c922f..0000000 --- a/public/icons/patreon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/paypal-color.svg b/public/icons/paypal-color.svg deleted file mode 100644 index b864454..0000000 --- a/public/icons/paypal-color.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/paypal.svg b/public/icons/paypal.svg deleted file mode 100644 index c4e9df0..0000000 --- a/public/icons/paypal.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/sid.svg b/public/icons/sid.svg deleted file mode 100644 index c88bbb3..0000000 --- a/public/icons/sid.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/icons/skype-w.svg b/public/icons/skype-w.svg deleted file mode 100644 index 8749306..0000000 --- a/public/icons/skype-w.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/icons/skype.svg b/public/icons/skype.svg deleted file mode 100644 index 7acab79..0000000 --- a/public/icons/skype.svg +++ /dev/null @@ -1,53 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/public/icons/society6.svg b/public/icons/society6.svg deleted file mode 100644 index 0522cd8..0000000 --- a/public/icons/society6.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/steam.svg b/public/icons/steam.svg deleted file mode 100644 index 8a96b13..0000000 --- a/public/icons/steam.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/twitch.svg b/public/icons/twitch.svg deleted file mode 100644 index df0421c..0000000 --- a/public/icons/twitch.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/twitter-w.svg b/public/icons/twitter-w.svg deleted file mode 100644 index 04a76f2..0000000 --- a/public/icons/twitter-w.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/icons/twitter.svg b/public/icons/twitter.svg deleted file mode 100644 index 5f55ff1..0000000 --- a/public/icons/twitter.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/icons/whatsapp-w.svg b/public/icons/whatsapp-w.svg deleted file mode 100644 index 4cd7b54..0000000 --- a/public/icons/whatsapp-w.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/public/icons/whatsapp.svg b/public/icons/whatsapp.svg deleted file mode 100644 index e875ba2..0000000 --- a/public/icons/whatsapp.svg +++ /dev/null @@ -1,68 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/public/icons/wire-color.svg b/public/icons/wire-color.svg deleted file mode 100644 index 841deef..0000000 --- a/public/icons/wire-color.svg +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/public/icons/wire-loop.svg b/public/icons/wire-loop.svg deleted file mode 100644 index 0b08c80..0000000 --- a/public/icons/wire-loop.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/wire.svg b/public/icons/wire.svg deleted file mode 100644 index de04395..0000000 --- a/public/icons/wire.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/icons/youtube.svg b/public/icons/youtube.svg deleted file mode 100644 index fbace70..0000000 --- a/public/icons/youtube.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/unstable/fedi-vs-web.html b/public/unstable/fedi-vs-web.html new file mode 100644 index 0000000..31b0ab0 --- /dev/null +++ b/public/unstable/fedi-vs-web.html @@ -0,0 +1,183 @@ + + + + + + fedi vs web + + + + +
+
+
+

fedi vs web

+
+
+

the disconnect between activitypub and the fediverse

+

so this is what you might call a "hot take", certainly a heterodox one to some parts of the broader fediverse community. this is in response to recent discussion on "what do you want to see from AP/AS2 specs" (in context of wg rechartering) mostly devolving into people complaining about JSON-LD and extensibility, some even about namespacing in general (there was a suggestion to use UUID vocab terms. i'm not joking)

+

the main contention is a disconnect between ActivityPub as a spec and fediverse as a protocol/network. a lot of problems cited were with the fediverse as implemented, wishful thinking about what could be changed in spec, many backwards-incompatible, mostly in service of making fediverse impl less painful.

+

there is a recurring refrain about implementers deciding they don't care to implement AP as specified, and that this indicates a problem with the spec, not a problem with implementers.

+

i think this disconnect between ActivityPub and fediverse honestly goes a lot deeper than people might realize. and that is because the problem AP tries to solve is actually completely different from what fedi is trying to do.

+

the concept of a nebulous but mostly singular "network" or "protocol" (made up of partially overlapping parts) is core to what i'll call "fedi mindset". the assumption is that you can join the fedi "network" by implementing the fedi "protocol". and that AP is this.

+

but this assumption starts to break down when you look a little closer.

+ +
+

why does fedi use (or not use) activitypub?

+

first, consider ActivityPub C2S. why is there close to zero usage of this in fediverse software? simple: it doesn't solve any needs for building a "network" "protocol".

+

now consider S2S. why are there zero compliant impls in fedi? because AP as specified doesn't address the needs of fedi. what does fedi need? well, i find it telling that the "real" reason AP was adopted was... to implement followers-only posts.

+

which is to say: the primary reason that ActivityPub is used (to the extent you can say it is being used at all) in the fediverse is mostly historical.

+

fedi grew out of a long line of open protocols, and before AP was adopted, it was at the point where people primarily used "activity streams" as their vocabulary and data model, stuffed into atom feeds. atom feeds don't do private posts unless you make an entirely new access-controlled feed, possibly with a token of some sort. hence, AS2 and AP.

+

when ActivityPub was being standardized alongside AS2 it basically had two compelling reasons for what would become the fediverse to adopt it:

+
    +
  • it was built on AS2, which was an evolution of AS1, which was already being used. so it wasn't hard to make the jump.
  • +
  • it made followers-only posts possible, because while atom feeds could do this, it was wildly inconvenient to actually do it that way. posting something private to an inbox is a lot simpler, no juggling access control tokens.
  • +
+

but beyond that, what does ActivityPub actually do for fediverse as a "network" "protocol"? basically nothing. you have a basic mechanism for delivering activities directly to subscribers, but no specified shape or structure for that payload. and you still need a lot of other specs to end up with something that talks to the "network". even with AS2 vocab, you need more vocab extensions to express things you want to.

+

simply put, AP is not enough for a "protocol" to build a "network".

+
+
+

fedi as a "network"

+

but before you build a "protocol" for a "network", consider: what even is a "network", in this context? and, here's the hot take: do you even want that kind of "network"? do you want a separate reified fediverse network?

+

because the answer that ActivityPub gives is actually a different one. There is no "AP network", because AP as a protocol is not enough to build a concrete network. it is intended to provide, and exists in context of, the larger Web.

+

this is the fundamental divide between fediverse thinking and Web thinking, where ActivityPub straddles the line between both.

+
+ +
+
+

why (and how) fedi "network" doesn't follow the open-world assumption

+

i've seen it said that the "open-world assumption" at the foundation of the Web is actually an undesirable thing for a "social networking protocol", and as a consequence, specs built on that open-world assumption are "completely unsuitable" for that "protocol".

+

but do we need a "social networking protocol"? do we even need "social networks" in the first place?

+

to build the fediverse as its own "social networking protocol" then seemingly requires that we instead go with the closed-world assumption, contrary to the Web

+

it requires ahead-of-time communication and coordination, where implementers need to be willing and available to talk to any other implementer, and this load grows with every new implementer.

+

it requires you to be aware of other extensions, present and future, because your extension might conflict with someone else's extension.

+

the way extensibility works in a closed-world fediverse is that "every implementer talks to every other implementer". or maybe there is a central registry of extensions that everyone submits to their authority, as stewards of the "protocol" that is used to build the "network". this trades out the n:n relation between implementers and other implementers, for an n:1 relation between implementers and the central registry.

+

the way extensibility works in an open-world Web is you just do it.

+

the challenge in closed-world systems is how to scale communication and coordination as the number of implementers grows. without a central authority, it almost inevitably leads to power coalescing in the hands of the few most popular or largest implementations, who become the "de facto" standard and get to mostly do what they want, and everyone else mostly has to follow if they want to be compatible.

+

sound familiar? it should, because this is the model that the fediverse follows today.

+

indeed, the fediverse is more closed-world than open-world. you see this in the so-called "rejection" of json-ld among presumably the majority of fedi implementations. because for the most part, AS2 lets you ignore json-ld. it only matters for extensibility, and (specific criticisms of json-ld aside) json-ld also mostly allows you to ignore it.

+

so why do people still complain about it?

+
+

what even is context

+

well, there is the concept of "context" in json-ld, which represents shared understanding.

+

when i say john knows sally, there are several ambiguities. we can solve ambiguities by disambiguating. one way to disambiguate is to be explicit about what any term or symbol means. one way to be explicit is to use uniform identifiers.

+

in particular, http/https uris have some convenient properties

+
    +
  • they have authority, so you can qualify an id based on who's assigning it.
  • +
  • you can use the authority component as a namespace
  • +
  • you can fetch the uri and it might return something useful
  • +
+

so let's say john is https://example.com/john and sally is example.com/sally. what do we use for knows? well, there are multiple senses of the word "knows":

+
    +
  1. is aware of the existence of
  2. +
  3. is familiar with
  4. +
  5. is having sexual intercourse with
  6. +
+

we mean definition 1. so we might use https://example.com/vocab/knows/1. now we have the statement:

+ +
+<https://example.com/john> <https://example.com/vocab/knows/1> <https://example.com/sally>
+						
+
+

this is unambiguous, but we can go one step further: we can provide definitions at the uri.

+

say some random person sees the statement above. they don't know who john or sally are, and they don't know what "knows" means in this context. well, if we do a little work upfront, they actually can know what all of these terms mean, without ever asking us directly

+

we put a resource on example.com for each of these terms, and each resource describes the subject of that identifier -- it is a "resource descriptor". the resource for knows/1 can define itself explicitly with a schema. so at minimum we have the following schema for knows/1

+
+
how to represent it in plain text
+
"knows"
+
how to define it
+
"is aware of the existence of"
+
+

the RDF Schema gives us label and comment, as defined by the RDF Schema.

+
+
label
+
"knows"
+
comment
+
"is aware of the existence of"
+
+

but we need to know what "label" and "comment" mean as well! not to worry, we qualify those terms with the rdfs namespace:

+
+
rdfs:label
+
"knows"
+
rdfs:comment
+
"is aware of the existence of"
+
+

conventionally, we need a way to unambiguously map rdfs: to its actual prefix, https://www.w3.org/2000/01/rdf-schema#. in Turtle, it would be done like so:

+ +
+@prefix rdfs: <https://www.w3.org/2000/01/rdf-schema#> .
+						
+
+

but in json-ld, we would use @context.

+
+
+

ok so how/why do we deal with context

+

now at this point you're probably wondering what this has to do with social networking. and on a practical level, if you're just interested in building a "social networking protocol", this is mostly all extraneous.

+

the part that implementers have to deal with is the notion of "context" and, more specifically, how json-ld handles it, and even more specifically, what to do when two shorthand terms conflict.

+

remember, the open-world solution is namespacing. what does closed-world do?

+

well, let's look at actor. in AS2 terms it refers to the entity that performed an activity. but in schema.org terms it refers to someone playing a role in a movie or other performance. in an open-world case, you would namespace these as https://www.w3.org/ns/activitystreams#actor and http://schema.org/actor. but in a closed-world sense, you don't want to be aware of context. you don't want to have to deal with it. but even so, you still have an "implicit context" that you are using, based on how you define each term in your own understanding, what you hardcode into your software. in this example, your "implicit context" is that actor always means https://www.w3.org/ns/activitystreams#actor.

+

what json-ld does, or what it allows you to do, is explicitly declare a @context that is equivalent to your "implicit context".

+

this works fine if there is only one declaration that is shared exactly between two parties, but it gets complicated when the "implicit context" differs or isn't an exact match.

+

this means that there cannot ever be a singular fediverse network, because the "implicit context" differs between each software project. the only guaranteed overlap is the AS2 one.

+

but it's not like AS2 didn't think of this. they wrote in this requirement:

+
+

Activity Streams 2.0 implementations that wish to fully support extensions MUST support Compact URI expansion as defined by the JSON-LD specification.

+ Activity Streams 2.0, §5 "Extensibility" +
+

note, you aren't required to implement all of json-ld. you just need to handle the bit where you can identify the equivalence between a uri and some arbitrary string.

+

but fediverse mostly decided this is too hard, and so they ignore context.

+
+
+

what happens when you choose to Not

+

now there's a few thoughts i have here.

+

first: fediverse culturally seems to ignore a lot of other things as well. they ignore http caching for example. they ignore http status codes like 301 Permanent Redirect. these requirements are arguably more important than context, and they still get ignored.

+

in fact, most fedi software is mostly just reimplementing Web browsers, but with what they consider to be the "bare minimum" of compliance. and the web they let you browse is smaller than the Web

+

are these things part of the "protocol"? how far does the "protocol" extend to cover? because, as we established, ActivityPub is not enough to build a fully functional fediverse -- and a lot of extensions and additional specs are things that ought to be included in this "protocol", insofar as this "protocol" is desirable.

+

second: if you ignore things, that means there are cases you're not handling, losing out on robustness. ignoring context is to ignore shared understanding.

+

so what do you actually lose out on when you ignore json-ld context? you have to fall back to the "implicit context", where AS2 terms are generally agreed upon, but nothing else is guaranteed.

+

take something like discoverable from mastodon. what does it mean? well, it means whatever is defined in the mastodon codebase and documentation. so we could represent that as http://joinmastodon.org/ns#discoverable or shorten that with a prefix. but if we do, then most fediverse will choke on that. this is because #fediverse is ignoring context. the implicit context is that discoverable means http://joinmastodon.org/ns#discoverable but they don't know that. so they can't actually handle the extension in its fullest form.

+

what AS2 calls out as "full support for extensions" requires being able to identify this equivalence and handle it. again, fedi does... let's call it "partial support".

+

the "implicit context" is now a hardcoded but unstated requirement of this "protocol".

+

which is to say: fediverse software generally expects LD-aware producers to compact against their own "implicit context", but they don't always define that context. it's left undeclared and undefined. or it actually is declared, but if you give them their own expanded form then they'll not understand it.

+

if we go back to the "john knows sally" example, then fedi behavior is like this exchange:

+
    +
  1. someone tells you: when i say knows, i mean is familiar with
  2. +
  3. you say: ok. john is familiar with sally.
  4. +
  5. they respond: WTF? what does is familiar with mean? i only understand knows.
  6. +
+

it's like... you literally just told me "knows" = "is familiar with", but because of your own ignoring of your own context, you can't handle me saying "is familiar with"?

+

in this way, as long as the fediverse remains ignorant of context, they will remain fragile and without any sort of robustness in their "protocol".

+

the alternative they have is to extend the only context they share, which is the AS2 one. but this doesn't solve the problem. it just officially blesses a single term.

+
+
+
+

closing thoughts: fedi vs web

+

so if you want to turn "activitystreams" into a "protocol" then sure i guess you can do that. but why? what are the needs we're trying to address here? of what purpose is your "protocol"? social networking? you want a "social networking protocol"? before you convince people that a "social networking protocol" is necessary, you have to convince people that a "social network" is necessary. but more importantly, you are contrasting that "social networking protocol" against the "social Web".

+

it is my personal belief that this whole "closed-world social network" vs "open-world social Web" thing is leading to a big disconnect that makes addressing people's needs harder.

+

because, to be on the "network", you neglect being on the "Web".

+

sure, your software might still publish your "posts" as Web resources, but that's it. you're not actually granted control or ability to manage Web resources for yourself. ActivityPub C2S is being neglected, among many other things.

+

i am personally more in favor of a "social Web" than a "social network". what i want to do is make it easier for anyone to make a website, and to manage that website. i want those websites to be able to link to each other in well-defined and clearly-understood ways. i want to make friends and express myself to the fullest, in varying contexts on various websites, without context collapse.

+

but it feels like fediverse is more interested in replicating the "social network" paradigm.

+
+
+ +
+
+ + \ No newline at end of file