Preface: This is a long, technical post so I apologise in advance. Please avert your eyes if such things offend you.
Hi everybeings!
Overview
@ada and I have discussed many areas where we see problems in the way the Fediverse currently works and where would like to see improvements made to improve safety of the fediverse.
Safety on the fediverse is one of the topics we hold most dear.
One of these areas (and one that has recently garnered a lot of attention) has been in the area of full-text search, and despite the option for account-wide no-crawl options in many pieces of fediverse softwares, this option is not-federated, non-specific, non-granular and not-for-purpose with regards to fediverse searching. It's specifically designed and worded for crawler bots at a html scraping level, and while we could repurpose it for fedi-searching, it just doesn't feel right or quite fit.
There's been a lot of talk on a lot of different levels out there, but nobody's come to a concensus. A lot of people are talking about how we should do it and what standards we should use, and generally making the whole concept a lot more complicated than it needs to be.
In this post, I want to share with you some of the ideas that I've gathered through my research, and implemented in a way that is simple enough (KISS), not overly complicated (YAGNI) yet still fit for the purpose I need as both a software engineer and an instance admin, and that anyone accessing the content will need.
The idea in sharing this is not to convince me that it shouldn't be done, or to create the absolutely most perfect solution possible that's going to take 20 years to build and will be outdated by the time we get there.
This will be getting built and going out in weeks, not months, not next year. It's needed now. This is my current plan how to implement something we needed months ago, now. This is your chance to change my mind and help refine this plan before I start really coding it up.
Technical/implementation details
A lot of these options will be settable as a default value in your settings as well as at an individual post / file level during composition or afterwards at editing stage.
In terms of inbound federated AP objects which do not support these new fields, we will try to infer the intent based off existing AP fields and other metadata when present.
Specifically, we will be using the Mastodon Account Lookup API (GET /api/v1/accounts/lookup?acct=) to get and store the noindex flag during actor creation/refresh. This will also allow us to put the noindex meta tag on any HTML pages containing that actor's posts.
Searchability
So you don't want people to be able to search for you. But is that everybody? Maybe you want your followers to be able to find your posts? Maybe the people you mention should be able to find your post? What about actual users on your local instance? Maybe a particular post you never want to appear in searches? Maybe a particular post you write contains stuff you want everyone to see?
We will be adding a global default and per-post override federated in AP as hk:searchableBy which will be settable to public, private or a combination of followers, mentions or local. This is different to the currentvisibility in that you can have a public visibility post that is searchable by followers and mentions for example.
{
...
"searchableBy": ["followers", "mentions"]
}
Interactivity
The other problem is that at the moment you can't control who can reply, boost, vote and/or react to your posts.
To this end, we will be adding per-post overrides federated in AP as hk:canReply and hk:canInteract which will allow you to specify like on searches a combination of public, private, followers, mentions and local for replying to, and boost, voting or reacting to your posts respectively.
Licensing and attribution can get pretty tricky. On the fediverse, we're assuming that if you're making a post, then you have the rights and willingness to let the content be federated. If you didn't you wouldn't post.
However posting content sometimes requires you to provide the license and attribution that you're using along with the content. At the moment there's no reasonable or standardised way to provide this information on an image or in a post, thus you're in breach if you post a CC-BY licensed image.
So to alleviate this, we will be providing 2 federated AP fields hk:licensing and hk:attribution. The licensing field will contain the URL of the license under which the content is being shared and the attribution will contain any links to the source content/s and/or creator/s.
So crawlability is about indexing of the content by external parties whether they be search engines or fedicrawlers. It will provide a per-object level flag under the AP field hk:crawlable that lists whether the item may be processed by a bot. The possible values are true or false.
{
...
"crawlable": false
}
Quotability
Now this is a controvertial one. Sometimes people out there don't mind their posts being boosted, but don't want them to be quoted. You know what we say? If you don't want your posts quoted, we should respect that and not allow people to quote you. So we'll be supplying an AP field hk:canQuote that lists who can quote your posts using the same combination of actor types as above.
@supakaity@ada Great work! To be clear, this is something you are proposing to be added to #hajkey right, federate it out, with the hope that other software will add implementations that respect this?
to add a cw to an existing post written by somebody else is both intriguing and new - so i am not surprised about confusion regarding this concept ❤️ #cw#contentwarnings#hajkey#fediverse
I've somehow settled on a working environment where I use interchangeably my #hajkey and #mastodon accounts in my PC.
to follow a long thread I prefer Masto.
to reply on that thread with more than 500 chars, I continue from Hajkey
to find content I use Hajkey's antennas.
to find people, definitely Hajkey. I'm much faster being over to hover over a name to see all the details before I decide to follow or not.
to keep up with what's going on with the people I follow: Mastodon. Home tab is easier on Masto.
There's an "Edit posts", sorry I just can't do without that now😥
Mobile app support - to the level of a Calckeyed #Fedilab ❤️
Also
want to test the post migration, see it working irl
agree the Home and Social timelines feel messy ... but I know that will get sorted, and anyway I follow a lot via Lists a LOT (and now would use those brilliant 🎉antennas too)
Did you know another of the absurd restrictions of Mastodon by design is that you cannot delete more than 30 statuses per 30 minutes? Literally one deletion per minute.
Love the new #hajkey timeline filters!!! ❤️❤️❤️ I cannot begin to tell you how simple it was to check my mentions with the parent post hidden - Fine-grain controls and yet easily toggled! 🤤😅 You are amazing @supakaity 💜💜💜 I hope these become available for everyone using #calckey eventually. #fediverse
I would like to take this moment to recognize how #calckey / #hajkey is the most powerful of #fediverse applications. So many great features you certainly wouldn't find on #mastodon anytime soon!