Search
1000 results for “technically_good”
-
20 Great Songs by The Police
The Police in concert, Atlanta 1979; Sting (vocals, bass), Andy Summers (guitar, vocals), Stewart Copeland (drums, vocals). images: Acroterion (cropped).By the time The Police played Shea Stadium in August 1983 and with a number one album in the charts, they were the biggest band in the world. Somewhat unintuitively for fans soon after this pop pinnacle, they’d go on indefinite hiatus for decades. After a unique journey, it was a dignified way to bow out for three musicians – Sting, Andy Summers, and Stewart Copeland – who’d come from such disparate backgrounds as to make their union an unlikely one to begin with.
From their start, they borrowed from everything around them to go along with their punk-inspired energy while not fitting in with any scene or specific sound. Too young to be classic, too old to be punk, they rode the new wave with their heads down, keeping their jazz and prog chops strictly under wraps. What they also did was turn the idea of the pop rock power trio on its head, developing a unique sound never to be replicated by any other band since. And they had great songs to get them there. Here are 20 of them, hits and deep cuts alike, that illustrate their singular identity.
***
Roxanne
Bassist and singer Sting had been writing songs for several years before co-founding The Police with drummer Stewart Copeland in 1977. Soon after, the technically accomplished Andy Summers joined the band, with his background in progressive rock adding to their sonic arsenal. It was at this point that Sting’s penchant for more sophisticated and musically varied material found fertile soil.
For instance, “Roxanne” was a bossa nova number before they arranged it into the reggae-rock hybrid heard on 1978’s debut record Outlandos D’Amour. Sting’s clarion call voice is accompanied by the now familiar chopping chords and inverted pulse to accompany a story of obsession and control. After a slow-burn on the charts that took the better part of a year as it was re-released in North America, “Roxanne” was the initial vehicle in which they began their journey from clubs to stadiums and would become a live staple.
Listen: Roxanne
Can’t Stand Losing You
“Can’t Stand Losing You” follows a similar template as “Roxanne”, and then some, threatening to betray their skills as top shelf musicians in the field of raw and elemental punk aggression. The rock-reggae dynamic is in place, but also with a kind of dub-inspired ambient middle section. Luckily, dub was the accepted form of chill out music among punks by 1978. The band would expand upon that middle section on stage where it would later morph into the instrumental track “Regatta De Blanc”.
These musical additions of more ambient textures would inform their sound later on with their greater use of effects pedals and atmospherics. Lyrically, the song is marked by black humour, containing lines that are more of a parody of a particular kind of pop song than anything to take seriously. “Can’t Stand Losing You” eventually scored a number two position in the UK and played a vital role in convincing the record company to release their full-length debut.
Listen: Can’t Stand Losing You
Next to You
Opening the Outlandos D’Amour record, this cut is a callback to their days masquerading as a punk band, with only former Police guitarist Henry Padovani having any punk cred among the three of them. Of all their fast and short early songs, this one hits the sweet spot best. Like “Roxanne” it’s also a song about obsession, a theme that writer Sting would revisit throughout the band’s discography.
On this cut, you’d never know that Andy Summers had a well-established Sixties-era R&B, psychedelic, and progressive pedigree as he lays on the appropriate punk-oriented attack to match Sting’s growl of a voice and Copeland’s ferocious drumming. Still not exactly punk rock, it delivered the same spirit. Foo Fighters covered “Next to You” on stage a number of times in the 21st century, at least once with Stewart Copeland sitting in, proving that its immediacy and punk rock attack endures.
Listen: Next to You
Hole in My Life
“Hole in My Life” breaks the pattern of The Police as a punk-inspired band with an affinity for reggae. As it turned out, they were no one-trick pony. Although that reggae influence is in place particularly in Sting’s vocal, James Brown-inspired funk is present here, too. The band build tension on a sweaty groove, accompanied by the YEAH vocal shots to make this one funky track indeed. It certainly demonstrates their cohesion as musicians, revealing the advanced level at which they were operating as instrumentalists.
“Hole in My Life” doesn’t necessarily find them capturing the Police sound as it would come to be. But it hints at some of the stylistic influences that would feed its DNA later found in songs like “Too Much Information” and “O My God”. It also shows how versatile they are as musicians, holding an arrangement in balance while adding dynamic flair at the same time.
Listen: Hole in My Life
Message in a Bottle
“Message in a Bottle” is where The Police begin to come into their own sound, and where the signs that they’d thrown out the pop rock power trio rulebook are most evident. Stewart Copeland’s drums are way out front. Andy Summers’ guitar provides vibrancy and colour while remaining a few steps back. Sting’s bass and Copeland’s drums are often foils for each other instead of acting as a unified rhythm section.
With those dynamics in place, “Message in a Bottle” sounds and feels like a statement of intent outside of any particular genre or scene. The song delves into more sophisticated themes of isolation and vulnerability while still retaining the appealing aggression and instrumental prowess they’d hinted at on their debut. The Police really gel here like never before on their first number one single in the UK and top ten internationally, arguably against the odds considering how many rules they’ve broken.
Listen: Message in a Bottle
Walking on the Moon
Leaning into dub music even further as many post-punk bands were doing by late 1979, “Walking on the Moon” is spare and spacious, led by a low-end riff on which Copeland’s echoey drums and splashes of serrated guitar from Summers are anchored. Serving as their second single from Regatta de Blanc, and their second number one in Britain, “Walking on the Moon” suggests the euphoric feeling of being in love, and of being in the moment, suspended in time.
This cut isn’t derived from a traditional radio-friendly pop sound at all, and even hints at Sting’s background as a jazz bassist. Yet the subject matter and the hookiness of the bass riff make it utterly compelling as a mesmeric drone that works against traditional pop immediacy. In this, it becomes something more than the sum of its parts as one listens with that low-end throb being so hypnotic as to keep us engaged throughout.
Listen: Walking on the Moon
Bring on the Night
Andy Summers’ flowing guitar lines on this against Sting’s ominous bass sets the scene for this nocturnally-oriented cut with a literary angle. The opening lyrics borrow from T.S Eliot’s “The Love Song of J. Alfred Proofrock” in this song about retreating into the darkness of non-existence. Like “Walking on the Moon”, this cut is designed with holes in its sound that helps create the backdrop for this dark night of the soul tune, in part inspired by Norman Mailer’s The Executioner’s Song.
The Police go beyond a three-pronged attack found on their debut and enter into a world of greater sonic nuance. With that, they continue to redefine how a three-piece band operates to deliver more sophisticated material, going beyond the usual rock guitar-bass-drums dynamics to service the overall effect of pure atmosphere in support of a narrative. Also – this cut was a direct inspiration to the central riff and groove to Stevie Nicks’ “Edge of Seventeen”. So, there’s that, too.
Listen: Bring on the Night
Deathwish
Notable for it being one of only a few co-writes between all three members, along with the absence of a chorus, “Deathwish” is like a post-punk teenage tragedy song just before the tragedy in question happens. A companion piece to “Bring on the Night” in a way, this song deals in dark roads, fading headlight beams, and a hint of youthful nihilism that served as the last vestiges of the punk rock mentality in their music.
The Police lock into a mechanical groove that is all about building tension. As well-known as they are as purveyors of hit singles, “Deathwish” is an excellent example of The Police as a jam band, creating a sound that is primarily about a vamping groove defined by a masterclass command of tension and release held in balance – something they’re great at which their singles don’t reveal in quite this same way.
Listen: Deathwish
Driven to Tears
When 1980’s Zenyatta Mondatta came out, The Police had ramped up as a global phenomenon. The pressure was on as their first world tour kicked off in the early part of the year. Even as rushed as they were to follow up with a third record in the middle of tour dates, they were still able to create some of their most memorable songs. This was one of them, a lament to Third World poverty and with its ire aimed at voyeuristic media; too many cameras, not enough food.
Rooted in an amalgam of reggae, dub, and rock music, “Driven to Tears” doubles down on the echoey and phased sound they’d established on their previous record, the highlights being Andy Summers’ minimalist shards of guitar and wail of a solo, sympatico with Sting’s resigned vocal, and Copeland’s percussive accents. This cut would be a precursor to the political material Sting would pursue in his solo career, with this tune remaining to be a mainstay in his setlists.
Listen: Driven to Tears
Don’t Stand So Close to Me
Inspired by Victor Nabokov’s Lolita, Sting’s “Don’t Stand So Close to Me” is one of The Police’s most recognizable and celebrated hits. By this time, Andy Summers’ command of effect pedals begins to take a bigger role in their sound, expanding what he’s able to do with his parts to create engaging sonic environments in which to present the songs. “Don’t Stand So Close to Me” is one of the best examples of that signature set of textures.
The low and ominous wash of sound from him sets the stage for the drama of misguided attraction, loss of innocence, and failed ethics. For a top ten hit, this is some dark subject matter. Adorned with an energetic and catchy chorus that contrasts the more sombre verses, “Don’t Stand So Close to Me” is a high point that demonstrates the pinnacle of their interplay as a band in the studio.
Listen: Don’t Stand So Close to Me
When the World is Running Down, You Make the Best of What’s Still Around
Contemplating the end of the world was a common pursuit by the dawn of the 1980s. This one is a post-apocalyptic story about being the last person on earth, with boredom and loneliness as more formidable enemies than zombies or giant insects. But what this song also does is to explore a common theme that Sting has expanded upon on other songs – the nature of isolation and its debilitating effects on the human spirit in the modern day.
The R&B influences heard on “Hole in My Life” come through here again in Sting’s phrasing, even if it’s within the context of a more consolidated Police sound full of spacious echo and phasing. His distant vocal sounds like its being broadcast over short-wave radio brings the point about loneliness and a lack of connection into sharp relief.
Listen: When the World is Running Down, You Make the Best of What Still Around
De Do Do Do, De Da Da Da
For such a literary-minded songwriter, Sting takes his own medium to task on this song that was a massive worldwide hit for The Police. “De Do Do Do, De Da Da Da” expounds on the language of the heart being more meaningful than political rhetoric used to obscure truths. In addition to the pointed lyrical subject matter, The Police’s skills as instrumentalists were well on display with sophisticated chords, unique textures, and rhythmic complexity a-plenty that really stood out on the radio at the time.
The middle instrumental section alone feels like they could have taken the song in any direction between the three of them. Their advanced instrumental proficiency was rightly celebrated at this point rather than denigrated as it might have been only a few years before when they were playing at CBGB for a punk audience. Times had changed and eventually so would The Police, particularly as the expectations for hit after hit plus the rigours of global tours increased.
Listen: De Do Do Do, De Da Da Da
Invisible Sun
The pressures on the band would continue by the time they recorded 1981’s Ghost in the Machine. In the meantime, Sting had his eye on the headlines. “Invisible Sun” was his take on sectarian violence and military intervention in Northern Ireland at the time, those conditions making it difficult for people living there to see what the future would hold for them and for generations to come.
The Police sound morphed here thanks to a greater use of synthesizers and with a less pop-oriented, more post-punk feel. Sting uses a lower register to deliver his vocal in the verses, then double-tracked in the chorus to communicate a cry for hope in the bleakness of the times. “Invisible Sun” is tellingly far less oriented around the ensemble playing of the three members. That’s played out in various degrees on the whole record, made during a tense time when the ties were fraying between bandmates.
Listen: Invisible Sun
Spirits in the Material World
A big part of the change to The Police sound by Ghost in the Machine was a switch in the production team, with Nigel Gray replaced with Hugh Padgham. Another was Sting’s tendency to record solo demos rather than working out arrangements on the floor with the band. On this cut, that resulted in more synthesized sounds closer to his initial demos to accompany his amazingly bonkers dub-inspired bassline and almost frenzied double-tracked upper register vocals.
Reduced in his role in the arrangement on this cut, Andy Summers still makes his mark via his almost classical flourishes in the instrumental break and into the last verse. Stewart Copeland holds down a pulse anchored to his hi-hat as the song’s complex rhythm shifts in unexpected ways from off-beats in the verses to on-beats in the chorus to accompany the themes of failure and disconnection in human systems and the spiritual malaise that results.
Listen: Spirits in the Material World
Every Little Thing She Does is Magic
Sting wrote this song several years before The Police even formed, and certainly not with their sound in mind. For inclusion on Ghost in the Machine, he worked with keyboardist Jean Roussel who laid down the central piano riff around which this hit song was based. Summers and Copeland were not in favour of this outside element when it came to their material. Yet, the finished product was undeniable, even to them.
“Every Little Thing She Does is Magic” shines very brightly – a shimmering love song that sounded great on the radio at the time, and adds important colour to the album. Copeland’s drumming in particular is exceptional, adding the edge the song needs to keep it from being too soft, and still within the realm of The Police sound as listeners had come to know it.
Listen: Every Little Thing She Does is Magic
Secret Journey
In the middle of a whirlwind of becoming the biggest band in the world while the connections between bandmates were strained to their limits, Sting turned inward. “Secret Journey” is concerned with spiritual exploration, possibly to counteract the very worldly expectations set upon his shoulders and those of his band.
Andy Summers distinguishes himself on this cut, his Roland guitar synthesizer creating the expansive introduction and atmospheric touches throughout. This tune tonally anchors the whole record which is decidedly less brightly lit and certainly more world-weary than Zenyatta Mondatta. This was during a time on which Stewart Copeland reflected in his excellent 2006 documentary Everyone Stares: The Police Inside Out that “it was getting lonely in this band”.
Listen: Secret Journey
Every Breath You Take
After a period apart and in pursuit of solo projects – acting, film composing, and an ambient guitar album – The Police came back strong with a new album which is arguably their best. Synchronicity stormed up the charts in 1983, with this song leading the pack. A seemingly straightforward love song on the surface, it reveals the dark theme of possession found on “Roxanne” on closer inspection, paired with yet another disturbing element – surveillance.
Andy Summers’ arpeggiated guitar lines that cut between major and minor chords set the mood and are iconic by now, while Stewart Copeland’s drums are uncharacteristically restrained – a big part of what makes this song so tense. As much as this song is well-travelled by now, it’s easy to forget that it contains some of Sting’s best singing, making great use of his full range.
Listen: Every Breath You Take
Synchronicity II
Inspired by Arthur Koestler’s Roots of Coincidence, Sting’s story about a put-upon middle-class family man told in contrast to images of a rising horror beneath the surface of a dark Scottish loch is a terrifying statement about the human psyche and its limits. This song is Sting at his most cinematic as the pressures build inside the central character and as the beast far away rises further to the surface as both a metaphor and a parallel for the man’s repressed rage.
Musically, “Synchronicity II” is the full realization of The Police sound on an epic scale. Copeland’s drums are fully unleashed, sounding like waves crashing against a shore. Summers’ roaring riff answers Sting’s authoritative vocal, also adding in atonal squeals and bestial wails to fill in the gaps. This is a towering rock song full of portent, which in the Cold War era certainly reflected the atmosphere of its times.
Listen: Synchronicity II
Wrapped Around Your Finger
The imbalanced power dynamics only hinted at in “Don’t Stand So Close to Me” come to their maturity here in this tune about mentorship, ambition, and betrayal. With lines that reflect a kind of sorcerer’s apprentice tale, “Wrapped Around Your Finger” captures the imagination with a sense of foreboding, feeling like a whole movie inside its five-minute running time.
This song is arguably the most detailed of all The Police’s hit singles when it comes to the arrangement. Stewart Copeland provides a whole orchestra of percussion behind the spare synth lines and Andy Summers’ portentous wash of treated guitar and echoey phrasing. Sting shows his maturity as a songwriter here in a cinematic tune about how quickly the tables can turn in a relationship, with parties often taking what they can from each other before moving on.
Listen: Wrapped Around Your Finger
Tea in the Sahara
The final track on the UK version of Synchronicity, the lyrics in “Tea in the Sahara” take on the quality of a myth, inspired by Paul Bowles’ novel The Sheltering Sky that contains this tale of an unfulfilled promise. It’s appropriately accompanied by Andy Summers’ guitar effects that evoke the unspoiled dunes of a moonlit African desert with Copeland’s interplay between hi-hat and kick drum accents supporting Sting’s heartbeat-like bassline.
Of all the songs on Synchronicity, this one reflects what the band’s sound might have been had they gathered in the studio to record a sixth record – warm, timeless, stylistically ambiguous, and wonderfully multilayered. In this expectation by 1984, we listeners were the sisters waiting in the desert for the promised prince who would never return – at least not with a follow-up album.
Listen: Tea in the Sahara
***
Runners up and bubbling under:
- Fall Out
- Truth Hits Everybody
- So Lonely
- Born in the 50s
- Bed’s Too Big Without You
- A Sermon
- No Time This Time
- Voices Inside My Head
- Canary in a Coalmine
- Man in a Suitcase
- Omegaman
- Demolition Man
- One World (Not Three)
- Darkness
- Shambelle
- I Burn for You
- Murder by Numbers
- King of Pain
- O My God
- Walking in Your Footsteps
***
When the Police gathered for their reunion tour in 2007, they knew that the material they’d created no longer belonged to them, and that there was nothing more for them to add other than by playing it together again. That realization took the pressure off them, allowing them to frame the material as the star of the show, with the three musicians who created it as merely the conduits. Given the strong personalities involved, that certainly shows the depth of value of their songs – many of them driven by conflict and dark impulses that resonated with a whole generation.
For the three musicians, the reunion seemed to do them as much good as it did for fans to hear them play these songs again. After decades of solo projects, they could view The Police in retrospect at a safe distance. It certainly underscored the point that their material stands on its own in any era whether the three play together again or not. That’s a significant achievement that goes beyond any other ambition, Shea Stadium included.
To learn more about The Police, investigate thepolice.com
You might also want to check out YouTube host, producer, and musician Rick Beato’s series of interviews with all three members of The Police in which each of them talk about the band and their own musical approaches while in it:
Stewart Copeland | Sting | Andy Summers
Check out Stewart Copeland’s YouTube channel on which, among other things, he hosts impromptu jams with a lot of musicians you’ve heard of. And for an added delightful bonus, here’s some footage of Stewart Copeland playing percussion on “Wrapped Around Your Finger” during the band’s 2007-08 reunion tour. It is something!
Andy Summers is active on Instagram. Check out his feed at @andysummers_official
And of course, Sting hasn’t exactly slacked off as a solo artist. His site is (perhaps predictably) sting.com.
EEE-OH-oh!
Enjoy!
#20GreatSongs #70sMusic #80sMusic #AndySummers #StewartCopeland #Sting #ThePolice
-
Best “Get Paid To” Sites
This is a blog post aimed at other low-income disabled people in the US. (Some sites may be available outside the US, but I can’t verify that.) If you are interested in earning small amounts of money in a way that is probably more accessible than a traditional job, and you don’t mind selling your data, this post may be for you.
First, my name is Azure. I use they/them pronouns. I am part of a plural system, which means multiple people in one bodymind. We share this blog. We are disabled and unable to work. We receive 36 hours of caregiving per week and it is not enough, which I think is the best one-sentence way to convey our severity of disability.
Currently, we are in autistic burnout, alongside our other disabilites. That means we tried too hard all our lives to pretend to not be autistic and tried too hard to achieve the same as a non-autistic person, and now we’re so exhausted we can’t independently get food for ourselves, speak with our mouth without further fatigue, or keep previous responsibilities. Recovery is possible, though it’s slow.
We used to knit and sell cute little amigurumi animals. We can’t do that right now – promoting, dealing with errors, and generally running a business is exhausting! We hope to be able to do it again someday, but not now.
So while we know we can ask for help if we need it… we are so. bored. Might as well earn a little bit of money if we can do it without hurting ourselves, right?
Thankfully, there are low-pressure, low-spoons ways to do that. Enter: “Get Paid To” sites. Common tasks include answering surveys, reaching specific levels in phone games, and watching (or “watching”) ads. (We turn our phone over for the ads.) This is a post describing our experience with these sites.
I have included referral links when possible in case you would like to use them and help us out. Please, don’t feel pressured! Feel free to use the non-referral links.
The first site, Connect Cloud Research, is my favorite. It is a survey site that pays well, for a survey site. The FAQ says researchers must pay a minimum of $7.50 per hour for time spent completing each survey. That’s higher than federal minimum wage in the US!
Pros of Connect Cloud Research:
– Very good pay per hour for a survey site
– No disqualifications – you only receive surveys you can take based on the demographic information you give, and if you do get spit out of a survey partway through, you get paid for your time
– A lot of the surveys are academic, which feels less yucky than helping a brand
– $5 payout thresholdCons of Connect Cloud Research:
– Some users may not be approved to join
– The surveys are few and far between – I completed 6 yesterday
– The survey notifications don’t really work – you generally have to check for surveys manuallyPro or con depending on your preferences:
– Most surveys are 2-4 minutes long and $0.25-$0.50 eachWe have earned $95.47 so far on Connect. Every single payment we request goes through immediately (through PayPal, but there’s an option for bank transfers with a $25 payout threshold).
Join Connect Cloud Research (there is no referral option yet)
The second site, PaidViewpoint, is pretty good too. I just did a $0.50 survey that was advertised as 7 minutes, but actually took 3 minutes. Both of those rates are great for a survey site! I would say the usual rate there is closer to $0.50 for 7 minutes.
Pros of PaidViewpoint:
– Pretty good pay per hour for a survey site
– No disqualifications – if you don’t qualify for a survey, it gives you demographic questions instead and you still get $0.10
– You get emails alerting you to new surveys (though I think not all of them)Cons of PaidViewpoint:
– The surveys are not super frequent
– It has a more corporate feel and generally has marketing type surveys
– Not as good pay as Connect
– $15 payout thresholdWe have earned $16.29 so far on PaidViewpoint. $15.40 of that has reached our PayPal.
Join PaidViewpoint (non-referral link)
Join PaidViewpoint (referral link, I get a bonus of 20% of your earnings up to $25, your earnings do not change)
The third platform, Benjamin, is not a site but an app. It is technically an app where you can do surveys, but I haven’t bothered, since I’m pretty sure it’s the usual “disqualified from 95% of surveys, earn pennies per hour” type of survey app. I use it to “watch” ads on my phone while I do stuff on my computer.
Pros of Benjamin
– It doesn’t take a lot of active work. You tap to start the ad, wait a while while doing something else, then tap 1-5 times to close the ad and start the next one, and repeat.
– The ads are nearly endless. We can usually “watch” 150+ a day.Cons of Benjamin
– I hate ads.
– The ads pay literally one penny per ad. Unfortunately this is the best current pay I’ve found for places that pay you to watch ads.
– You have to verify your government ID with a selfie before it’ll let you cash out. Note: I don’t remember for sure if the other sites on here required this.
– Annoyingly corporate
– $25 payout thresholdWe have earned $69.73 so far on Benjamin. A little over $50 of that has reached our bank account.
Join Benjamin [Apple] [Android] (non-referral link)
Join Benjamin (referral link, we both get $1 as soon as you earn $10 in the app)
The next site, Swagbucks, is very popular. People who don’t do GPT might even have heard of it. It does not pay very well, but it has a good selection of games. We use it when we don’t want to or can’t do something that feels like work, but we do want to play mobile games, and we don’t mind playing a new one. It is best if you like puzzle games, but it does also have other games.
Pros of Swagbucks:
– You can get paid to play games. You get rewards for reaching certain levels in each game.
– A better selection of games than any other site like this I’ve tried.
– $3 minimum cashout, though it looks like the first cashout has to be $15Cons of Swagbucks:
– You’re lucky if you get $1 an hour from doing this.
– Generally, games disappear from your dashboard and no longer give rewards after 30 days.
– The surveys and stuff are not a good use of your time compared to Connect and PaidViewpoint.
– You can’t use a VPN when playing games.We have earned $130 or so in gift cards on Swagbucks. We’ve been using it since March 2023. We usually do the monthly offer of $22 worth of Swagbucks for a $25 gift card. It’s always gone through except one time when we had to send a support ticket.
Join Swagbucks (non-referral link, you can earn $10 from using cashback for a $25 purchase)
Join Swagbucks (referral link, I get a bonus of 10% of your earnings plus a $3 bonus if you earn a lot in the first month, your earnings do not change – you can still get the offer in the link above)
We are also trying out other sites and apps. We may edit this post at some point to include them, but since we haven’t gotten payouts yet from them, we prefer not to recommend them, just in case they turn out to be scams.
Finally, a GPT site I do not recommend is Freecash. It looks good, but their customer service is atrocious. It’s listed as “do not recommend” on r/beermoney, a GPT subreddit.
I hope this post was helpful! Good luck!
-
Best “Get Paid To” Sites
This is a blog post aimed at other low-income disabled people in the US. (Some sites may be available outside the US, but I can’t verify that.) If you are interested in earning small amounts of money in a way that is probably more accessible than a traditional job, and you don’t mind selling your data, this post may be for you.
First, my name is Azure. I use they/them pronouns. I am part of a plural system, which means multiple people in one bodymind. We share this blog. We are disabled and unable to work. We receive 36 hours of caregiving per week and it is not enough, which I think is the best one-sentence way to convey our severity of disability.
Currently, we are in autistic burnout, alongside our other disabilites. That means we tried too hard all our lives to pretend to not be autistic and tried too hard to achieve the same as a non-autistic person, and now we’re so exhausted we can’t independently get food for ourselves, speak with our mouth without further fatigue, or keep previous responsibilities. Recovery is possible, though it’s slow.
We used to knit and sell cute little amigurumi animals. We can’t do that right now – promoting, dealing with errors, and generally running a business is exhausting! We hope to be able to do it again someday, but not now.
So while we know we can ask for help if we need it… we are so. bored. Might as well earn a little bit of money if we can do it without hurting ourselves, right?
Thankfully, there are low-pressure, low-spoons ways to do that. Enter: “Get Paid To” sites. Common tasks include answering surveys, reaching specific levels in phone games, and watching (or “watching”) ads. (We turn our phone over for the ads.) This is a post describing our experience with these sites.
I have included referral links when possible in case you would like to use them and help us out. Please, don’t feel pressured! Feel free to use the non-referral links.
The first site, Connect Cloud Research, is my favorite. It is a survey site that pays well, for a survey site. The FAQ says researchers must pay a minimum of $7.50 per hour for time spent completing each survey. That’s higher than federal minimum wage in the US!
Pros of Connect Cloud Research:
– Very good pay per hour for a survey site
– No disqualifications – you only receive surveys you can take based on the demographic information you give, and if you do get spit out of a survey partway through, you get paid for your time
– A lot of the surveys are academic, which feels less yucky than helping a brand
– $5 payout thresholdCons of Connect Cloud Research:
– Some users may not be approved to join
– The surveys are few and far between – I completed 6 yesterday
– The survey notifications don’t really work – you generally have to check for surveys manuallyPro or con depending on your preferences:
– Most surveys are 2-4 minutes long and $0.25-$0.50 eachWe have earned $95.47 so far on Connect. Every single payment we request goes through immediately (through PayPal, but there’s an option for bank transfers with a $25 payout threshold).
Join Connect Cloud Research (there is no referral option yet)
The second site, PaidViewpoint, is pretty good too. I just did a $0.50 survey that was advertised as 7 minutes, but actually took 3 minutes. Both of those rates are great for a survey site! I would say the usual rate there is closer to $0.50 for 7 minutes.
Pros of PaidViewpoint:
– Pretty good pay per hour for a survey site
– No disqualifications – if you don’t qualify for a survey, it gives you demographic questions instead and you still get $0.10
– You get emails alerting you to new surveys (though I think not all of them)Cons of PaidViewpoint:
– The surveys are not super frequent
– It has a more corporate feel and generally has marketing type surveys
– Not as good pay as Connect
– $15 payout thresholdWe have earned $16.29 so far on PaidViewpoint. $15.40 of that has reached our PayPal.
Join PaidViewpoint (non-referral link)
Join PaidViewpoint (referral link, I get a bonus of 20% of your earnings up to $25, your earnings do not change)
The third platform, Benjamin, is not a site but an app. It is technically an app where you can do surveys, but I haven’t bothered, since I’m pretty sure it’s the usual “disqualified from 95% of surveys, earn pennies per hour” type of survey app. I use it to “watch” ads on my phone while I do stuff on my computer.
Pros of Benjamin
– It doesn’t take a lot of active work. You tap to start the ad, wait a while while doing something else, then tap 1-5 times to close the ad and start the next one, and repeat.
– The ads are nearly endless. We can usually “watch” 150+ a day.Cons of Benjamin
– I hate ads.
– The ads pay literally one penny per ad. Unfortunately this is the best current pay I’ve found for places that pay you to watch ads.
– You have to verify your government ID with a selfie before it’ll let you cash out. Note: I don’t remember for sure if the other sites on here required this.
– Annoyingly corporate
– $25 payout thresholdWe have earned $69.73 so far on Benjamin. A little over $50 of that has reached our bank account.
Join Benjamin [Apple] [Android] (non-referral link)
Join Benjamin (referral link, we both get $1 as soon as you earn $10 in the app)
The next site, Swagbucks, is very popular. People who don’t do GPT might even have heard of it. It does not pay very well, but it has a good selection of games. We use it when we don’t want to or can’t do something that feels like work, but we do want to play mobile games, and we don’t mind playing a new one. It is best if you like puzzle games, but it does also have other games.
Pros of Swagbucks:
– You can get paid to play games. You get rewards for reaching certain levels in each game.
– A better selection of games than any other site like this I’ve tried.
– $3 minimum cashout, though it looks like the first cashout has to be $15Cons of Swagbucks:
– You’re lucky if you get $1 an hour from doing this.
– Generally, games disappear from your dashboard and no longer give rewards after 30 days.
– The surveys and stuff are not a good use of your time compared to Connect and PaidViewpoint.
– You can’t use a VPN when playing games.We have earned $130 or so in gift cards on Swagbucks. We’ve been using it since March 2023. We usually do the monthly offer of $22 worth of Swagbucks for a $25 gift card. It’s always gone through except one time when we had to send a support ticket.
Join Swagbucks (non-referral link, you can earn $10 from using cashback for a $25 purchase)
Join Swagbucks (referral link, I get a bonus of 10% of your earnings plus a $3 bonus if you earn a lot in the first month, your earnings do not change – you can still get the offer in the link above)
We are also trying out other sites and apps. We may edit this post at some point to include them, but since we haven’t gotten payouts yet from them, we prefer not to recommend them, just in case they turn out to be scams.
Finally, a GPT site I do not recommend is Freecash. It looks good, but their customer service is atrocious. It’s listed as “do not recommend” on r/beermoney, a GPT subreddit.
I hope this post was helpful! Good luck!
-
Best “Get Paid To” Sites
This is a blog post aimed at other low-income disabled people in the US. (Some sites may be available outside the US, but I can’t verify that.) If you are interested in earning small amounts of money in a way that is probably more accessible than a traditional job, and you don’t mind selling your data, this post may be for you.
First, my name is Azure. I use they/them pronouns. I am part of a plural system, which means multiple people in one bodymind. We share this blog. We are disabled and unable to work. We receive 36 hours of caregiving per week and it is not enough, which I think is the best one-sentence way to convey our severity of disability.
Currently, we are in autistic burnout, alongside our other disabilites. That means we tried too hard all our lives to pretend to not be autistic and tried too hard to achieve the same as a non-autistic person, and now we’re so exhausted we can’t independently get food for ourselves, speak with our mouth without further fatigue, or keep previous responsibilities. Recovery is possible, though it’s slow.
We used to knit and sell cute little amigurumi animals. We can’t do that right now – promoting, dealing with errors, and generally running a business is exhausting! We hope to be able to do it again someday, but not now.
So while we know we can ask for help if we need it… we are so. bored. Might as well earn a little bit of money if we can do it without hurting ourselves, right?
Thankfully, there are low-pressure, low-spoons ways to do that. Enter: “Get Paid To” sites. Common tasks include answering surveys, reaching specific levels in phone games, and watching (or “watching”) ads. (We turn our phone over for the ads.) This is a post describing our experience with these sites.
I have included referral links when possible in case you would like to use them and help us out. Please, don’t feel pressured! Feel free to use the non-referral links.
The first site, Connect Cloud Research, is my favorite. It is a survey site that pays well, for a survey site. The FAQ says researchers must pay a minimum of $7.50 per hour for time spent completing each survey. That’s higher than federal minimum wage in the US!
Pros of Connect Cloud Research:
– Very good pay per hour for a survey site
– No disqualifications – you only receive surveys you can take based on the demographic information you give, and if you do get spit out of a survey partway through, you get paid for your time
– A lot of the surveys are academic, which feels less yucky than helping a brand
– $5 payout thresholdCons of Connect Cloud Research:
– Some users may not be approved to join
– The surveys are few and far between – I completed 6 yesterday
– The survey notifications don’t really work – you generally have to check for surveys manuallyPro or con depending on your preferences:
– Most surveys are 2-4 minutes long and $0.25-$0.50 eachWe have earned $95.47 so far on Connect. Every single payment we request goes through immediately (through PayPal, but there’s an option for bank transfers with a $25 payout threshold).
Join Connect Cloud Research (there is no referral option yet)
The second site, PaidViewpoint, is pretty good too. I just did a $0.50 survey that was advertised as 7 minutes, but actually took 3 minutes. Both of those rates are great for a survey site! I would say the usual rate there is closer to $0.50 for 7 minutes.
Pros of PaidViewpoint:
– Pretty good pay per hour for a survey site
– No disqualifications – if you don’t qualify for a survey, it gives you demographic questions instead and you still get $0.10
– You get emails alerting you to new surveys (though I think not all of them)Cons of PaidViewpoint:
– The surveys are not super frequent
– It has a more corporate feel and generally has marketing type surveys
– Not as good pay as Connect
– $15 payout thresholdWe have earned $16.29 so far on PaidViewpoint. $15.40 of that has reached our PayPal.
Join PaidViewpoint (non-referral link)
Join PaidViewpoint (referral link, I get a bonus of 20% of your earnings up to $25, your earnings do not change)
The third platform, Benjamin, is not a site but an app. It is technically an app where you can do surveys, but I haven’t bothered, since I’m pretty sure it’s the usual “disqualified from 95% of surveys, earn pennies per hour” type of survey app. I use it to “watch” ads on my phone while I do stuff on my computer.
Pros of Benjamin
– It doesn’t take a lot of active work. You tap to start the ad, wait a while while doing something else, then tap 1-5 times to close the ad and start the next one, and repeat.
– The ads are nearly endless. We can usually “watch” 150+ a day.Cons of Benjamin
– I hate ads.
– The ads pay literally one penny per ad. Unfortunately this is the best current pay I’ve found for places that pay you to watch ads.
– You have to verify your government ID with a selfie before it’ll let you cash out. Note: I don’t remember for sure if the other sites on here required this.
– Annoyingly corporate
– $25 payout thresholdWe have earned $69.73 so far on Benjamin. A little over $50 of that has reached our bank account.
Join Benjamin [Apple] [Android] (non-referral link)
Join Benjamin (referral link, we both get $1 as soon as you earn $10 in the app)
The next site, Swagbucks, is very popular. People who don’t do GPT might even have heard of it. It does not pay very well, but it has a good selection of games. We use it when we don’t want to or can’t do something that feels like work, but we do want to play mobile games, and we don’t mind playing a new one. It is best if you like puzzle games, but it does also have other games.
Pros of Swagbucks:
– You can get paid to play games. You get rewards for reaching certain levels in each game.
– A better selection of games than any other site like this I’ve tried.
– $3 minimum cashout, though it looks like the first cashout has to be $15Cons of Swagbucks:
– You’re lucky if you get $1 an hour from doing this.
– Generally, games disappear from your dashboard and no longer give rewards after 30 days.
– The surveys and stuff are not a good use of your time compared to Connect and PaidViewpoint.
– You can’t use a VPN when playing games.We have earned $130 or so in gift cards on Swagbucks. We’ve been using it since March 2023. We usually do the monthly offer of $22 worth of Swagbucks for a $25 gift card. It’s always gone through except one time when we had to send a support ticket.
Join Swagbucks (non-referral link, you can earn $10 from using cashback for a $25 purchase)
Join Swagbucks (referral link, I get a bonus of 10% of your earnings plus a $3 bonus if you earn a lot in the first month, your earnings do not change – you can still get the offer in the link above)
We are also trying out other sites and apps. We may edit this post at some point to include them, but since we haven’t gotten payouts yet from them, we prefer not to recommend them, just in case they turn out to be scams.
Finally, a GPT site I do not recommend is Freecash. It looks good, but their customer service is atrocious. It’s listed as “do not recommend” on r/beermoney, a GPT subreddit.
I hope this post was helpful! Good luck!
-
** Contains some spoilers for Persona 3 Reload **
I finally arrived at the end. We people who spend a lot of time playing video games are familiar with the feeling of emptiness after finishing a long game. In my case it was a mix of emptiness, satisfaction, loss, and bliss. Spending more than 90 hours immersed in a crumbling world on a mission to save it alongside my character-friends was exhausting but very, very rewarding in the end. I admit, it wasn’t easy to move on, and I still haven’t, but no immersion lasts forever and the idea of replaying the game right after the first playthrough is not feasible for now. I want to, but I prefer to let this feeling last. I started playing Persona 3 Portable in the meantime, but I don’t see myself able to complete it yet. As I wrote in my last post, even I am on a mission to play a good portion of games this year and we only have so much time to indulge in this hobby many see as a waste of time.
Now, let’s talk about Elizabeth. To those who have played the game countless times, the fact that she’s a secret boss comes as no surprise. I was perfectly convinced that her 100th request – to kill the Reaper – was the last one. I gathered a team with many buffs and debuffs, nothing fancy, just the usual decrease enemy attack/defense/accuracy/evasion and increase those very same elements for my team before performing strong magical and physical attacks. Aigis was, as usual, a godsend, but every team member had something to contribute to the fight. In the end I had to use them all to level up anyway. The first time I killed the Reaper I was overcome with a feeling of immense satisfaction. It wasn’t an easy fight, and I was one-shot a couple of times. With the right items I raised them from the dead and managed to have my team in great condition.
When I went back to Elizabeth to reap my reward, she came up with another request – to take out the ultimate adversary. At first, I thought she meant Nyx. He’s the ultimate adversary, no? No, no, no, what is this? The last Monad door had a locked door at the end of the stairs. The request specifically told me to come alone and try that door. So I went, with some very strong Personas up my sleeve, completely clueless about what I would find. To my amazement it was Elizabeth herself! She wanted to dance with me. I could think about many things we could do together, but not this, this face-to-face, this duel of titans, except there was only one titan and the other was a rabbit. I performed quite well on my first try. I may have been able to do about 650 damage. No. I managed to survive some turns. I died. Then I was asked if I wanted to change to Peaceful difficulty so I could raise from the dead and try the fight from where I lost. What a good idea, of course! Then, the unthinkable happened. Elizabeth summoned a Pixie and unleashed Megidolaon on me for a modicum of 9999 damage! Do you want to retry? Yes, of course. I attacked her – Megidolaon. I decreased her attack and accuracy – Megidolaon. I increased my evasion – Megidolaon. I guarded – Megidolaon. I knew there was no point, it was an Almighty attack, but I was desperate! I went on YouTube.
The fight follows a very specific script and involves a lot of preparations and very specific Personas with very specific skills that can only be unleashed at specific times, and the use of a calculator can be very helpful to know when to unleash a specific ultimate attack and defeat her for good. To be perfectly honest I don’t need this. In a different context, were I more knowledgeable about the game and experienced almost every aspect of it, yes, I would’ve accepted the challenge. As I am today, I don’t think I would get much satisfaction from preparing for the fight and from spending more hours at the Velvet Room than those I’ve already spent so far. I decided to leave Elizabeth at the Monad door, and maybe someday, I’ll defeat her. By the way, there’s an achievement to create a Pixie with Megidolaon in Soul Hackers 2. Funny, right?
I decided to continue with the story, and in the last two in-game weeks, I finished Aigis social link and didn’t manage to finish Fuuka’s. I know why this happened. In order to max out other social links I’d already started, I left Fuuka hanging and then this happened. Some mistakes were made in early game when I spend too much time in other activities that didn’t involve the right social links. I honestly don’t know what I’m talking about or where I failed, but since it’s possible to max out all social links in one playthrough I must have done something wrong somewhere. I just didn’t feel the need to use a guide because using one is exhausting and completely destroys the immersion. I know it from experience. I don’t regret having prioritized Aigis over Fuuka on my first playthrough. Aigis is my protector, she’s canon, she’s the holy knight, for her sword are guns, her body eternal, her memories untouched. I watched her friend route and her lover route. Since I was already taken, I decided to be with her as a friend, although at the end of the game something more seemed to be going on and I gladly accepted the outcome. It was meant to be.
On the 31st of January we would enter Tartarus and would only be able to leave after finishing all battles therein. It was the end. The remaining of the Strega were guarding Nyx, so they had to be defeated as well. It came to Junpei’s knowledge that Chidori was alive and well. The white flowers worked out well in the end! We were able to witness a nice convo between the two at the hospital, however things weren’t exactly the same as the last time they were together. Even confronted with these major changes, Junpei was happy, and it was a good conclusion to his love story. Jin and Takaya were still clinging to their nihilistic ways with pure fervor – Jin for Takaya and Takaya for the end of times – maybe as some sort of revenge for the injustice brought upon them. After all, how much would they last, their worldview already shattered?
You know that in all jrpgs there’s the power of friendship, that if we stick together, we can overcome anything, even the end of the world. I hope the same goes for climate change or war. We aren’t together actually, are we? But video games continue doing the work with diligence. It’s the little things. Finally, we stand before Nyx, everybody a bit surprised by the familiar figure. I wasn’t surprised at all. I was eager to kill him and very curious about what he had to say. Technically, Nyx was pretty much indestructible by normal means. He himself was a creation of shattered hopes, fears, shortcomings, anxieties, frustrations, the devastation of everything that holds together the very fabric of a living, thriving human being with meaningful connections to others. My Lucifer was brimming with desire from inside my sleeve. “Oh yes,” he said, “this I can feed from.” I told him to calm down, for we still had to defeat the twelve Arcana summoned by the winged beast Nyx, his mask holding a faint smile, the surrender of any will to live. The Fallen Angel retreated for a bit, still entertaining the thought of annihilating the beast that would dethrone him from his station, one only threatened by one adversary, the one waning for ages now. “This is not what’s happening right now,” I said, and proceeded with the fight. “Everyone knows that God doesn’t have many friends,” Lucifer stubbornly answered. Messiah shrugged.
The fight that followed was much more beautiful and creative than what I’d imagined. Yes, there are many other excellent final boss fights in many games, but there’s something special about finishing a long game as this, where the entire 90+ hours are not filled with banter, where the story is heavy, mature, dark, and oppressive, and where many questions about life, death, future, fear, are explored and dissected at the sound of first-class music. During this time there’s attachment to extremely well written characters, all of them with their unique stories and all of them visibly maturing while using their powers to fight an unknown entity, ready to give their lives for any chance at a future.
After defeating the twelve summoned Arcana and surviving Nyx’s attacks, it was finally time to defeat Nyx as a regular boss. I had another little trick up my sleeve, something I’ve learned with Elizabeth, an ultimate to end all ultimates. I could either fight Nyx normally and prolong the fight with my tanking capabilities and many items at hand or I could wait for my Theurgy to charge and unleash my true power over the Death God. I did the later, a cheat code much in the likeness of the one that was used against me inside that Monad door. 9999. Done. The Universe as we knew it was no more. The power of my social links gleaming in the minds of those who loved me and to whom their thoughts were aimed at a moment of need, just like a prayer.
“Blessings to the believer.” It worked. Nyx was sealed, as were our memories. After ending the Dark Hour slowly but steadily we started to forget everything prior to acquiring the power of our Personas. Everyone but Aigis, the protector, the record keeper, the one keeping our memories alive even after our passing, the one who will not know death, only reboot. Even our romantic interest wasn’t able to forget our still young love story, making plans to include us in her life and to introduce us to her family. Yukari asked for help with her mother, showing that our friendship would go a long way in the future. The boys were a bit forgetful but still wondering about our connection. Until something triggered their memories, at least what was left of them still lingering in their hearts, and we were able to meet again, to fulfill a promise.
https://swordofseiros.wordpress.com/2024/02/25/the-sins-of-others-part-3/
#aigis #arcana #atlus #death #gamePass #Games #gaming #god #jrpgs #lucifer #megidolaon #memory #messiah #nyx #ost #pcGaming #persona3Portable #persona3Reload #soulHackers2 #velvetRoom #videoGames #videogames
-
** Contains some spoilers for Persona 3 Reload **
I finally arrived at the end. We people who spend a lot of time playing video games are familiar with the feeling of emptiness after finishing a long game. In my case it was a mix of emptiness, satisfaction, loss, and bliss. Spending more than 90 hours immersed in a crumbling world on a mission to save it alongside my character-friends was exhausting but very, very rewarding in the end. I admit, it wasn’t easy to move on, and I still haven’t, but no immersion lasts forever and the idea of replaying the game right after the first playthrough is not feasible for now. I want to, but I prefer to let this feeling last. I started playing Persona 3 Portable in the meantime, but I don’t see myself able to complete it yet. As I wrote in my last post, even I am on a mission to play a good portion of games this year and we only have so much time to indulge in this hobby many see as a waste of time.
Now, let’s talk about Elizabeth. To those who have played the game countless times, the fact that she’s a secret boss comes as no surprise. I was perfectly convinced that her 100th request – to kill the Reaper – was the last one. I gathered a team with many buffs and debuffs, nothing fancy, just the usual decrease enemy attack/defense/accuracy/evasion and increase those very same elements for my team before performing strong magical and physical attacks. Aigis was, as usual, a godsend, but every team member had something to contribute to the fight. In the end I had to use them all to level up anyway. The first time I killed the Reaper I was overcome with a feeling of immense satisfaction. It wasn’t an easy fight, and I was one-shot a couple of times. With the right items I raised them from the dead and managed to have my team in great condition.
When I went back to Elizabeth to reap my reward, she came up with another request – to take out the ultimate adversary. At first, I thought she meant Nyx. He’s the ultimate adversary, no? No, no, no, what is this? The last Monad door had a locked door at the end of the stairs. The request specifically told me to come alone and try that door. So I went, with some very strong Personas up my sleeve, completely clueless about what I would find. To my amazement it was Elizabeth herself! She wanted to dance with me. I could think about many things we could do together, but not this, this face-to-face, this duel of titans, except there was only one titan and the other was a rabbit. I performed quite well on my first try. I may have been able to do about 650 damage. No. I managed to survive some turns. I died. Then I was asked if I wanted to change to Peaceful difficulty so I could raise from the dead and try the fight from where I lost. What a good idea, of course! Then, the unthinkable happened. Elizabeth summoned a Pixie and unleashed Megidolaon on me for a modicum of 9999 damage! Do you want to retry? Yes, of course. I attacked her – Megidolaon. I decreased her attack and accuracy – Megidolaon. I increased my evasion – Megidolaon. I guarded – Megidolaon. I knew there was no point, it was an Almighty attack, but I was desperate! I went on YouTube.
The fight follows a very specific script and involves a lot of preparations and very specific Personas with very specific skills that can only be unleashed at specific times, and the use of a calculator can be very helpful to know when to unleash a specific ultimate attack and defeat her for good. To be perfectly honest I don’t need this. In a different context, were I more knowledgeable about the game and experienced almost every aspect of it, yes, I would’ve accepted the challenge. As I am today, I don’t think I would get much satisfaction from preparing for the fight and from spending more hours at the Velvet Room than those I’ve already spent so far. I decided to leave Elizabeth at the Monad door, and maybe someday, I’ll defeat her. By the way, there’s an achievement to create a Pixie with Megidolaon in Soul Hackers 2. Funny, right?
I decided to continue with the story, and in the last two in-game weeks, I finished Aigis social link and didn’t manage to finish Fuuka’s. I know why this happened. In order to max out other social links I’d already started, I left Fuuka hanging and then this happened. Some mistakes were made in early game when I spend too much time in other activities that didn’t involve the right social links. I honestly don’t know what I’m talking about or where I failed, but since it’s possible to max out all social links in one playthrough I must have done something wrong somewhere. I just didn’t feel the need to use a guide because using one is exhausting and completely destroys the immersion. I know it from experience. I don’t regret having prioritized Aigis over Fuuka on my first playthrough. Aigis is my protector, she’s canon, she’s the holy knight, for her sword are guns, her body eternal, her memories untouched. I watched her friend route and her lover route. Since I was already taken, I decided to be with her as a friend, although at the end of the game something more seemed to be going on and I gladly accepted the outcome. It was meant to be.
On the 31st of January we would enter Tartarus and would only be able to leave after finishing all battles therein. It was the end. The remaining of the Strega were guarding Nyx, so they had to be defeated as well. It came to Junpei’s knowledge that Chidori was alive and well. The white flowers worked out well in the end! We were able to witness a nice convo between the two at the hospital, however things weren’t exactly the same as the last time they were together. Even confronted with these major changes, Junpei was happy, and it was a good conclusion to his love story. Jin and Takaya were still clinging to their nihilistic ways with pure fervor – Jin for Takaya and Takaya for the end of times – maybe as some sort of revenge for the injustice brought upon them. After all, how much would they last, their worldview already shattered?
You know that in all jrpgs there’s the power of friendship, that if we stick together, we can overcome anything, even the end of the world. I hope the same goes for climate change or war. We aren’t together actually, are we? But video games continue doing the work with diligence. It’s the little things. Finally, we stand before Nyx, everybody a bit surprised by the familiar figure. I wasn’t surprised at all. I was eager to kill him and very curious about what he had to say. Technically, Nyx was pretty much indestructible by normal means. He himself was a creation of shattered hopes, fears, shortcomings, anxieties, frustrations, the devastation of everything that holds together the very fabric of a living, thriving human being with meaningful connections to others. My Lucifer was brimming with desire from inside my sleeve. “Oh yes,” he said, “this I can feed from.” I told him to calm down, for we still had to defeat the twelve Arcana summoned by the winged beast Nyx, his mask holding a faint smile, the surrender of any will to live. The Fallen Angel retreated for a bit, still entertaining the thought of annihilating the beast that would dethrone him from his station, one only threatened by one adversary, the one waning for ages now. “This is not what’s happening right now,” I said, and proceeded with the fight. “Everyone knows that God doesn’t have many friends,” Lucifer stubbornly answered. Messiah shrugged.
The fight that followed was much more beautiful and creative than what I’d imagined. Yes, there are many other excellent final boss fights in many games, but there’s something special about finishing a long game as this, where the entire 90+ hours are not filled with banter, where the story is heavy, mature, dark, and oppressive, and where many questions about life, death, future, fear, are explored and dissected at the sound of first-class music. During this time there’s attachment to extremely well written characters, all of them with their unique stories and all of them visibly maturing while using their powers to fight an unknown entity, ready to give their lives for any chance at a future.
After defeating the twelve summoned Arcana and surviving Nyx’s attacks, it was finally time to defeat Nyx as a regular boss. I had another little trick up my sleeve, something I’ve learned with Elizabeth, an ultimate to end all ultimates. I could either fight Nyx normally and prolong the fight with my tanking capabilities and many items at hand or I could wait for my Theurgy to charge and unleash my true power over the Death God. I did the later, a cheat code much in the likeness of the one that was used against me inside that Monad door. 9999. Done. The Universe as we knew it was no more. The power of my social links gleaming in the minds of those who loved me and to whom their thoughts were aimed at a moment of need, just like a prayer.
“Blessings to the believer.” It worked. Nyx was sealed, as were our memories. After ending the Dark Hour slowly but steadily we started to forget everything prior to acquiring the power of our Personas. Everyone but Aigis, the protector, the record keeper, the one keeping our memories alive even after our passing, the one who will not know death, only reboot. Even our romantic interest wasn’t able to forget our still young love story, making plans to include us in her life and to introduce us to her family. Yukari asked for help with her mother, showing that our friendship would go a long way in the future. The boys were a bit forgetful but still wondering about our connection. Until something triggered their memories, at least what was left of them still lingering in their hearts, and we were able to meet again, to fulfill a promise.
https://swordofseiros.wordpress.com/2024/02/25/the-sins-of-others-part-3/
#aigis #arcana #atlus #death #gamePass #Games #gaming #god #jrpgs #lucifer #megidolaon #memory #messiah #nyx #ost #pcGaming #persona3Portable #persona3Reload #soulHackers2 #velvetRoom #videoGames #videogames
-
** Contains some spoilers for Persona 3 Reload **
I finally arrived at the end. We people who spend a lot of time playing video games are familiar with the feeling of emptiness after finishing a long game. In my case it was a mix of emptiness, satisfaction, loss, and bliss. Spending more than 90 hours immersed in a crumbling world on a mission to save it alongside my character-friends was exhausting but very, very rewarding in the end. I admit, it wasn’t easy to move on, and I still haven’t, but no immersion lasts forever and the idea of replaying the game right after the first playthrough is not feasible for now. I want to, but I prefer to let this feeling last. I started playing Persona 3 Portable in the meantime, but I don’t see myself able to complete it yet. As I wrote in my last post, even I am on a mission to play a good portion of games this year and we only have so much time to indulge in this hobby many see as a waste of time.
Now, let’s talk about Elizabeth. To those who have played the game countless times, the fact that she’s a secret boss comes as no surprise. I was perfectly convinced that her 100th request – to kill the Reaper – was the last one. I gathered a team with many buffs and debuffs, nothing fancy, just the usual decrease enemy attack/defense/accuracy/evasion and increase those very same elements for my team before performing strong magical and physical attacks. Aigis was, as usual, a godsend, but every team member had something to contribute to the fight. In the end I had to use them all to level up anyway. The first time I killed the Reaper I was overcome with a feeling of immense satisfaction. It wasn’t an easy fight, and I was one-shot a couple of times. With the right items I raised them from the dead and managed to have my team in great condition.
When I went back to Elizabeth to reap my reward, she came up with another request – to take out the ultimate adversary. At first, I thought she meant Nyx. He’s the ultimate adversary, no? No, no, no, what is this? The last Monad door had a locked door at the end of the stairs. The request specifically told me to come alone and try that door. So I went, with some very strong Personas up my sleeve, completely clueless about what I would find. To my amazement it was Elizabeth herself! She wanted to dance with me. I could think about many things we could do together, but not this, this face-to-face, this duel of titans, except there was only one titan and the other was a rabbit. I performed quite well on my first try. I may have been able to do about 650 damage. No. I managed to survive some turns. I died. Then I was asked if I wanted to change to Peaceful difficulty so I could raise from the dead and try the fight from where I lost. What a good idea, of course! Then, the unthinkable happened. Elizabeth summoned a Pixie and unleashed Megidolaon on me for a modicum of 9999 damage! Do you want to retry? Yes, of course. I attacked her – Megidolaon. I decreased her attack and accuracy – Megidolaon. I increased my evasion – Megidolaon. I guarded – Megidolaon. I knew there was no point, it was an Almighty attack, but I was desperate! I went on YouTube.
The fight follows a very specific script and involves a lot of preparations and very specific Personas with very specific skills that can only be unleashed at specific times, and the use of a calculator can be very helpful to know when to unleash a specific ultimate attack and defeat her for good. To be perfectly honest I don’t need this. In a different context, were I more knowledgeable about the game and experienced almost every aspect of it, yes, I would’ve accepted the challenge. As I am today, I don’t think I would get much satisfaction from preparing for the fight and from spending more hours at the Velvet Room than those I’ve already spent so far. I decided to leave Elizabeth at the Monad door, and maybe someday, I’ll defeat her. By the way, there’s an achievement to create a Pixie with Megidolaon in Soul Hackers 2. Funny, right?
I decided to continue with the story, and in the last two in-game weeks, I finished Aigis social link and didn’t manage to finish Fuuka’s. I know why this happened. In order to max out other social links I’d already started, I left Fuuka hanging and then this happened. Some mistakes were made in early game when I spend too much time in other activities that didn’t involve the right social links. I honestly don’t know what I’m talking about or where I failed, but since it’s possible to max out all social links in one playthrough I must have done something wrong somewhere. I just didn’t feel the need to use a guide because using one is exhausting and completely destroys the immersion. I know it from experience. I don’t regret having prioritized Aigis over Fuuka on my first playthrough. Aigis is my protector, she’s canon, she’s the holy knight, for her sword are guns, her body eternal, her memories untouched. I watched her friend route and her lover route. Since I was already taken, I decided to be with her as a friend, although at the end of the game something more seemed to be going on and I gladly accepted the outcome. It was meant to be.
On the 31st of January we would enter Tartarus and would only be able to leave after finishing all battles therein. It was the end. The remaining of the Strega were guarding Nyx, so they had to be defeated as well. It came to Junpei’s knowledge that Chidori was alive and well. The white flowers worked out well in the end! We were able to witness a nice convo between the two at the hospital, however things weren’t exactly the same as the last time they were together. Even confronted with these major changes, Junpei was happy, and it was a good conclusion to his love story. Jin and Takaya were still clinging to their nihilistic ways with pure fervor – Jin for Takaya and Takaya for the end of times – maybe as some sort of revenge for the injustice brought upon them. After all, how much would they last, their worldview already shattered?
You know that in all jrpgs there’s the power of friendship, that if we stick together, we can overcome anything, even the end of the world. I hope the same goes for climate change or war. We aren’t together actually, are we? But video games continue doing the work with diligence. It’s the little things. Finally, we stand before Nyx, everybody a bit surprised by the familiar figure. I wasn’t surprised at all. I was eager to kill him and very curious about what he had to say. Technically, Nyx was pretty much indestructible by normal means. He himself was a creation of shattered hopes, fears, shortcomings, anxieties, frustrations, the devastation of everything that holds together the very fabric of a living, thriving human being with meaningful connections to others. My Lucifer was brimming with desire from inside my sleeve. “Oh yes,” he said, “this I can feed from.” I told him to calm down, for we still had to defeat the twelve Arcana summoned by the winged beast Nyx, his mask holding a faint smile, the surrender of any will to live. The Fallen Angel retreated for a bit, still entertaining the thought of annihilating the beast that would dethrone him from his station, one only threatened by one adversary, the one waning for ages now. “This is not what’s happening right now,” I said, and proceeded with the fight. “Everyone knows that God doesn’t have many friends,” Lucifer stubbornly answered. Messiah shrugged.
The fight that followed was much more beautiful and creative than what I’d imagined. Yes, there are many other excellent final boss fights in many games, but there’s something special about finishing a long game as this, where the entire 90+ hours are not filled with banter, where the story is heavy, mature, dark, and oppressive, and where many questions about life, death, future, fear, are explored and dissected at the sound of first-class music. During this time there’s attachment to extremely well written characters, all of them with their unique stories and all of them visibly maturing while using their powers to fight an unknown entity, ready to give their lives for any chance at a future.
After defeating the twelve summoned Arcana and surviving Nyx’s attacks, it was finally time to defeat Nyx as a regular boss. I had another little trick up my sleeve, something I’ve learned with Elizabeth, an ultimate to end all ultimates. I could either fight Nyx normally and prolong the fight with my tanking capabilities and many items at hand or I could wait for my Theurgy to charge and unleash my true power over the Death God. I did the later, a cheat code much in the likeness of the one that was used against me inside that Monad door. 9999. Done. The Universe as we knew it was no more. The power of my social links gleaming in the minds of those who loved me and to whom their thoughts were aimed at a moment of need, just like a prayer.
“Blessings to the believer.” It worked. Nyx was sealed, as were our memories. After ending the Dark Hour slowly but steadily we started to forget everything prior to acquiring the power of our Personas. Everyone but Aigis, the protector, the record keeper, the one keeping our memories alive even after our passing, the one who will not know death, only reboot. Even our romantic interest wasn’t able to forget our still young love story, making plans to include us in her life and to introduce us to her family. Yukari asked for help with her mother, showing that our friendship would go a long way in the future. The boys were a bit forgetful but still wondering about our connection. Until something triggered their memories, at least what was left of them still lingering in their hearts, and we were able to meet again, to fulfill a promise.
https://swordofseiros.wordpress.com/2024/02/25/the-sins-of-others-part-3/
#aigis #arcana #atlus #death #gamePass #Games #gaming #god #jrpgs #lucifer #megidolaon #memory #messiah #nyx #ost #pcGaming #persona3Portable #persona3Reload #soulHackers2 #velvetRoom #videoGames #videogames
-
@Ben Pate 🤘🏻 Allow me to take a look at this from a Hubzilla/(streams)/Forte point of view.The Sin of Overwhelming Complexity: Instance Selection Paralysis
The only way to really combat this effectively is by hiding the whole concept of servers/instances at first, railroading everyone to a server and only letting them know about decentralisation and servers/instances after the fact.
In theory, this could be doable with Hubzilla, (streams) and Forte, and even better than with Mastodon with its themed servers. It wouldn't make sense to offer Hubzilla, (streams) or Forte servers for certain topics or target audiences, seeing as the whole thing would become moot the very moment when you make your first clone on another server. Simply build a kind of "automatic on-boarder" that sends everyone to the geographically closest open-registration server.
In practice, that'd be a bad idea, but for a different reason than on Mastodon. And that's how these servers tend to be very different. Not in topic. Not in target audiences. Not in rules. But in features. Hubzilla is modular, (streams) is modular, Forte is modular, and each admin decides differently on which "apps" to activate. Then you want to join Hubzilla for one cool feature, but the on-boarder railroads you to a server where that very feature isn't even activated.
Sure, the on-boarder could include the option to select certain features that you absolutely must have in your new home and then pick a server that has them. But that'd be extra hassle and extra confusing.
Besides, where'd you put that on-boarder? On the official Hubzilla website? Haha, no can do. The official Hubzilla website is a webpage on a Hubzilla channel itself. It's all just dumb old static HTML with a CSS. If it's even HTML and not Markdown or BBcode, that is. You couldn't add scripts to it if you tried.
Oh, and (streams) and Forte don't even have official websites. And (streams) will never have one, seeing as it's officially and intentionally nameless, brandless and totally not even a project. Their "websites" are readme files in their code repositories on Codeberg.The Sin of Inconsistent Navigation: Timeline Turmoil
The streams on Hubzilla, (streams) and Forte are quite a bit different from Mastodon timelines.
First of all, what you usually don't have on public servers is the counterpart to Mastodon's local timeline and Mastodon's federated timeline. On all three, this would be only one stream, the "public stream" or "pubstream". It can be switched by the admin to either what'd be local or what'd be federated. However, public servers usually have it off entirely. Unavailable even to local users. That's because the admins don't want to be held liable for what's happening on the pubstream.
Technically speaking, you only have one stream on a public server, and that's your channel stream. It's much more efficient than a Mastodon timeline because it always shows entire conversations by default instead of detached single-message piecemeal, and because it has a counter for unread messages which even lists these unread messages for you to directly go to the corresponding conversation. But that's another story.
However, your channel stream can be viewed on your channel page, conversation by conversation, or it can be viewed on the stream page as an actual stream with all conversations shown in a feed/timeline-like fashion, one upon another, and with its own set of built-in filters such as "only my own messages" or "only conversations started by members of one particular privacy group/access list" or "only conversations from one particular group actor". It's actually much more convenient than any Mastodon timeline, but for those who want a Twitter clone for dumb-dumbs, it can be very overwhelming.
Yes, Hubzilla, (streams) and Forte are much more complex in handling than, say, snac2. But they're also much more complex in features than snac2. That power is their USP. And that power must be harnessed somehow.The Sin of Remote Interaction Purgatory: Federation Gymnastics
Sure, Hubzilla, (streams) and Forte have some of the best built-in search systems in the whole Fediverse. They can pull almost everything onto your channel stream just by searching for it. And if it has replies, chances are they pull these in as well.
But still, they're geared towards desktop users. They still require copy-paste. Phone users don't copy paste. Most of them don't even know the very concept of copy-paste. For most of those who do, copy-paste is much too fumbly if the input device available to them is a 6" touch screen.
You can't blame them, though. This is next to impossible to do any differently. I mean, you won't see a button magically appear with which you can pull in just that one post or comment you want to pull in.
Rather, the issue is that they can only reel in almost everything. Sometimes the search returns nothing, like a void. Sometimes the search runs indefinitely without any kind of result. This may be because someone has blocked your channel, because someone has blocked your entire server, because the server someone is on has blocked you or your entire server, because Hubzilla/(streams)/Forte doesn't understand the URI pasted into the search field or whatever.
So this is made worse by Hubzilla, (streams) and Forte not knowing what they can search for, what they can't and why not.
Connecting with someone whom you encounter on your channel stream is fairly easy. Connections can be initiated with only two clicks. Either you click their long name, and you're taken to a pretty much distraction-less local "intermediate page" with a striking green button that's labelled "+ Connect". Or if you don't want to leave the channel page, you hover your mouse cursor over their profile picture, click on the little white arrow that appears, and you get a small menu that offers you the "Connect" option as well. Granted, even some veterans don't know the latter trick because it isn't immediately advertised on the channel page.
Also, sure, you don't simply follow them right off the bat with nothing else to do like on Mastodon. You're taken to your Connections page, and you have to configure the connection (you don't have to do that on Mastodon because you can't configure connections on Mastodon).
Following accounts/channels from the directory is a bit easier. The green "+ Connect" button is there right away (unless you're already connected). However, Hubzilla's directory only lists channels based on the Nomad protocol, i.e. Hubzilla and (streams) channels, because ActivityPub is only implemented in an optional, off-by-default-for-new-channels add-on whereas it's in the core and on by default on (streams) and the only available protocol on Forte.
Importing contents or following actors when seeing them locally on other servers without copy-pasting and searching can be done. It requires OpenWebAuth magic single sign-on, however, and it requires it to be implemented on all servers of all Fediverse server applications from Mastodon to WordPress to Ghost to Flipboard. Hubzilla, (streams) and Forte are the only Fediverse server applications with full (client-side and server-side) OpenWebAuth implementations. But that's of little use if the rest of the Fediverse doesn't have server-side implementations, and Mastodon has even silently rejected a mere client-side implementation already developed to a pull request two years ago.The Sin of DM Disasters Waiting to Happen
I think this is less of an issue on Hubzilla, (streams) and Forte because they handle DMs differently from Mastodon (which "the Fediverse" actually refers to in the article).
On all three, DMs are integrated into their extensive, fine-grained permissions system in which everything is only public if it's really public. The difference between a post and a DM is not just a switch.
If I want to DM you, I can either tag you@!{[email protected]}rather than@[url=https://mastodon.social/@benpate]Ben Pate 🤘🏻[/url]. Then you're a) the only one to whom the message is sent (it literally doesn't even go out to any other server than mastodon.social plus my clone on hub.hubzilla.de as can be seen in the delivery report) and b) the only one who is granted permission to view the message.
Or I can use the padlock icon and select you from the opening list as the sole recipient. The very moment that I select certain recipients, the post I'm composing quits being public, and the padlock icon switches from open to closed. This isn't a one-click or two-click toggle. You don't do that casually. It's basically configuration. It requires so many mouse clicks that you do it consciously and intentionally. If you want to post in private, you have to really want to post in private.
Better yet: You can default to posting only to a certain limited target audience. In fact, by default on a brand-new channel, you only post to the members of one privacy group/access list (which is a Mastodon list on coke and 'roids). You have to manually reconfigure your new channel if you want to post to the general public by default.
If you preview your post, you can see whether it's a direct message to one or multiple single connections (envelope icon next to your long name), a limited-permissions message to one or multiple privacy groups/access lists/group actors (closed padlock icon) or actually public (no icon).
Even better yet: Posts to group actors generally aren't public. Posts to at least Friendica groups, Hubzilla forums, (streams) groups and Forte groups are never public. They do not go out to your followers as well unless they're connected to the same group. And this is independent from whether a group is public or private. You can't accidentially post to a group actor in public, and if you do, you don't post to that group actor at all, at least not in a way that makes the group actor forward your post to its other connections.
Granted, what does not happen is your background switching from your background colour or background image (which can be user-configured) to red #800000 or a yellow-and-back chevron pattern when you change visibility and permissions to something that isn't public.The Sin of Ghost Conversations and Phantom Follower Counts
And again, when @Tim Chambers says, "the Fediverse", he almost exclusively means Mastodon. He writes as if the entire Fediverse handled conversations as terribly as Mastodon, as if the entire Fediverse was as blissfully unaware of enclosed conversations as Mastodon. Which is not the case.
Hubzilla, (streams) and Forte, as well as their ancestor Friendica, handle conversations in ways that exceed Mastodon users' imaginations and wildest dreams by magnitudes. Unlike Mastodon, they know threaded conversations, and they see them as enclosed objects where only the start post counts as a post, and everything else counts as a comment.
This means that once you've received a post on your stream, you will also receive all comments on that post, regardless of whether or not you follow the commenters, regardless of whether or not they mention you. That's because all four reel in the comments not from the commentors, but from the original poster who is perceived as the owner of the thread. Only blocks or channel-wide filters can prevent comments from coming in.
Beyond that, (streams) was the first to introduce Conversation Containers. Forte inherited them from (streams), and when they were defined in FEP-171b, Hubzilla implemented them, too.
Here on Hubzilla, I can see all comments in this thread because my channel has fetched them directly from @Johannes Ernst. And I can actually see them right away because that's the default view here on Hubzilla, rather than Mastodon's piecemeal.
Even if you import a post manually using the search feature (and you better import the actual start post), AFAIK existing comments will eventually be backfilled. Comments that come in after importing will definitely end up on your stream as part of the thread.
So this is not a shortcoming of the Fediverse. The Fediverse has been able to do better for 15 years. It's a shortcoming of Mastodon.
The only "issue" here may be that it sometimes takes some time for a comment to show up for some reasons. But unless there are blocks or filters in play, it eventually will.The Sin of Invisible Discovery: The Content Mirage
I'm not going to pick on the audacious implication that "Eugen and team" invented the Fediverse.
But Tim writes like literally everyone wants "the Fediverse" (read, actually Mastodon) to be literally Twitter without Musk.
Also:- Friendica has had full-blown full-text search since its inception as early as 2010. Five and a half years longer than Mastodon has even existed.
- Hubzilla has had full-blown full-text search since its inception as early as 2011 when it was forked from Free-Friendika. It has inherited full-text search from Friendica.
- (streams) and Forte have had full-blown full-text search since their respective inception in 2021 and 2024, both having inherited it themselves.
Oh, and none of them has an explicit opt-in switch to soothe panicking Twitter converts because panicking Twitter converts have never been the primary target audience of either of them.
Instead, on Hubzilla, whether someone can find your content depends on whether they've got permission to view it in the first place ("Can view my channel stream and posts"). If it's public, they have it. Full stop. Public is public is public. Stop whining. You've made it public, now deal with everything being able to see it.
(streams) and Forte behave the same. In addition, they have an extra permission: "Grant search access to your channel stream and posts". This controls who may search your channel stream using your own local search feature while visiting your channel locally. Something that isn't even possible on Mastodon.
As for not having any content on my channel stream before I connect to anyone: I, for one, do not want some algorithm to force content upon me that I'm not interested in. Full. Frigging. Stop. I want to have full and exclusive control over what I see and what I don't.The Sin of User Discovery Hell
Can it really be that Mastodon's directory is so much worse than Friendica's, Hubzilla's, (streams)' and Forte's directories? I guess it is because it really only lists local accounts on that one particular server. A side-effect of Mastodon being a microblogging service and Twitter clone. And not a full-blown, fully-featured social network and Facebook alternative. No, seriously, it isn't that.
Friendica is. It was designed as such. It was designed to take Facebook's place, and not by aping and cloning Facebook, but by being better than Facebook.
The directory on each node is decentralised. It lists all actors known to that node. What's outright unimaginable from a Mastodon point of view: It takes the keywords in the profiles into account. Better even: It ranks suggestions by the number of matching keywords.
Want something centralised instead? Try the Friendica Directory. Looking for people? Looking for news accounts? Looking for groups? There are specialised tabs for that. Friendica can tell them apart, and so can the Friendica Directory.
Caveat: The Friendica Directory only lists Friendica accounts. Friendica's built-in directory should list everything it knows. I haven't used Friendica in many years, but I guess this even includes diaspora* accounts because why not?
Hubzilla has indirectly inherited its directory from Friendica. This is the directory on Netzgemeinde, the biggest Hubzilla hub.
Again, it lists local as well as federated channels. You can choose whether to see only local channels ("This Website Only") or federated channels as well. You can choose whether channels flagged NSFW shall be listed or not ("Safe Mode"). You can choose to only have group actors listed that let themselves be listed ("Public Forums Only"). You have a cloud of keywords from the keyword lists in the profiles that you can filter by (Mastodon doesn't even have keyword lists in profiles). You have full-text search for names and keywords. There's even a Facebook-style suggestion mode that proposes connections to you with a ranking based on your keywords and their keywords as well as the number of common connections, and that still has the same filters.
Caveat this time: Hubzilla's directory only supports the one sole protocol built into Hubzilla's core. And that's Zot6. This means that Hubzilla's directory only lists Hubzilla and (streams) channels because Hubzilla and (streams) are the only Fediverse server applications that support Zot6.
(streams) and Forte have inherited their directories again. And they probably have the most powerful decentralised directories in the entire Fediverse. I'd give you a link, but (streams) directories generally aren't public; only local channels can access them.
These directories are similar to the ones on Hubzilla. You see local and federated actors, and you can choose to only see local actors ("This Website Only"). You can choose to only see group actors ("Groups Only"). You can choose to not see channels flagged NSFW ("Safe Mode"). What's new: Inactive actors can be kept out, too ("Recently Updated").
Now it comes: (streams) has ActivityPub built into its core, and it's on by default on new channels. Forte is entirely based on ActivityPub.
This means that their directories can list anything from anywhere that uses ActivityPub. "Groups Only" gives you Guppe groups, Lemmy communities, /kbin and Mbin magazines, PieFed communities, Mobilizon groups, Flipboard magazines, Friendica groups, Hubzilla forums, (streams) groups, Forte groups etc., all on one list.
(streams) has a slight edge over Forte here because it also lists Hubzilla and (streams) channels that have ActivityPub off such as the Streams Users Tea Garden where ActivityPub was turned off with the very intention to keep Mastodon out.
If there was a gigantic Forte server, as big as mastodon.social, and its directory was accessible to the public, that directory would be the best directory in the Fediverse for anything really. If it was on (streams), it would list more, but it would confuse some users of e.g. Mastodon who'd try to follow Hubzilla or (streams) channels that have ActivityPub off. Forte simply doesn't list these because it can't find them.
A global directory of everything sounds like a good idea, but it's next to impossible to implement.
Either the directory would go look for actors itself. In order to do that, it would have to know within a split-second not only whenever a new actor is created somewhere so it can index that actor right away, but also whenever a new server is spun up so that the admin actor can be indexed, and that server can be watched. How is it supposed to know all that?
Well, or the directory, a single, monolithic, centralised website, would have to be hard-coded into all Fediverse server software. That way, each server could immediately report newly created actors to the central directory upon their creation.
For starters, this would make the whole Fediverse depend on one single centralised website under the control of, if bad comes to worse, one person.
Besides, this would be a privacy nightmare. Let's suppose I create a new (streams) channel that's supposed to be private. Its existence and all its properties would be sent to the central directory before I can set it to private and restrict its permissions. This wouldn't be so bad on Hubzilla because I'd make the channel private before I turn on PubCrawl and make the channel accessible to the directory in the first place because the directory would only understand ActivityPub.
Of course, the directory would mostly be built against Mastodon. It would not understand the permissions systems implemented on Hubzilla, (streams) and Forte, and it might happily siphon off the profiles of channels where access to the profile is restricted and make them publicly accessible. On the other hand, this is likely to mean that the directory couldn't read most of Hubzilla's, (streams)' and Forte's profile text fields anyway because Mastodon doesn't have them.
But such a centralised directory wouldn't make connecting to other users that much easier and more convenient. You'd still have to copy and paste URLs or IDs into your local search and search for them (unless you're on Friendica, Hubzilla, (streams) or Forte where you can connect to URLs directly). At the very least, you should be able to go to the centralised directory and follow anyone just by clicking or tapping them. That, however, would require OpenWebAuth support on both your home server and that directory.
Ideally, that directory would be firmly built into all instances of all Fediverse software from snac2 to Mastodon to Hubzilla, even replacing any existing directory to confuse people less. But that would make the Fediverse even more dependent on one central website and its owner, something which should be avoided at all cost.
Lastly, nothing can ever be built into all instances of all Fediverse software. Remember that there's software with living instances that's barely being developed such as Plume. There's even software with living instances that's been officially pronounced dead such as Calckey, Firefish or /kbin. How are Firefish servers supposed to implement such a feature if nobody maintains Firefish anymore, and even the code repository was deleted?
CC: @Risotto Bias
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Friendica #Hubzilla #Streams #(streams) #Forte #OpenWebAuth #SingleSignOn #NomadicIdentity #Search #FullTextSearch #Directory #Permissions #Privacy #Conversations #ThreadedConversations #FEP_171b #ConversationContainers -
@Ben Pate 🤘🏻 Allow me to take a look at this from a Hubzilla/(streams)/Forte point of view.The Sin of Overwhelming Complexity: Instance Selection Paralysis
The only way to really combat this effectively is by hiding the whole concept of servers/instances at first, railroading everyone to a server and only letting them know about decentralisation and servers/instances after the fact.
In theory, this could be doable with Hubzilla, (streams) and Forte, and even better than with Mastodon with its themed servers. It wouldn't make sense to offer Hubzilla, (streams) or Forte servers for certain topics or target audiences, seeing as the whole thing would become moot the very moment when you make your first clone on another server. Simply build a kind of "automatic on-boarder" that sends everyone to the geographically closest open-registration server.
In practice, that'd be a bad idea, but for a different reason than on Mastodon. And that's how these servers tend to be very different. Not in topic. Not in target audiences. Not in rules. But in features. Hubzilla is modular, (streams) is modular, Forte is modular, and each admin decides differently on which "apps" to activate. Then you want to join Hubzilla for one cool feature, but the on-boarder railroads you to a server where that very feature isn't even activated.
Sure, the on-boarder could include the option to select certain features that you absolutely must have in your new home and then pick a server that has them. But that'd be extra hassle and extra confusing.
Besides, where'd you put that on-boarder? On the official Hubzilla website? Haha, no can do. The official Hubzilla website is a webpage on a Hubzilla channel itself. It's all just dumb old static HTML with a CSS. If it's even HTML and not Markdown or BBcode, that is. You couldn't add scripts to it if you tried.
Oh, and (streams) and Forte don't even have official websites. And (streams) will never have one, seeing as it's officially and intentionally nameless, brandless and totally not even a project. Their "websites" are readme files in their code repositories on Codeberg.The Sin of Inconsistent Navigation: Timeline Turmoil
The streams on Hubzilla, (streams) and Forte are quite a bit different from Mastodon timelines.
First of all, what you usually don't have on public servers is the counterpart to Mastodon's local timeline and Mastodon's federated timeline. On all three, this would be only one stream, the "public stream" or "pubstream". It can be switched by the admin to either what'd be local or what'd be federated. However, public servers usually have it off entirely. Unavailable even to local users. That's because the admins don't want to be held liable for what's happening on the pubstream.
Technically speaking, you only have one stream on a public server, and that's your channel stream. It's much more efficient than a Mastodon timeline because it always shows entire conversations by default instead of detached single-message piecemeal, and because it has a counter for unread messages which even lists these unread messages for you to directly go to the corresponding conversation. But that's another story.
However, your channel stream can be viewed on your channel page, conversation by conversation, or it can be viewed on the stream page as an actual stream with all conversations shown in a feed/timeline-like fashion, one upon another, and with its own set of built-in filters such as "only my own messages" or "only conversations started by members of one particular privacy group/access list" or "only conversations from one particular group actor". It's actually much more convenient than any Mastodon timeline, but for those who want a Twitter clone for dumb-dumbs, it can be very overwhelming.
Yes, Hubzilla, (streams) and Forte are much more complex in handling than, say, snac2. But they're also much more complex in features than snac2. That power is their USP. And that power must be harnessed somehow.The Sin of Remote Interaction Purgatory: Federation Gymnastics
Sure, Hubzilla, (streams) and Forte have some of the best built-in search systems in the whole Fediverse. They can pull almost everything onto your channel stream just by searching for it. And if it has replies, chances are they pull these in as well.
But still, they're geared towards desktop users. They still require copy-paste. Phone users don't copy paste. Most of them don't even know the very concept of copy-paste. For most of those who do, copy-paste is much too fumbly if the input device available to them is a 6" touch screen.
You can't blame them, though. This is next to impossible to do any differently. I mean, you won't see a button magically appear with which you can pull in just that one post or comment you want to pull in.
Rather, the issue is that they can only reel in almost everything. Sometimes the search returns nothing, like a void. Sometimes the search runs indefinitely without any kind of result. This may be because someone has blocked your channel, because someone has blocked your entire server, because the server someone is on has blocked you or your entire server, because Hubzilla/(streams)/Forte doesn't understand the URI pasted into the search field or whatever.
So this is made worse by Hubzilla, (streams) and Forte not knowing what they can search for, what they can't and why not.
Connecting with someone whom you encounter on your channel stream is fairly easy. Connections can be initiated with only two clicks. Either you click their long name, and you're taken to a pretty much distraction-less local "intermediate page" with a striking green button that's labelled "+ Connect". Or if you don't want to leave the channel page, you hover your mouse cursor over their profile picture, click on the little white arrow that appears, and you get a small menu that offers you the "Connect" option as well. Granted, even some veterans don't know the latter trick because it isn't immediately advertised on the channel page.
Also, sure, you don't simply follow them right off the bat with nothing else to do like on Mastodon. You're taken to your Connections page, and you have to configure the connection (you don't have to do that on Mastodon because you can't configure connections on Mastodon).
Following accounts/channels from the directory is a bit easier. The green "+ Connect" button is there right away (unless you're already connected). However, Hubzilla's directory only lists channels based on the Nomad protocol, i.e. Hubzilla and (streams) channels, because ActivityPub is only implemented in an optional, off-by-default-for-new-channels add-on whereas it's in the core and on by default on (streams) and the only available protocol on Forte.
Importing contents or following actors when seeing them locally on other servers without copy-pasting and searching can be done. It requires OpenWebAuth magic single sign-on, however, and it requires it to be implemented on all servers of all Fediverse server applications from Mastodon to WordPress to Ghost to Flipboard. Hubzilla, (streams) and Forte are the only Fediverse server applications with full (client-side and server-side) OpenWebAuth implementations. But that's of little use if the rest of the Fediverse doesn't have server-side implementations, and Mastodon has even silently rejected a mere client-side implementation already developed to a pull request two years ago.The Sin of DM Disasters Waiting to Happen
I think this is less of an issue on Hubzilla, (streams) and Forte because they handle DMs differently from Mastodon (which "the Fediverse" actually refers to in the article).
On all three, DMs are integrated into their extensive, fine-grained permissions system in which everything is only public if it's really public. The difference between a post and a DM is not just a switch.
If I want to DM you, I can either tag you@!{[email protected]}rather than@[url=https://mastodon.social/@benpate]Ben Pate 🤘🏻[/url]. Then you're a) the only one to whom the message is sent (it literally doesn't even go out to any other server than mastodon.social plus my clone on hub.hubzilla.de as can be seen in the delivery report) and b) the only one who is granted permission to view the message.
Or I can use the padlock icon and select you from the opening list as the sole recipient. The very moment that I select certain recipients, the post I'm composing quits being public, and the padlock icon switches from open to closed. This isn't a one-click or two-click toggle. You don't do that casually. It's basically configuration. It requires so many mouse clicks that you do it consciously and intentionally. If you want to post in private, you have to really want to post in private.
Better yet: You can default to posting only to a certain limited target audience. In fact, by default on a brand-new channel, you only post to the members of one privacy group/access list (which is a Mastodon list on coke and 'roids). You have to manually reconfigure your new channel if you want to post to the general public by default.
If you preview your post, you can see whether it's a direct message to one or multiple single connections (envelope icon next to your long name), a limited-permissions message to one or multiple privacy groups/access lists/group actors (closed padlock icon) or actually public (no icon).
Even better yet: Posts to group actors generally aren't public. Posts to at least Friendica groups, Hubzilla forums, (streams) groups and Forte groups are never public. They do not go out to your followers as well unless they're connected to the same group. And this is independent from whether a group is public or private. You can't accidentially post to a group actor in public, and if you do, you don't post to that group actor at all, at least not in a way that makes the group actor forward your post to its other connections.
Granted, what does not happen is your background switching from your background colour or background image (which can be user-configured) to red #800000 or a yellow-and-back chevron pattern when you change visibility and permissions to something that isn't public.The Sin of Ghost Conversations and Phantom Follower Counts
And again, when @Tim Chambers says, "the Fediverse", he almost exclusively means Mastodon. He writes as if the entire Fediverse handled conversations as terribly as Mastodon, as if the entire Fediverse was as blissfully unaware of enclosed conversations as Mastodon. Which is not the case.
Hubzilla, (streams) and Forte, as well as their ancestor Friendica, handle conversations in ways that exceed Mastodon users' imaginations and wildest dreams by magnitudes. Unlike Mastodon, they know threaded conversations, and they see them as enclosed objects where only the start post counts as a post, and everything else counts as a comment.
This means that once you've received a post on your stream, you will also receive all comments on that post, regardless of whether or not you follow the commenters, regardless of whether or not they mention you. That's because all four reel in the comments not from the commentors, but from the original poster who is perceived as the owner of the thread. Only blocks or channel-wide filters can prevent comments from coming in.
Beyond that, (streams) was the first to introduce Conversation Containers. Forte inherited them from (streams), and when they were defined in FEP-171b, Hubzilla implemented them, too.
Here on Hubzilla, I can see all comments in this thread because my channel has fetched them directly from @Johannes Ernst. And I can actually see them right away because that's the default view here on Hubzilla, rather than Mastodon's piecemeal.
Even if you import a post manually using the search feature (and you better import the actual start post), AFAIK existing comments will eventually be backfilled. Comments that come in after importing will definitely end up on your stream as part of the thread.
So this is not a shortcoming of the Fediverse. The Fediverse has been able to do better for 15 years. It's a shortcoming of Mastodon.
The only "issue" here may be that it sometimes takes some time for a comment to show up for some reasons. But unless there are blocks or filters in play, it eventually will.The Sin of Invisible Discovery: The Content Mirage
I'm not going to pick on the audacious implication that "Eugen and team" invented the Fediverse.
But Tim writes like literally everyone wants "the Fediverse" (read, actually Mastodon) to be literally Twitter without Musk.
Also:- Friendica has had full-blown full-text search since its inception as early as 2010. Five and a half years longer than Mastodon has even existed.
- Hubzilla has had full-blown full-text search since its inception as early as 2011 when it was forked from Free-Friendika. It has inherited full-text search from Friendica.
- (streams) and Forte have had full-blown full-text search since their respective inception in 2021 and 2024, both having inherited it themselves.
Oh, and none of them has an explicit opt-in switch to soothe panicking Twitter converts because panicking Twitter converts have never been the primary target audience of either of them.
Instead, on Hubzilla, whether someone can find your content depends on whether they've got permission to view it in the first place ("Can view my channel stream and posts"). If it's public, they have it. Full stop. Public is public is public. Stop whining. You've made it public, now deal with everything being able to see it.
(streams) and Forte behave the same. In addition, they have an extra permission: "Grant search access to your channel stream and posts". This controls who may search your channel stream using your own local search feature while visiting your channel locally. Something that isn't even possible on Mastodon.
As for not having any content on my channel stream before I connect to anyone: I, for one, do not want some algorithm to force content upon me that I'm not interested in. Full. Frigging. Stop. I want to have full and exclusive control over what I see and what I don't.The Sin of User Discovery Hell
Can it really be that Mastodon's directory is so much worse than Friendica's, Hubzilla's, (streams)' and Forte's directories? I guess it is because it really only lists local accounts on that one particular server. A side-effect of Mastodon being a microblogging service and Twitter clone. And not a full-blown, fully-featured social network and Facebook alternative. No, seriously, it isn't that.
Friendica is. It was designed as such. It was designed to take Facebook's place, and not by aping and cloning Facebook, but by being better than Facebook.
The directory on each node is decentralised. It lists all actors known to that node. What's outright unimaginable from a Mastodon point of view: It takes the keywords in the profiles into account. Better even: It ranks suggestions by the number of matching keywords.
Want something centralised instead? Try the Friendica Directory. Looking for people? Looking for news accounts? Looking for groups? There are specialised tabs for that. Friendica can tell them apart, and so can the Friendica Directory.
Caveat: The Friendica Directory only lists Friendica accounts. Friendica's built-in directory should list everything it knows. I haven't used Friendica in many years, but I guess this even includes diaspora* accounts because why not?
Hubzilla has indirectly inherited its directory from Friendica. This is the directory on Netzgemeinde, the biggest Hubzilla hub.
Again, it lists local as well as federated channels. You can choose whether to see only local channels ("This Website Only") or federated channels as well. You can choose whether channels flagged NSFW shall be listed or not ("Safe Mode"). You can choose to only have group actors listed that let themselves be listed ("Public Forums Only"). You have a cloud of keywords from the keyword lists in the profiles that you can filter by (Mastodon doesn't even have keyword lists in profiles). You have full-text search for names and keywords. There's even a Facebook-style suggestion mode that proposes connections to you with a ranking based on your keywords and their keywords as well as the number of common connections, and that still has the same filters.
Caveat this time: Hubzilla's directory only supports the one sole protocol built into Hubzilla's core. And that's Zot6. This means that Hubzilla's directory only lists Hubzilla and (streams) channels because Hubzilla and (streams) are the only Fediverse server applications that support Zot6.
(streams) and Forte have inherited their directories again. And they probably have the most powerful decentralised directories in the entire Fediverse. I'd give you a link, but (streams) directories generally aren't public; only local channels can access them.
These directories are similar to the ones on Hubzilla. You see local and federated actors, and you can choose to only see local actors ("This Website Only"). You can choose to only see group actors ("Groups Only"). You can choose to not see channels flagged NSFW ("Safe Mode"). What's new: Inactive actors can be kept out, too ("Recently Updated").
Now it comes: (streams) has ActivityPub built into its core, and it's on by default on new channels. Forte is entirely based on ActivityPub.
This means that their directories can list anything from anywhere that uses ActivityPub. "Groups Only" gives you Guppe groups, Lemmy communities, /kbin and Mbin magazines, PieFed communities, Mobilizon groups, Flipboard magazines, Friendica groups, Hubzilla forums, (streams) groups, Forte groups etc., all on one list.
(streams) has a slight edge over Forte here because it also lists Hubzilla and (streams) channels that have ActivityPub off such as the Streams Users Tea Garden where ActivityPub was turned off with the very intention to keep Mastodon out.
If there was a gigantic Forte server, as big as mastodon.social, and its directory was accessible to the public, that directory would be the best directory in the Fediverse for anything really. If it was on (streams), it would list more, but it would confuse some users of e.g. Mastodon who'd try to follow Hubzilla or (streams) channels that have ActivityPub off. Forte simply doesn't list these because it can't find them.
A global directory of everything sounds like a good idea, but it's next to impossible to implement.
Either the directory would go look for actors itself. In order to do that, it would have to know within a split-second not only whenever a new actor is created somewhere so it can index that actor right away, but also whenever a new server is spun up so that the admin actor can be indexed, and that server can be watched. How is it supposed to know all that?
Well, or the directory, a single, monolithic, centralised website, would have to be hard-coded into all Fediverse server software. That way, each server could immediately report newly created actors to the central directory upon their creation.
For starters, this would make the whole Fediverse depend on one single centralised website under the control of, if bad comes to worse, one person.
Besides, this would be a privacy nightmare. Let's suppose I create a new (streams) channel that's supposed to be private. Its existence and all its properties would be sent to the central directory before I can set it to private and restrict its permissions. This wouldn't be so bad on Hubzilla because I'd make the channel private before I turn on PubCrawl and make the channel accessible to the directory in the first place because the directory would only understand ActivityPub.
Of course, the directory would mostly be built against Mastodon. It would not understand the permissions systems implemented on Hubzilla, (streams) and Forte, and it might happily siphon off the profiles of channels where access to the profile is restricted and make them publicly accessible. On the other hand, this is likely to mean that the directory couldn't read most of Hubzilla's, (streams)' and Forte's profile text fields anyway because Mastodon doesn't have them.
But such a centralised directory wouldn't make connecting to other users that much easier and more convenient. You'd still have to copy and paste URLs or IDs into your local search and search for them (unless you're on Friendica, Hubzilla, (streams) or Forte where you can connect to URLs directly). At the very least, you should be able to go to the centralised directory and follow anyone just by clicking or tapping them. That, however, would require OpenWebAuth support on both your home server and that directory.
Ideally, that directory would be firmly built into all instances of all Fediverse software from snac2 to Mastodon to Hubzilla, even replacing any existing directory to confuse people less. But that would make the Fediverse even more dependent on one central website and its owner, something which should be avoided at all cost.
Lastly, nothing can ever be built into all instances of all Fediverse software. Remember that there's software with living instances that's barely being developed such as Plume. There's even software with living instances that's been officially pronounced dead such as Calckey, Firefish or /kbin. How are Firefish servers supposed to implement such a feature if nobody maintains Firefish anymore, and even the code repository was deleted?
CC: @Risotto Bias
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Friendica #Hubzilla #Streams #(streams) #Forte #OpenWebAuth #SingleSignOn #NomadicIdentity #Search #FullTextSearch #Directory #Permissions #Privacy #Conversations #ThreadedConversations #FEP_171b #ConversationContainers -
@Ben Pate 🤘🏻 Allow me to take a look at this from a Hubzilla/(streams)/Forte point of view.The Sin of Overwhelming Complexity: Instance Selection Paralysis
The only way to really combat this effectively is by hiding the whole concept of servers/instances at first, railroading everyone to a server and only letting them know about decentralisation and servers/instances after the fact.
In theory, this could be doable with Hubzilla, (streams) and Forte, and even better than with Mastodon with its themed servers. It wouldn't make sense to offer Hubzilla, (streams) or Forte servers for certain topics or target audiences, seeing as the whole thing would become moot the very moment when you make your first clone on another server. Simply build a kind of "automatic on-boarder" that sends everyone to the geographically closest open-registration server.
In practice, that'd be a bad idea, but for a different reason than on Mastodon. And that's how these servers tend to be very different. Not in topic. Not in target audiences. Not in rules. But in features. Hubzilla is modular, (streams) is modular, Forte is modular, and each admin decides differently on which "apps" to activate. Then you want to join Hubzilla for one cool feature, but the on-boarder railroads you to a server where that very feature isn't even activated.
Sure, the on-boarder could include the option to select certain features that you absolutely must have in your new home and then pick a server that has them. But that'd be extra hassle and extra confusing.
Besides, where'd you put that on-boarder? On the official Hubzilla website? Haha, no can do. The official Hubzilla website is a webpage on a Hubzilla channel itself. It's all just dumb old static HTML with a CSS. If it's even HTML and not Markdown or BBcode, that is. You couldn't add scripts to it if you tried.
Oh, and (streams) and Forte don't even have official websites. And (streams) will never have one, seeing as it's officially and intentionally nameless, brandless and totally not even a project. Their "websites" are readme files in their code repositories on Codeberg.The Sin of Inconsistent Navigation: Timeline Turmoil
The streams on Hubzilla, (streams) and Forte are quite a bit different from Mastodon timelines.
First of all, what you usually don't have on public servers is the counterpart to Mastodon's local timeline and Mastodon's federated timeline. On all three, this would be only one stream, the "public stream" or "pubstream". It can be switched by the admin to either what'd be local or what'd be federated. However, public servers usually have it off entirely. Unavailable even to local users. That's because the admins don't want to be held liable for what's happening on the pubstream.
Technically speaking, you only have one stream on a public server, and that's your channel stream. It's much more efficient than a Mastodon timeline because it always shows entire conversations by default instead of detached single-message piecemeal, and because it has a counter for unread messages which even lists these unread messages for you to directly go to the corresponding conversation. But that's another story.
However, your channel stream can be viewed on your channel page, conversation by conversation, or it can be viewed on the stream page as an actual stream with all conversations shown in a feed/timeline-like fashion, one upon another, and with its own set of built-in filters such as "only my own messages" or "only conversations started by members of one particular privacy group/access list" or "only conversations from one particular group actor". It's actually much more convenient than any Mastodon timeline, but for those who want a Twitter clone for dumb-dumbs, it can be very overwhelming.
Yes, Hubzilla, (streams) and Forte are much more complex in handling than, say, snac2. But they're also much more complex in features than snac2. That power is their USP. And that power must be harnessed somehow.The Sin of Remote Interaction Purgatory: Federation Gymnastics
Sure, Hubzilla, (streams) and Forte have some of the best built-in search systems in the whole Fediverse. They can pull almost everything onto your channel stream just by searching for it. And if it has replies, chances are they pull these in as well.
But still, they're geared towards desktop users. They still require copy-paste. Phone users don't copy paste. Most of them don't even know the very concept of copy-paste. For most of those who do, copy-paste is much too fumbly if the input device available to them is a 6" touch screen.
You can't blame them, though. This is next to impossible to do any differently. I mean, you won't see a button magically appear with which you can pull in just that one post or comment you want to pull in.
Rather, the issue is that they can only reel in almost everything. Sometimes the search returns nothing, like a void. Sometimes the search runs indefinitely without any kind of result. This may be because someone has blocked your channel, because someone has blocked your entire server, because the server someone is on has blocked you or your entire server, because Hubzilla/(streams)/Forte doesn't understand the URI pasted into the search field or whatever.
So this is made worse by Hubzilla, (streams) and Forte not knowing what they can search for, what they can't and why not.
Connecting with someone whom you encounter on your channel stream is fairly easy. Connections can be initiated with only two clicks. Either you click their long name, and you're taken to a pretty much distraction-less local "intermediate page" with a striking green button that's labelled "+ Connect". Or if you don't want to leave the channel page, you hover your mouse cursor over their profile picture, click on the little white arrow that appears, and you get a small menu that offers you the "Connect" option as well. Granted, even some veterans don't know the latter trick because it isn't immediately advertised on the channel page.
Also, sure, you don't simply follow them right off the bat with nothing else to do like on Mastodon. You're taken to your Connections page, and you have to configure the connection (you don't have to do that on Mastodon because you can't configure connections on Mastodon).
Following accounts/channels from the directory is a bit easier. The green "+ Connect" button is there right away (unless you're already connected). However, Hubzilla's directory only lists channels based on the Nomad protocol, i.e. Hubzilla and (streams) channels, because ActivityPub is only implemented in an optional, off-by-default-for-new-channels add-on whereas it's in the core and on by default on (streams) and the only available protocol on Forte.
Importing contents or following actors when seeing them locally on other servers without copy-pasting and searching can be done. It requires OpenWebAuth magic single sign-on, however, and it requires it to be implemented on all servers of all Fediverse server applications from Mastodon to WordPress to Ghost to Flipboard. Hubzilla, (streams) and Forte are the only Fediverse server applications with full (client-side and server-side) OpenWebAuth implementations. But that's of little use if the rest of the Fediverse doesn't have server-side implementations, and Mastodon has even silently rejected a mere client-side implementation already developed to a pull request two years ago.The Sin of DM Disasters Waiting to Happen
I think this is less of an issue on Hubzilla, (streams) and Forte because they handle DMs differently from Mastodon (which "the Fediverse" actually refers to in the article).
On all three, DMs are integrated into their extensive, fine-grained permissions system in which everything is only public if it's really public. The difference between a post and a DM is not just a switch.
If I want to DM you, I can either tag you@!{[email protected]}rather than@[url=https://mastodon.social/@benpate]Ben Pate 🤘🏻[/url]. Then you're a) the only one to whom the message is sent (it literally doesn't even go out to any other server than mastodon.social plus my clone on hub.hubzilla.de as can be seen in the delivery report) and b) the only one who is granted permission to view the message.
Or I can use the padlock icon and select you from the opening list as the sole recipient. The very moment that I select certain recipients, the post I'm composing quits being public, and the padlock icon switches from open to closed. This isn't a one-click or two-click toggle. You don't do that casually. It's basically configuration. It requires so many mouse clicks that you do it consciously and intentionally. If you want to post in private, you have to really want to post in private.
Better yet: You can default to posting only to a certain limited target audience. In fact, by default on a brand-new channel, you only post to the members of one privacy group/access list (which is a Mastodon list on coke and 'roids). You have to manually reconfigure your new channel if you want to post to the general public by default.
If you preview your post, you can see whether it's a direct message to one or multiple single connections (envelope icon next to your long name), a limited-permissions message to one or multiple privacy groups/access lists/group actors (closed padlock icon) or actually public (no icon).
Even better yet: Posts to group actors generally aren't public. Posts to at least Friendica groups, Hubzilla forums, (streams) groups and Forte groups are never public. They do not go out to your followers as well unless they're connected to the same group. And this is independent from whether a group is public or private. You can't accidentially post to a group actor in public, and if you do, you don't post to that group actor at all, at least not in a way that makes the group actor forward your post to its other connections.
Granted, what does not happen is your background switching from your background colour or background image (which can be user-configured) to red #800000 or a yellow-and-back chevron pattern when you change visibility and permissions to something that isn't public.The Sin of Ghost Conversations and Phantom Follower Counts
And again, when @Tim Chambers says, "the Fediverse", he almost exclusively means Mastodon. He writes as if the entire Fediverse handled conversations as terribly as Mastodon, as if the entire Fediverse was as blissfully unaware of enclosed conversations as Mastodon. Which is not the case.
Hubzilla, (streams) and Forte, as well as their ancestor Friendica, handle conversations in ways that exceed Mastodon users' imaginations and wildest dreams by magnitudes. Unlike Mastodon, they know threaded conversations, and they see them as enclosed objects where only the start post counts as a post, and everything else counts as a comment.
This means that once you've received a post on your stream, you will also receive all comments on that post, regardless of whether or not you follow the commenters, regardless of whether or not they mention you. That's because all four reel in the comments not from the commentors, but from the original poster who is perceived as the owner of the thread. Only blocks or channel-wide filters can prevent comments from coming in.
Beyond that, (streams) was the first to introduce Conversation Containers. Forte inherited them from (streams), and when they were defined in FEP-171b, Hubzilla implemented them, too.
Here on Hubzilla, I can see all comments in this thread because my channel has fetched them directly from @Johannes Ernst. And I can actually see them right away because that's the default view here on Hubzilla, rather than Mastodon's piecemeal.
Even if you import a post manually using the search feature (and you better import the actual start post), AFAIK existing comments will eventually be backfilled. Comments that come in after importing will definitely end up on your stream as part of the thread.
So this is not a shortcoming of the Fediverse. The Fediverse has been able to do better for 15 years. It's a shortcoming of Mastodon.
The only "issue" here may be that it sometimes takes some time for a comment to show up for some reasons. But unless there are blocks or filters in play, it eventually will.The Sin of Invisible Discovery: The Content Mirage
I'm not going to pick on the audacious implication that "Eugen and team" invented the Fediverse.
But Tim writes like literally everyone wants "the Fediverse" (read, actually Mastodon) to be literally Twitter without Musk.
Also:- Friendica has had full-blown full-text search since its inception as early as 2010. Five and a half years longer than Mastodon has even existed.
- Hubzilla has had full-blown full-text search since its inception as early as 2011 when it was forked from Free-Friendika. It has inherited full-text search from Friendica.
- (streams) and Forte have had full-blown full-text search since their respective inception in 2021 and 2024, both having inherited it themselves.
Oh, and none of them has an explicit opt-in switch to soothe panicking Twitter converts because panicking Twitter converts have never been the primary target audience of either of them.
Instead, on Hubzilla, whether someone can find your content depends on whether they've got permission to view it in the first place ("Can view my channel stream and posts"). If it's public, they have it. Full stop. Public is public is public. Stop whining. You've made it public, now deal with everything being able to see it.
(streams) and Forte behave the same. In addition, they have an extra permission: "Grant search access to your channel stream and posts". This controls who may search your channel stream using your own local search feature while visiting your channel locally. Something that isn't even possible on Mastodon.
As for not having any content on my channel stream before I connect to anyone: I, for one, do not want some algorithm to force content upon me that I'm not interested in. Full. Frigging. Stop. I want to have full and exclusive control over what I see and what I don't.The Sin of User Discovery Hell
Can it really be that Mastodon's directory is so much worse than Friendica's, Hubzilla's, (streams)' and Forte's directories? I guess it is because it really only lists local accounts on that one particular server. A side-effect of Mastodon being a microblogging service and Twitter clone. And not a full-blown, fully-featured social network and Facebook alternative. No, seriously, it isn't that.
Friendica is. It was designed as such. It was designed to take Facebook's place, and not by aping and cloning Facebook, but by being better than Facebook.
The directory on each node is decentralised. It lists all actors known to that node. What's outright unimaginable from a Mastodon point of view: It takes the keywords in the profiles into account. Better even: It ranks suggestions by the number of matching keywords.
Want something centralised instead? Try the Friendica Directory. Looking for people? Looking for news accounts? Looking for groups? There are specialised tabs for that. Friendica can tell them apart, and so can the Friendica Directory.
Caveat: The Friendica Directory only lists Friendica accounts. Friendica's built-in directory should list everything it knows. I haven't used Friendica in many years, but I guess this even includes diaspora* accounts because why not?
Hubzilla has indirectly inherited its directory from Friendica. This is the directory on Netzgemeinde, the biggest Hubzilla hub.
Again, it lists local as well as federated channels. You can choose whether to see only local channels ("This Website Only") or federated channels as well. You can choose whether channels flagged NSFW shall be listed or not ("Safe Mode"). You can choose to only have group actors listed that let themselves be listed ("Public Forums Only"). You have a cloud of keywords from the keyword lists in the profiles that you can filter by (Mastodon doesn't even have keyword lists in profiles). You have full-text search for names and keywords. There's even a Facebook-style suggestion mode that proposes connections to you with a ranking based on your keywords and their keywords as well as the number of common connections, and that still has the same filters.
Caveat this time: Hubzilla's directory only supports the one sole protocol built into Hubzilla's core. And that's Zot6. This means that Hubzilla's directory only lists Hubzilla and (streams) channels because Hubzilla and (streams) are the only Fediverse server applications that support Zot6.
(streams) and Forte have inherited their directories again. And they probably have the most powerful decentralised directories in the entire Fediverse. I'd give you a link, but (streams) directories generally aren't public; only local channels can access them.
These directories are similar to the ones on Hubzilla. You see local and federated actors, and you can choose to only see local actors ("This Website Only"). You can choose to only see group actors ("Groups Only"). You can choose to not see channels flagged NSFW ("Safe Mode"). What's new: Inactive actors can be kept out, too ("Recently Updated").
Now it comes: (streams) has ActivityPub built into its core, and it's on by default on new channels. Forte is entirely based on ActivityPub.
This means that their directories can list anything from anywhere that uses ActivityPub. "Groups Only" gives you Guppe groups, Lemmy communities, /kbin and Mbin magazines, PieFed communities, Mobilizon groups, Flipboard magazines, Friendica groups, Hubzilla forums, (streams) groups, Forte groups etc., all on one list.
(streams) has a slight edge over Forte here because it also lists Hubzilla and (streams) channels that have ActivityPub off such as the Streams Users Tea Garden where ActivityPub was turned off with the very intention to keep Mastodon out.
If there was a gigantic Forte server, as big as mastodon.social, and its directory was accessible to the public, that directory would be the best directory in the Fediverse for anything really. If it was on (streams), it would list more, but it would confuse some users of e.g. Mastodon who'd try to follow Hubzilla or (streams) channels that have ActivityPub off. Forte simply doesn't list these because it can't find them.
A global directory of everything sounds like a good idea, but it's next to impossible to implement.
Either the directory would go look for actors itself. In order to do that, it would have to know within a split-second not only whenever a new actor is created somewhere so it can index that actor right away, but also whenever a new server is spun up so that the admin actor can be indexed, and that server can be watched. How is it supposed to know all that?
Well, or the directory, a single, monolithic, centralised website, would have to be hard-coded into all Fediverse server software. That way, each server could immediately report newly created actors to the central directory upon their creation.
For starters, this would make the whole Fediverse depend on one single centralised website under the control of, if bad comes to worse, one person.
Besides, this would be a privacy nightmare. Let's suppose I create a new (streams) channel that's supposed to be private. Its existence and all its properties would be sent to the central directory before I can set it to private and restrict its permissions. This wouldn't be so bad on Hubzilla because I'd make the channel private before I turn on PubCrawl and make the channel accessible to the directory in the first place because the directory would only understand ActivityPub.
Of course, the directory would mostly be built against Mastodon. It would not understand the permissions systems implemented on Hubzilla, (streams) and Forte, and it might happily siphon off the profiles of channels where access to the profile is restricted and make them publicly accessible. On the other hand, this is likely to mean that the directory couldn't read most of Hubzilla's, (streams)' and Forte's profile text fields anyway because Mastodon doesn't have them.
But such a centralised directory wouldn't make connecting to other users that much easier and more convenient. You'd still have to copy and paste URLs or IDs into your local search and search for them (unless you're on Friendica, Hubzilla, (streams) or Forte where you can connect to URLs directly). At the very least, you should be able to go to the centralised directory and follow anyone just by clicking or tapping them. That, however, would require OpenWebAuth support on both your home server and that directory.
Ideally, that directory would be firmly built into all instances of all Fediverse software from snac2 to Mastodon to Hubzilla, even replacing any existing directory to confuse people less. But that would make the Fediverse even more dependent on one central website and its owner, something which should be avoided at all cost.
Lastly, nothing can ever be built into all instances of all Fediverse software. Remember that there's software with living instances that's barely being developed such as Plume. There's even software with living instances that's been officially pronounced dead such as Calckey, Firefish or /kbin. How are Firefish servers supposed to implement such a feature if nobody maintains Firefish anymore, and even the code repository was deleted?
CC: @Risotto Bias
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Friendica #Hubzilla #Streams #(streams) #Forte #OpenWebAuth #SingleSignOn #NomadicIdentity #Search #FullTextSearch #Directory #Permissions #Privacy #Conversations #ThreadedConversations #FEP_171b #ConversationContainers -
@Ben Pate 🤘🏻 Allow me to take a look at this from a Hubzilla/(streams)/Forte point of view.The Sin of Overwhelming Complexity: Instance Selection Paralysis
The only way to really combat this effectively is by hiding the whole concept of servers/instances at first, railroading everyone to a server and only letting them know about decentralisation and servers/instances after the fact.
In theory, this could be doable with Hubzilla, (streams) and Forte, and even better than with Mastodon with its themed servers. It wouldn't make sense to offer Hubzilla, (streams) or Forte servers for certain topics or target audiences, seeing as the whole thing would become moot the very moment when you make your first clone on another server. Simply build a kind of "automatic on-boarder" that sends everyone to the geographically closest open-registration server.
In practice, that'd be a bad idea, but for a different reason than on Mastodon. And that's how these servers tend to be very different. Not in topic. Not in target audiences. Not in rules. But in features. Hubzilla is modular, (streams) is modular, Forte is modular, and each admin decides differently on which "apps" to activate. Then you want to join Hubzilla for one cool feature, but the on-boarder railroads you to a server where that very feature isn't even activated.
Sure, the on-boarder could include the option to select certain features that you absolutely must have in your new home and then pick a server that has them. But that'd be extra hassle and extra confusing.
Besides, where'd you put that on-boarder? On the official Hubzilla website? Haha, no can do. The official Hubzilla website is a webpage on a Hubzilla channel itself. It's all just dumb old static HTML with a CSS. If it's even HTML and not Markdown or BBcode, that is. You couldn't add scripts to it if you tried.
Oh, and (streams) and Forte don't even have official websites. And (streams) will never have one, seeing as it's officially and intentionally nameless, brandless and totally not even a project. Their "websites" are readme files in their code repositories on Codeberg.The Sin of Inconsistent Navigation: Timeline Turmoil
The streams on Hubzilla, (streams) and Forte are quite a bit different from Mastodon timelines.
First of all, what you usually don't have on public servers is the counterpart to Mastodon's local timeline and Mastodon's federated timeline. On all three, this would be only one stream, the "public stream" or "pubstream". It can be switched by the admin to either what'd be local or what'd be federated. However, public servers usually have it off entirely. Unavailable even to local users. That's because the admins don't want to be held liable for what's happening on the pubstream.
Technically speaking, you only have one stream on a public server, and that's your channel stream. It's much more efficient than a Mastodon timeline because it always shows entire conversations by default instead of detached single-message piecemeal, and because it has a counter for unread messages which even lists these unread messages for you to directly go to the corresponding conversation. But that's another story.
However, your channel stream can be viewed on your channel page, conversation by conversation, or it can be viewed on the stream page as an actual stream with all conversations shown in a feed/timeline-like fashion, one upon another, and with its own set of built-in filters such as "only my own messages" or "only conversations started by members of one particular privacy group/access list" or "only conversations from one particular group actor". It's actually much more convenient than any Mastodon timeline, but for those who want a Twitter clone for dumb-dumbs, it can be very overwhelming.
Yes, Hubzilla, (streams) and Forte are much more complex in handling than, say, snac2. But they're also much more complex in features than snac2. That power is their USP. And that power must be harnessed somehow.The Sin of Remote Interaction Purgatory: Federation Gymnastics
Sure, Hubzilla, (streams) and Forte have some of the best built-in search systems in the whole Fediverse. They can pull almost everything onto your channel stream just by searching for it. And if it has replies, chances are they pull these in as well.
But still, they're geared towards desktop users. They still require copy-paste. Phone users don't copy paste. Most of them don't even know the very concept of copy-paste. For most of those who do, copy-paste is much too fumbly if the input device available to them is a 6" touch screen.
You can't blame them, though. This is next to impossible to do any differently. I mean, you won't see a button magically appear with which you can pull in just that one post or comment you want to pull in.
Rather, the issue is that they can only reel in almost everything. Sometimes the search returns nothing, like a void. Sometimes the search runs indefinitely without any kind of result. This may be because someone has blocked your channel, because someone has blocked your entire server, because the server someone is on has blocked you or your entire server, because Hubzilla/(streams)/Forte doesn't understand the URI pasted into the search field or whatever.
So this is made worse by Hubzilla, (streams) and Forte not knowing what they can search for, what they can't and why not.
Connecting with someone whom you encounter on your channel stream is fairly easy. Connections can be initiated with only two clicks. Either you click their long name, and you're taken to a pretty much distraction-less local "intermediate page" with a striking green button that's labelled "+ Connect". Or if you don't want to leave the channel page, you hover your mouse cursor over their profile picture, click on the little white arrow that appears, and you get a small menu that offers you the "Connect" option as well. Granted, even some veterans don't know the latter trick because it isn't immediately advertised on the channel page.
Also, sure, you don't simply follow them right off the bat with nothing else to do like on Mastodon. You're taken to your Connections page, and you have to configure the connection (you don't have to do that on Mastodon because you can't configure connections on Mastodon).
Following accounts/channels from the directory is a bit easier. The green "+ Connect" button is there right away (unless you're already connected). However, Hubzilla's directory only lists channels based on the Nomad protocol, i.e. Hubzilla and (streams) channels, because ActivityPub is only implemented in an optional, off-by-default-for-new-channels add-on whereas it's in the core and on by default on (streams) and the only available protocol on Forte.
Importing contents or following actors when seeing them locally on other servers without copy-pasting and searching can be done. It requires OpenWebAuth magic single sign-on, however, and it requires it to be implemented on all servers of all Fediverse server applications from Mastodon to WordPress to Ghost to Flipboard. Hubzilla, (streams) and Forte are the only Fediverse server applications with full (client-side and server-side) OpenWebAuth implementations. But that's of little use if the rest of the Fediverse doesn't have server-side implementations, and Mastodon has even silently rejected a mere client-side implementation already developed to a pull request two years ago.The Sin of DM Disasters Waiting to Happen
I think this is less of an issue on Hubzilla, (streams) and Forte because they handle DMs differently from Mastodon (which "the Fediverse" actually refers to in the article).
On all three, DMs are integrated into their extensive, fine-grained permissions system in which everything is only public if it's really public. The difference between a post and a DM is not just a switch.
If I want to DM you, I can either tag you@!{[email protected]}rather than@[url=https://mastodon.social/@benpate]Ben Pate 🤘🏻[/url]. Then you're a) the only one to whom the message is sent (it literally doesn't even go out to any other server than mastodon.social plus my clone on hub.hubzilla.de as can be seen in the delivery report) and b) the only one who is granted permission to view the message.
Or I can use the padlock icon and select you from the opening list as the sole recipient. The very moment that I select certain recipients, the post I'm composing quits being public, and the padlock icon switches from open to closed. This isn't a one-click or two-click toggle. You don't do that casually. It's basically configuration. It requires so many mouse clicks that you do it consciously and intentionally. If you want to post in private, you have to really want to post in private.
Better yet: You can default to posting only to a certain limited target audience. In fact, by default on a brand-new channel, you only post to the members of one privacy group/access list (which is a Mastodon list on coke and 'roids). You have to manually reconfigure your new channel if you want to post to the general public by default.
If you preview your post, you can see whether it's a direct message to one or multiple single connections (envelope icon next to your long name), a limited-permissions message to one or multiple privacy groups/access lists/group actors (closed padlock icon) or actually public (no icon).
Even better yet: Posts to group actors generally aren't public. Posts to at least Friendica groups, Hubzilla forums, (streams) groups and Forte groups are never public. They do not go out to your followers as well unless they're connected to the same group. And this is independent from whether a group is public or private. You can't accidentially post to a group actor in public, and if you do, you don't post to that group actor at all, at least not in a way that makes the group actor forward your post to its other connections.
Granted, what does not happen is your background switching from your background colour or background image (which can be user-configured) to red #800000 or a yellow-and-back chevron pattern when you change visibility and permissions to something that isn't public.The Sin of Ghost Conversations and Phantom Follower Counts
And again, when @Tim Chambers says, "the Fediverse", he almost exclusively means Mastodon. He writes as if the entire Fediverse handled conversations as terribly as Mastodon, as if the entire Fediverse was as blissfully unaware of enclosed conversations as Mastodon. Which is not the case.
Hubzilla, (streams) and Forte, as well as their ancestor Friendica, handle conversations in ways that exceed Mastodon users' imaginations and wildest dreams by magnitudes. Unlike Mastodon, they know threaded conversations, and they see them as enclosed objects where only the start post counts as a post, and everything else counts as a comment.
This means that once you've received a post on your stream, you will also receive all comments on that post, regardless of whether or not you follow the commenters, regardless of whether or not they mention you. That's because all four reel in the comments not from the commentors, but from the original poster who is perceived as the owner of the thread. Only blocks or channel-wide filters can prevent comments from coming in.
Beyond that, (streams) was the first to introduce Conversation Containers. Forte inherited them from (streams), and when they were defined in FEP-171b, Hubzilla implemented them, too.
Here on Hubzilla, I can see all comments in this thread because my channel has fetched them directly from @Johannes Ernst. And I can actually see them right away because that's the default view here on Hubzilla, rather than Mastodon's piecemeal.
Even if you import a post manually using the search feature (and you better import the actual start post), AFAIK existing comments will eventually be backfilled. Comments that come in after importing will definitely end up on your stream as part of the thread.
So this is not a shortcoming of the Fediverse. The Fediverse has been able to do better for 15 years. It's a shortcoming of Mastodon.
The only "issue" here may be that it sometimes takes some time for a comment to show up for some reasons. But unless there are blocks or filters in play, it eventually will.The Sin of Invisible Discovery: The Content Mirage
I'm not going to pick on the audacious implication that "Eugen and team" invented the Fediverse.
But Tim writes like literally everyone wants "the Fediverse" (read, actually Mastodon) to be literally Twitter without Musk.
Also:- Friendica has had full-blown full-text search since its inception as early as 2010. Five and a half years longer than Mastodon has even existed.
- Hubzilla has had full-blown full-text search since its inception as early as 2011 when it was forked from Free-Friendika. It has inherited full-text search from Friendica.
- (streams) and Forte have had full-blown full-text search since their respective inception in 2021 and 2024, both having inherited it themselves.
Oh, and none of them has an explicit opt-in switch to soothe panicking Twitter converts because panicking Twitter converts have never been the primary target audience of either of them.
Instead, on Hubzilla, whether someone can find your content depends on whether they've got permission to view it in the first place ("Can view my channel stream and posts"). If it's public, they have it. Full stop. Public is public is public. Stop whining. You've made it public, now deal with everything being able to see it.
(streams) and Forte behave the same. In addition, they have an extra permission: "Grant search access to your channel stream and posts". This controls who may search your channel stream using your own local search feature while visiting your channel locally. Something that isn't even possible on Mastodon.
As for not having any content on my channel stream before I connect to anyone: I, for one, do not want some algorithm to force content upon me that I'm not interested in. Full. Frigging. Stop. I want to have full and exclusive control over what I see and what I don't.The Sin of User Discovery Hell
Can it really be that Mastodon's directory is so much worse than Friendica's, Hubzilla's, (streams)' and Forte's directories? I guess it is because it really only lists local accounts on that one particular server. A side-effect of Mastodon being a microblogging service and Twitter clone. And not a full-blown, fully-featured social network and Facebook alternative. No, seriously, it isn't that.
Friendica is. It was designed as such. It was designed to take Facebook's place, and not by aping and cloning Facebook, but by being better than Facebook.
The directory on each node is decentralised. It lists all actors known to that node. What's outright unimaginable from a Mastodon point of view: It takes the keywords in the profiles into account. Better even: It ranks suggestions by the number of matching keywords.
Want something centralised instead? Try the Friendica Directory. Looking for people? Looking for news accounts? Looking for groups? There are specialised tabs for that. Friendica can tell them apart, and so can the Friendica Directory.
Caveat: The Friendica Directory only lists Friendica accounts. Friendica's built-in directory should list everything it knows. I haven't used Friendica in many years, but I guess this even includes diaspora* accounts because why not?
Hubzilla has indirectly inherited its directory from Friendica. This is the directory on Netzgemeinde, the biggest Hubzilla hub.
Again, it lists local as well as federated channels. You can choose whether to see only local channels ("This Website Only") or federated channels as well. You can choose whether channels flagged NSFW shall be listed or not ("Safe Mode"). You can choose to only have group actors listed that let themselves be listed ("Public Forums Only"). You have a cloud of keywords from the keyword lists in the profiles that you can filter by (Mastodon doesn't even have keyword lists in profiles). You have full-text search for names and keywords. There's even a Facebook-style suggestion mode that proposes connections to you with a ranking based on your keywords and their keywords as well as the number of common connections, and that still has the same filters.
Caveat this time: Hubzilla's directory only supports the one sole protocol built into Hubzilla's core. And that's Zot6. This means that Hubzilla's directory only lists Hubzilla and (streams) channels because Hubzilla and (streams) are the only Fediverse server applications that support Zot6.
(streams) and Forte have inherited their directories again. And they probably have the most powerful decentralised directories in the entire Fediverse. I'd give you a link, but (streams) directories generally aren't public; only local channels can access them.
These directories are similar to the ones on Hubzilla. You see local and federated actors, and you can choose to only see local actors ("This Website Only"). You can choose to only see group actors ("Groups Only"). You can choose to not see channels flagged NSFW ("Safe Mode"). What's new: Inactive actors can be kept out, too ("Recently Updated").
Now it comes: (streams) has ActivityPub built into its core, and it's on by default on new channels. Forte is entirely based on ActivityPub.
This means that their directories can list anything from anywhere that uses ActivityPub. "Groups Only" gives you Guppe groups, Lemmy communities, /kbin and Mbin magazines, PieFed communities, Mobilizon groups, Flipboard magazines, Friendica groups, Hubzilla forums, (streams) groups, Forte groups etc., all on one list.
(streams) has a slight edge over Forte here because it also lists Hubzilla and (streams) channels that have ActivityPub off such as the Streams Users Tea Garden where ActivityPub was turned off with the very intention to keep Mastodon out.
If there was a gigantic Forte server, as big as mastodon.social, and its directory was accessible to the public, that directory would be the best directory in the Fediverse for anything really. If it was on (streams), it would list more, but it would confuse some users of e.g. Mastodon who'd try to follow Hubzilla or (streams) channels that have ActivityPub off. Forte simply doesn't list these because it can't find them.
A global directory of everything sounds like a good idea, but it's next to impossible to implement.
Either the directory would go look for actors itself. In order to do that, it would have to know within a split-second not only whenever a new actor is created somewhere so it can index that actor right away, but also whenever a new server is spun up so that the admin actor can be indexed, and that server can be watched. How is it supposed to know all that?
Well, or the directory, a single, monolithic, centralised website, would have to be hard-coded into all Fediverse server software. That way, each server could immediately report newly created actors to the central directory upon their creation.
For starters, this would make the whole Fediverse depend on one single centralised website under the control of, if bad comes to worse, one person.
Besides, this would be a privacy nightmare. Let's suppose I create a new (streams) channel that's supposed to be private. Its existence and all its properties would be sent to the central directory before I can set it to private and restrict its permissions. This wouldn't be so bad on Hubzilla because I'd make the channel private before I turn on PubCrawl and make the channel accessible to the directory in the first place because the directory would only understand ActivityPub.
Of course, the directory would mostly be built against Mastodon. It would not understand the permissions systems implemented on Hubzilla, (streams) and Forte, and it might happily siphon off the profiles of channels where access to the profile is restricted and make them publicly accessible. On the other hand, this is likely to mean that the directory couldn't read most of Hubzilla's, (streams)' and Forte's profile text fields anyway because Mastodon doesn't have them.
But such a centralised directory wouldn't make connecting to other users that much easier and more convenient. You'd still have to copy and paste URLs or IDs into your local search and search for them (unless you're on Friendica, Hubzilla, (streams) or Forte where you can connect to URLs directly). At the very least, you should be able to go to the centralised directory and follow anyone just by clicking or tapping them. That, however, would require OpenWebAuth support on both your home server and that directory.
Ideally, that directory would be firmly built into all instances of all Fediverse software from snac2 to Mastodon to Hubzilla, even replacing any existing directory to confuse people less. But that would make the Fediverse even more dependent on one central website and its owner, something which should be avoided at all cost.
Lastly, nothing can ever be built into all instances of all Fediverse software. Remember that there's software with living instances that's barely being developed such as Plume. There's even software with living instances that's been officially pronounced dead such as Calckey, Firefish or /kbin. How are Firefish servers supposed to implement such a feature if nobody maintains Firefish anymore, and even the code repository was deleted?
CC: @Risotto Bias
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Friendica #Hubzilla #Streams #(streams) #Forte #OpenWebAuth #SingleSignOn #NomadicIdentity #Search #FullTextSearch #Directory #Permissions #Privacy #Conversations #ThreadedConversations #FEP_171b #ConversationContainers -
Black Friday 2025 Deals for Canadians
Just about every time this year, Canadians look wistfully at the crazy deals our coffee loving American friends enjoy during the Black Friday shopping season.
Well, this year, it’s quite different. Blame it squarely on the Trump Taxes playing out south of the border (with tariffs driving the price of everything up for consumers), but this year, for the first time I can certainly remember, we Canadians are enjoying lower prices than our American cousins are, on some fantastic coffee and espresso gear.
Take the Ninja Luxe Cafe Premier for example: on sale for $499 in the US, but you can get it right now, exclusively on Amazon Canada, for $589 Canadian (that’s just $418 USD, or $80 less than the US Black Friday price).
And it doesn’t stop there. For the first time ever, Fellow products are on deep Black Friday Discount – you can get the Stagg EKG Pro Studio edition for just $224 which, after conversion is $3 cheaper than the US sale price!
We’re also getting some fantastic sale prices on Breville products that the Americans currently are not being offered, like $699 for the Barista Express, ($495USD), and it goes on and on.
So rejoice, Canadian coffee and espresso lovers. Not only are you getting some fantastic deals on quality coffee and espresso gear this holiday season, but these are also technically the lowest prices on the planet for some of these items. Isn’t it great that Canada decided to not get involved in trade wars? 🙂
UPDATED November 24 with new deals!
As an aside, we’ve tried to keep the “Prime Exclusive Deals” to a minimum, except when the price savings was pretty spectacular. To ge those, you have to be a Prime member: you can sign up here, or sign up during checkout. Keep in mind, you can cancel anytime.
If you are shopping Amazon Canada during this holiday season, please consider using our portal link. If you do, any purchase you make gives us a tiny kickback. We use this income to pay our writers, and to purchase some of the products we review. Every little bit helps!
Now, onto the deals!
New Deals Dropping Monday November 24
Here are the absolute latest sales and deep discounts found during the early Black Friday sale. This section will be updated every few days.
25% Savings
Brew Modes, Multiple ColoursTechnivorm Moccamaster
I can not remember Technivorms ever being on sale this low in Canada; last year, they were marked down 5%, this year, 25% off, or $125 savings, for these built-like-a-tank, SCA Approved brewing powerhouses. In a variety of colours too!
Regular Price: $476
Sale Price: $356
Get the Deal
$200 Off!
Barista Assist, Cold foam!Ninja Luxe Cafe Pro
Last year the Ninja Luxe Cafe Premier was the best bang for the buck machine you could get; now the Pro model offers even more, and an excellent auto dosing and barista assist tamping mode. Cheaper in Canada than the USA too!
Regular Price: $999
Sale Price: $799
Get the Deal
$210 Savings
Best Bang for the Buck TodayNinja Luxe Cafe Premier
The price on this is simply amazing in Canada, and possibly the best deal on this entire list: $589 for this do it all machine with hot, cold drink options, awesome cold foam, and a built in dosing scale? And dollar for dollar, it’s almost $100 less than the US Black Friday price!
Regular Price: $800
Sale Price: $590
Get the Deal
$750 Off!
Flagship Machine, Dual ThermojetsBreville Oracle Jet
Big ticket item for sure, but one that isn’t even on sale in the USA; in Canada, you get an incredible 25% off Breville’s current flagship espresso machine, the Oracle Jet. Full on “barista concierge” service via traditional machine controls and a 58mm portafilter. Killer deal.
Regular Price: $3000
Sale Price: $2250
Get the Deal
25% Off
Hot and Cold EspressoDe’Longhi Dedica Duo
Another of those items that’s cheaper in Canada for Black Friday than the US: the mid level Dedica machine with the traditional steam wand, and bonus pro tamper. It also has a dedicated cold brew mode for iced espresso.
Regular Price: $340
Sale Price: $249
Get the Deal
20% Off
Ultimate Brew GrinderFellow Ode Gen 2 Grinder
First time ever on sale in Canada and its a full $100 off: the Fellow Ode Gen 2 grinder, with the 64mm flat burrs designed for sweet, balanced cups. Don’t use it for espresso, but excels at everything else.
Regular Price: $500
Sale Price: $399
Get the Deal
Canada Exclusive
Killer Starter MachineNinja Luxe Café Essential
An exclusive to Canada (this machine isn’t for sale in the USA) – the entry level Ninja Luxe Cafe, with 90% of the Premier’s features, at under $400 is just amazing. Auto froth, weight based dosing, lots of drink options!
Regular Price: $500
Sale Price: $399New Deals Dropping Sunday November 23
Here are the absolute latest sales and deep discounts found during the early Black Friday sale. This section will be updated every few days.
$300 Off
The Industry LeaderBreville Barista Express
The grand daddy, the best selling espresso machine of all time, at one of the lowest prices in Canada since the early 2010s. A workhorse, with a huge accessory ecosystem. Save $300, and pay way less than the US sale price south of the border.
Regular Price: $999
Sale Price: $699
Get the Deal
25% Savings
Feature rich machineFello Aiden Coffee Brewer
The Fellow Aiden is one of the most advanced auto drip machines ever released, and it’s even cheaper in Canada than the USA on this Black Friday special price. Both White and Black Models available, white extremely limited.
Regular Price: $525
Sale Price: $399
Get the Deal
20% Savings
Influencer FavouriteFellow Stagg EKG Pro
Another Fellow Product that is insanely popular, and has never been on sale in Canada before now. And it’s cheaper here than the US Black Friday price! This is the KEG Pro model in Matt Black; wood handle Pro modes are $224.
Regular Price: $240
Sale Price: $191
Get the Deal
$30 Off
First Time Sale!Timemore C3 ESP Pro Grinder
This is literally the first time I’ve ever seen a Timemore grinder go on Black Friday Sale in Canada, so it gets a prominent place: the C3 ESP Pro is a fave in our lab, for the folding handle, good construction and nice S2C 38mm burrset.
Regular Price: $150
Sale Price: $120
Get the Deal
$100 Off
Cold, Hot, Single Serve or Large BatchBreville Precision Brewer
The original “Swiss Army Knife” of automated coffee brewers (I mean, look at the photo we used!), the Breville Precision is being sunsetted by Breville, so that means a super deep discount. Excellent SCA Approved brewer that does it all.
Regular Price: $399
Sale Price: $299
Get the Deal
33% Savings
Nespresso KillerDe’longhi Magnfica Start
We featured this machine in an article earlier this year, showing how in under 10 months, this super auto will become cheaper to use than a Nespresso machine, while delivering far superior coffee. This Canadian deal is also substantially better than the US pricing ($499USD, vs $549CDN).
Regular Price: $829
Sale Price: $549Top Picks in Black Friday Deals
These are the best and most unique deals found on Amazon Canada for this Black Friday sale. Some aren’t even available in the USA!
Save $75
SCA Approved with Cold BrewBraun MultiServe Plus
We’re currently reviewing this “swiss army knife” auto drip coffee machine, which is SCA-Certified, and it really is an impressive multi-beverage machine, with single serve and cold brew options.
Regular Price: $250
Sale Price: $174
Get the Deal
20% Savings
Ultra Small, Ultra CapableWacaco Picopresso
Almost bought one of these at the MEC in Canada, when I saw it for $180. This $135 deal is a steal. This is Wacaco’s best non-powered travel espresso maker, and it comes with a cool case too.
Regular Price: $170
Sale Price: $135
Get the Deal
$400 Savings
Super Auto for under $400Philips 2200 Series Super Auto
If you want espresso at the press of a button, this is one of the best budget entries into the super automatic world. We tested one in 2022, and as an entry level machine, it’s feature packed. Huge 50% off, and even cheaper than last year’s $439 price!
Regular Price: $750
Sale Price: $379
Get the Deal
33% Savings
Comes with everything!Delonghi Arte Espresso
Our friend Coffee Kev on Youtube loves this little entry point machine from Delonghi. We can’t recommend it at full price, but the Black Friday price is extremely tempting. And look at all it comes with!
Regular Price: $400
Sale Price: $269
Get the Deal
20% Off
Stylish Stovetop ModelFellow Stagg 1l Kettle
If you want to get in on a deal that our American cousins aren’t seeing this Black Friday, this is the one: the beautiful stovetop version of the Stagg Kettle from Fellow. Pair it up with a nice mini isobutane tabletop burner, and you got a stylish 4 minute, 1l pour over kettle.
Regular Price: $110
Sale Price: $88
Get the Deal
$400 Off
Automated Drinks, Traditional MachineBreville Barista Touch
This isn’t even on sale on the US Amazon store, but in Canada, it’s $320 off. This is the lightning fast thermojet equipped, barista guidance machine from Breville with automated steam functions. You grind, dose and tamp, the machine does the rest. Lowest price ever.
Regular Price: $1,600
Sale Price: $1,199Normcore Black Friday Sale
Other niche brands that are sale on the US Amazon site (Timemore, MHW-3Bomber, IKAPE, etc) have skipped offering deals to Canadians. But not Normcore! They have most of their espresso and coffee accessories on sale to Canadians. Huge thanks to them!
22% Off
Store your Single DosesBean Cellar
Normcore’s been making these unique, square single dose tubes for a while now, and they remain among the best you can buy. 1 way valves on top, too!
Regular Price: $78
Sale Price: $65
Get the Deal
Better Espresso
22g, 58mmPrecision Filter Basket
IMS and VST get all the love and credit, but Normcore has developed their own line of precision baskets, and they are some of the best we’ve tested. Here’s the 22g version, but others are available.
Regular Price: $48
Sale Price: $38
Get the Deal
20% Off
Unique Handle DesignChopped Portafilter
Normcore goes very unique in handle and styling on their chopped portafilters, available for a variety of machines. This is the Breville 54mm version, and it is rock solid.
Regular Price: $90
Sale Price: $63Other Black Friday Deals
We’ve found a few more items that are worthy of your espresso and coffee considerations, this Black Friday on Amazon Canada.
25% Savings
The One and OnlyAeropress Standard
If you are one of those few coffee snobs that doesn’t own an AeroPress, or want to get a few to give as inexpensive holiday gifts, this is the first time we’ve seen it on sale in Canada in years. Colour versions available too!
Regular Price: $55
Sale Price: $41
Get the Deal
30% Off
Automated Milk FrothingPhilips 3300 Super Auto
A more advanced version of the 2200 series, with automated milk frothing, cold coffee brews, and other one-button touch coffee drink builds. A pretty advanced super auto for under $700.
Regular Price: $1,000
Sale Price: $649
Get the Deal
Under $20
Gear your need for espressoKnockbox & Tamping Mat
Gear you absolutely need for espresso – a tamping mat (to protect your counter) and a knockbox. Get both for just $16!
Regular Price: $20
Sale Price: $16
Get the Deal
30% Off
Built in GrinderKitchenAid Espresso Machine
For many people, the only countertop appliance they want and trust is KitchenAid. This is the company’s latest salvo against the Breville Barista Express. Priced at $200 less, it gets good reviews (and we’re getting one this winter to test).
Regular Price: $1,000
Sale Price: $700
Get the Deal
20% Off
Travel and Portable Espressohttps://amzn.to/4fNawW4'" target="_blank" rel="nofollow noopener noreferrer" translate="no">https://amzn.to/4fNawW4', '_blank')"> Wacaco Nanopresso
Love seeing Wacaco carry over their US Amazon store sales to Canada. The Nanopresso is an excellent travel espresso device, available in a variety of colours.
Regular Price: $100
Sale Price: $80More Deals to Come!
We’ll be doing our next update on Wednesday, showcasing all the new deals to drop this week for Amazon’s huge Black Friday event. Stay tuned!
-
Conductor Elim Chan: ‘I cannot run away from music’
Elim Chan (c) Willeke Machiels
‘When I was unexpectedly asked to conduct the “Dies Irae” from Verdi’s Requiem , I felt how raw and impactful music could be. I knew at once: this is what I have to do, I can no longer walk away from music.’ Elim Chan’s career is soaring; she will make her debut with the Netherlands Philharmonic Orchestra on 17 January.
In 2014 Elim Chan (Hong Kong, 1986) was the first female winner of the Donatella Flick Conducting Competition. The next season she worked as assistant conductor with the London Symphony Orchestra (LSO). After this she made successful debuts with Los Angeles Philharmonic, Royal Concertgebouw Orchestra and Orchestre National de Lyon, among others. As of the current season she is head of the Antwerp Symphony Orchestra.
The Dutch connection is working out fine as well. She earlier conducted the Rotterdam Philharmonic Orchestra and took masterclasses with Bernard Haitink. On 17 January she will debut with the Netherlands Philharmonic Orchestra in AVROTROSVrijdagconcert. On 18 and 20 January she will repeat the same programme in the Amsterdam Concertgebouw. A blast is Percussion Concerto No.2 by James MacMillan, featuring Dutch Music Prize Winner 2019 Dominique Vleeshouwers as soloist.
Alongside MacMillan’s concerto Chan and the orchestra are playing Mendelssohn’s popular Hebrides and Tchaikovsky’s Fifth Symphony. Chan is now a much sought-after conductor, but she began her career as an amateur musician in Hong Kong. As a teenager she moved to America to study psychology. That raises questions, which she kindly answered by e-mail.
Why didn’t you choose a musical career from the start? Didn’t your parents – or you yourself – see this as a serious possibility?
I think it was a combination of reasons. In my heart I certainly wanted to pursue a musical career, but I didn’t have enough faith in myself. I simply wasn’t convinced I could make it. Moreover, as a young person I was also very interested in psychology and forensic research, and I was a big fan of television shows like Crime Scene Investigation and detective and crime stories such as Sherlock Holmes. What’s more, my father knew from personal experience how challenging it is to try to earn a good living as an artist. Before he retired, he was a teacher of art and design.
During your studies at Smith College you were asked to conduct the ‘Dies Irae’ from Verdi’s Requiem. How did this come about?
I played the cello in the student orchestra and also took some conducting classes with the conductor. At that moment we were studying Verdi’s Requiem for a concert. During the dress rehearsal he wanted to assess the balance in the hall himself, so he asked me to conduct the Dies Irae.
The experience really shook me – standing in the middle of the massive sounds, it was the first time I felt how raw and impactful the power of music could be. On the spot I knew: I really have to do this, I can’t run away from music anymore. So I switched – and the rest is history.
In 2014 you won the Donatella Flick conducting competition of the LSO, which brought you to England. What has this meant for you?
I’m still grateful for the time when I was assistant conductor of the LSO and was able to work with one of the best orchestras in the world on a daily basis. The musicians are impeccable and always give the best of themselves in concerts. They are also generous and friendly people. Thanks to their knowledge of the repertoire and their guidance I have learned and grown a lot as a conductor.
Every time I get to work with the LSO, it pushes me to my limits as an artist. The musicians are very fast and perform at a very high level, even though there is little rehearsal time. So I have to be efficient. But in the meantime I have to highlight all the details in the music and let my imagination run wild. It is incredibly nerve-racking and exciting but also very rewarding!
At the LSO you worked as an assistant to Valery Gergiev, what is the most important thing you learned from him?
Gergiev is really a wizard as a conductor, especially with Russian repertoire. I know that orchestras are sometimes frustrated and stressed because he is probably one of the busiest conductors on earth. But what he does great is keeping every musician literally on the edge of their seat whenever he’s on stage. Because there is always that element of surprise with Gergiev: every time he conducts a piece it sounds totally different from the last time. Also the way in which he can bring out colours, textures, drama and tension in the music is absolutely unparalleled.
At the invitation of Gergiev you conducted his own Mariinsky Orchestra. Was this a culture shock or was it ‘business as usual’?
In the beginning it was indeed a bit of a culture shock, because they weren’t used to seeing a petite Asian lady standing in front of them. – I think I was the first female conductor who Gergiev invited to conduct his orchestra in concerts and on an international tour. But once I had started the downbeat, it gradually became business as usual.
You are now principal guest conductor of the Royal Scottish National Orchestra and chief of the Antwerp Philharmonic Orchestra. How do you combine all this?
It’s great how eager both orchestras are to grow, and to explore new paths. The musicians put their trust in me with remarkable openness and warmth. Yet, the two functions leave me enough time to return to orchestras close to me, such as the LSO, Philharmonia and LAPhilharmonic, but also to visit new orchestras. The challenge is to find enough time to study and rest in between. – “Be the conductor of your own life,” is my motto.
Where does your musical heart lie?
I’ve conducted a lot of Russian music and have a soft spot for Rachmaninov. His music somehow seems very natural to me, I find it very easy to embody. I love the Symphonic Dances, and his Second Symphony also has a special place in my heart. Another fascinating composer is Stravinsky, but also Bartók. I love rhythm, and they both write such remarkable and unique colours for orchestra. But I also love contemporary music, because I can play an active role in the creation of a new piece. The presence of the composer at rehearsals and concerts makes a huge difference and adds a lot of meaning and emotion to the process.
You will conduct the Netherlands Philharmonic Orchestra in standard works by Mendelsohn and Tchaikovsky and Percussion Concerto No.2 by James MacMillan. Did you already know his music?
Yes. I conducted Veni Veni Emmanuel, his first Percussion Concerto, a few times and gave the American premiere of his Fourth Symphony. His music is quite challenging, both physically and technically, since MacMillan writes really virtuoso parts for his performers. But it is always such a rewarding experience when you work through it. Listening to how everything fits together, the textures, the colours, the deeply religious undertones: it’s very emotional and has a powerful rhetoric in all passages.
What are the pitfalls for you as a conductor?
I find it a great and fun challenge to accompany a percussionist as a conductor. – We are both very physically engaged. At all times we have to be in absolute sync and communicate very precisely with each other to make the concerto work. Furthermore, it’s very tricky to get the right balance for all the complex and delicate parts MacMillan writes for the orchestra and the solo percussion.
What I like most about it is how MacMillan makes the “metallic” quality shine. Not only in the solo and orchestral percussion but also in the brass.
I’ll do the pre concert talks on 18+20 January in Concertgebouw, and interviewed MacMillan about his concerto before its world premiere in 2014.
#AVROTROSVrijdagconcert #DominiqueVleeshouwers #ElimChan #JamesMacMillan #NetherlandsPhilharmonicOrchestra
-
@Julian Fietkau I'm surprised to read that (streams) allegedly has FEP-e232 implemented. As I happen to have two (streams) channels myself, and as (streams) allows me to have a look at the whole source code of any activity (whereas Hubzilla only shows me that of the content), I've checked a fairly recent post of mine that includes a link. And while it does define the hashtags just like Mastodon and Hubzilla, it does not define links in a way that conforms to FEP-e232. Either that, or (streams)' implementation of FEP-e232 is newer than the software was when I sent that post.
Next, I wanted to see if (streams) had its way of quote-posting changed in the last seven years or so of development and forking. I expected it to quote-post like Hubzilla, namely by turning a BBcode short code into a dumb copy of the original upon sending, but I wanted to see proof. As (streams) is a fork of a fork of three forks of a fork (of a fork) of Hubzilla that's still maintained by Hubzilla's own creator, I would have been surprised if he had changed the way (streams) quote-posts at some point on the way.
So I quote-posted my own post on (streams) just to see what happens. And (streams) acted exactly like Hubzilla and not at all like described in FEP-044f on the surface. It still inserts a dumb copy.
Good thing I have access to the full source code of any message on (streams). So here's what happened, namely what I expected to happen: (streams) quote-posts like Hubzilla.
First of all, when I clicked the "Share" button, this short code was inserted into the post editor:[share=1198713][/share]
The number, by the way, is the running number of the message to quote-post on the server.
Upon sending the post, (streams) automatically "expanded" the short code into the dumb copy I had expected.[share author='Jupiter+Rowland' profile='https://hub.netzgemeinde.eu/channel/jupiter_rowland' portable_id='_moYLN61-o3FbP3jyThygMDf-bjF2cApXgkrwlAE77iKy19xM1_6F06V4b71eTkqqNaTUjGiN0lfw2dyn5nXRw' avatar='https://streams.elsmussols.net/xp/6b50efa4bb804860f6128bba791b74fab4a0a5e09dbcbee8d8ca77cee00f0330-6' link='https://hub.netzgemeinde.eu/item/0a1cdda5-eb1c-4a33-9574-ddd896977b4f' auth='true' posted='2025-09-21 19:42:56' message_id='https://hub.netzgemeinde.eu/item/0a1cdda5-eb1c-4a33-9574-ddd896977b4f'] ...(the source code of the original message goes here)... [/share]
Both Hubzilla and (streams) render this the same way, namely with a header line above the copy that includes the profile picture of the original author, the name of the original author with a Zot/Nomad-type link to their channel/account and a Zot/Nomad-type link to the original of the post ("Zot/Nomad-type" means that[zrl][/zrl]is used rather than[url][/url]which means that the ID of an observer on Hubzilla/(streams)/Forte is attached to the link for OpenWebAuth identity recognition purposes.)
At the same time, curiously, (streams) includes the line"rel": "https://misskey-hub.net/ns#_misskey_quote"and a line that starts with"name": "RE:and continues with the URL of the original message into the code for the link to the original message. The latter is identical to what Misskey and all Forkeys have in quote-posting notes in plain sight, only that (streams) only reveals it in the source code rather than in the content as well.
So this part of FEP-044f is implemented, albeit concealed from most people and only happening in the code.
Now, looking at the quote policy part, that looks like it could be possible to add to the Fediverse's permission champions Hubzilla, (streams) and Forte. After all, they already have comment controls with no FEP backing it (and if GoToSocial's quote policy can be made into an FEP, maybe so can (streams)' and Forte's comment controls so that they actually do blank out reply buttons on the farther ends of the Fediverse if the software on the farther ends implement support for that FEP).
This could be done at three levels again. I'll illustrate this with (streams) and Forte because they're quite a bit less complex than older Hubzilla.
At channel level, quote-posting (and maybe quoting as well) could be set as usually, namely to semi-public (= everyone in the Fediverse = no quote policy), restricted (= only your contacts) and only yourself. (Seriously, you don't want random passersby with no accounts to quote-post you. Even though you can allow them to comment on your posts if you dare.)
"Only yourself" could be overridden at contact level by permitting certain contacts to quote-post (and maybe quote) your messages. This is actually standard behaviour on (streams) and Forte.
And then there is the per-post level which would be similar to (streams)' and Forte's comment controls. These allow you to limit who may comment on a post to only your contacts and those who have already participated in the same conversation, and they allow you to turn off comments altogether.
Quote authorisation would not be much different in handling from manually moderating comments from those who technically aren't permitted to comment (only that spammers don't quote-post, at least not yet, and they probably never will because that simply makes no sense). So that'd be nothing really new.
Of course, this would have some limitations which come from how Hubzilla, (streams) and Forte work and from their conversation architecture.
The first limitation is that you could only give certain contacts permission to quote-post your posts if you didn't give it to the whole Fediverse. Channel-wide permissions are always inherited by contact-specific permissions, and this cannot be overridden. So you couldn't generally allow everyone to quote-post your posts except for one certain contact of yours.
The second limitation is that you can only control the permissions of contacts, but not of non-contacts. So you can't disallow some stranger whom you aren't connected to to quote-post your posts while everyone else is allowed.
Then again, FEP-044f doesn't make either of these two possible either. It can only define who is permitted to quote-post a post, not who isn't.
The third limitation is that, on Hubzilla, (streams) and Forte, comments always have the same permissions as the post that they belong to because comments always have the same owner as the post that they belong to. Basically, if FEP-044f was to be defined for each comment individually, it would have a chance of clashing with conversation containers as per FEP-171b.
Here on Hubzilla, as well as from (streams)' point of view, everyone's comments in this thread are owned by me because I've started the thread. And the permissions on all these comments are defined by my post. I've seen my share of permission clashes whenever someone on Mastodon replied to a public post or a public comment with a DM, and Hubzilla overrode this by forcing the permissions of the post on that reply.
In practice, this means that the quote policies of all comments would be the same as that of the post. At least that's how Hubzilla, (streams) and Forte would understand them because the concept of comments having different permissions than the post is alien to them. So if you say that I'm not permitted to quote-post your comment, but I say that anyone can quote-post my post, Hubzilla and (streams) override the quote policy that you've given your comment on Mastodon with the quote policy that I've given my post on Hubzilla, and I can quote-post you.
So the actually difficult part would be to implement an exception in how Hubzilla, (streams) and Forte handle comment permissions for quote policies and make them individual for each comment rather than making comments inherit them from the post.
Well, and lastly, if you permitted all your contacts to quote-post a post of yours, and you had a few more contacts, the"canQuote"section would end up monstrous. (A bit less so if you could cherry-pick those who are allowed to quote-post you on a per-post base, just like you can cherry-pick those who are allowed to see the post in the first place.) Also, I'm wondering just how well policies as per FEP-044f (and their implementations in various server applications) will work with DIDs as per FEP-ef61 which (streams) and Forte use, and I guess, so does Mitra now.
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Misskey #Forkey #Forkeys #GoToSocial #Hubzilla #Streams #(streams) #Forte #Mitra #QuotePost #QuotePosts #QuoteTweet #QuoteTweets #QuoteToot #QuoteToots #QuoteBoost #QuoteBoosts #QuotedShares #Permission #Permissions #FEP_044f #FEP_171b #FEP_e232 #FEP_ef61 -
@Julian Fietkau I'm surprised to read that (streams) allegedly has FEP-e232 implemented. As I happen to have two (streams) channels myself, and as (streams) allows me to have a look at the whole source code of any activity (whereas Hubzilla only shows me that of the content), I've checked a fairly recent post of mine that includes a link. And while it does define the hashtags just like Mastodon and Hubzilla, it does not define links in a way that conforms to FEP-e232. Either that, or (streams)' implementation of FEP-e232 is newer than the software was when I sent that post.
Next, I wanted to see if (streams) had its way of quote-posting changed in the last seven years or so of development and forking. I expected it to quote-post like Hubzilla, namely by turning a BBcode short code into a dumb copy of the original upon sending, but I wanted to see proof. As (streams) is a fork of a fork of three forks of a fork (of a fork) of Hubzilla that's still maintained by Hubzilla's own creator, I would have been surprised if he had changed the way (streams) quote-posts at some point on the way.
So I quote-posted my own post on (streams) just to see what happens. And (streams) acted exactly like Hubzilla and not at all like described in FEP-044f on the surface. It still inserts a dumb copy.
Good thing I have access to the full source code of any message on (streams). So here's what happened, namely what I expected to happen: (streams) quote-posts like Hubzilla.
First of all, when I clicked the "Share" button, this short code was inserted into the post editor:[share=1198713][/share]
The number, by the way, is the running number of the message to quote-post on the server.
Upon sending the post, (streams) automatically "expanded" the short code into the dumb copy I had expected.[share author='Jupiter+Rowland' profile='https://hub.netzgemeinde.eu/channel/jupiter_rowland' portable_id='_moYLN61-o3FbP3jyThygMDf-bjF2cApXgkrwlAE77iKy19xM1_6F06V4b71eTkqqNaTUjGiN0lfw2dyn5nXRw' avatar='https://streams.elsmussols.net/xp/6b50efa4bb804860f6128bba791b74fab4a0a5e09dbcbee8d8ca77cee00f0330-6' link='https://hub.netzgemeinde.eu/item/0a1cdda5-eb1c-4a33-9574-ddd896977b4f' auth='true' posted='2025-09-21 19:42:56' message_id='https://hub.netzgemeinde.eu/item/0a1cdda5-eb1c-4a33-9574-ddd896977b4f'] ...(the source code of the original message goes here)... [/share]
Both Hubzilla and (streams) render this the same way, namely with a header line above the copy that includes the profile picture of the original author, the name of the original author with a Zot/Nomad-type link to their channel/account and a Zot/Nomad-type link to the original of the post ("Zot/Nomad-type" means that[zrl][/zrl]is used rather than[url][/url]which means that the ID of an observer on Hubzilla/(streams)/Forte is attached to the link for OpenWebAuth identity recognition purposes.)
At the same time, curiously, (streams) includes the line"rel": "https://misskey-hub.net/ns#_misskey_quote"and a line that starts with"name": "RE:and continues with the URL of the original message into the code for the link to the original message. The latter is identical to what Misskey and all Forkeys have in quote-posting notes in plain sight, only that (streams) only reveals it in the source code rather than in the content as well.
So this part of FEP-044f is implemented, albeit concealed from most people and only happening in the code.
Now, looking at the quote policy part, that looks like it could be possible to add to the Fediverse's permission champions Hubzilla, (streams) and Forte. After all, they already have comment controls with no FEP backing it (and if GoToSocial's quote policy can be made into an FEP, maybe so can (streams)' and Forte's comment controls so that they actually do blank out reply buttons on the farther ends of the Fediverse if the software on the farther ends implement support for that FEP).
This could be done at three levels again. I'll illustrate this with (streams) and Forte because they're quite a bit less complex than older Hubzilla.
At channel level, quote-posting (and maybe quoting as well) could be set as usually, namely to semi-public (= everyone in the Fediverse = no quote policy), restricted (= only your contacts) and only yourself. (Seriously, you don't want random passersby with no accounts to quote-post you. Even though you can allow them to comment on your posts if you dare.)
"Only yourself" could be overridden at contact level by permitting certain contacts to quote-post (and maybe quote) your messages. This is actually standard behaviour on (streams) and Forte.
And then there is the per-post level which would be similar to (streams)' and Forte's comment controls. These allow you to limit who may comment on a post to only your contacts and those who have already participated in the same conversation, and they allow you to turn off comments altogether.
Quote authorisation would not be much different in handling from manually moderating comments from those who technically aren't permitted to comment (only that spammers don't quote-post, at least not yet, and they probably never will because that simply makes no sense). So that'd be nothing really new.
Of course, this would have some limitations which come from how Hubzilla, (streams) and Forte work and from their conversation architecture.
The first limitation is that you could only give certain contacts permission to quote-post your posts if you didn't give it to the whole Fediverse. Channel-wide permissions are always inherited by contact-specific permissions, and this cannot be overridden. So you couldn't generally allow everyone to quote-post your posts except for one certain contact of yours.
The second limitation is that you can only control the permissions of contacts, but not of non-contacts. So you can't disallow some stranger whom you aren't connected to to quote-post your posts while everyone else is allowed.
Then again, FEP-044f doesn't make either of these two possible either. It can only define who is permitted to quote-post a post, not who isn't.
The third limitation is that, on Hubzilla, (streams) and Forte, comments always have the same permissions as the post that they belong to because comments always have the same owner as the post that they belong to. Basically, if FEP-044f was to be defined for each comment individually, it would have a chance of clashing with conversation containers as per FEP-171b.
Here on Hubzilla, as well as from (streams)' point of view, everyone's comments in this thread are owned by me because I've started the thread. And the permissions on all these comments are defined by my post. I've seen my share of permission clashes whenever someone on Mastodon replied to a public post or a public comment with a DM, and Hubzilla overrode this by forcing the permissions of the post on that reply.
In practice, this means that the quote policies of all comments would be the same as that of the post. At least that's how Hubzilla, (streams) and Forte would understand them because the concept of comments having different permissions than the post is alien to them. So if you say that I'm not permitted to quote-post your comment, but I say that anyone can quote-post my post, Hubzilla and (streams) override the quote policy that you've given your comment on Mastodon with the quote policy that I've given my post on Hubzilla, and I can quote-post you.
So the actually difficult part would be to implement an exception in how Hubzilla, (streams) and Forte handle comment permissions for quote policies and make them individual for each comment rather than making comments inherit them from the post.
Well, and lastly, if you permitted all your contacts to quote-post a post of yours, and you had a few more contacts, the"canQuote"section would end up monstrous. (A bit less so if you could cherry-pick those who are allowed to quote-post you on a per-post base, just like you can cherry-pick those who are allowed to see the post in the first place.) Also, I'm wondering just how well policies as per FEP-044f (and their implementations in various server applications) will work with DIDs as per FEP-ef61 which (streams) and Forte use, and I guess, so does Mitra now.
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Misskey #Forkey #Forkeys #GoToSocial #Hubzilla #Streams #(streams) #Forte #Mitra #QuotePost #QuotePosts #QuoteTweet #QuoteTweets #QuoteToot #QuoteToots #QuoteBoost #QuoteBoosts #QuotedShares #Permission #Permissions #FEP_044f #FEP_171b #FEP_e232 #FEP_ef61 -
@Julian Fietkau I'm surprised to read that (streams) allegedly has FEP-e232 implemented. As I happen to have two (streams) channels myself, and as (streams) allows me to have a look at the whole source code of any activity (whereas Hubzilla only shows me that of the content), I've checked a fairly recent post of mine that includes a link. And while it does define the hashtags just like Mastodon and Hubzilla, it does not define links in a way that conforms to FEP-e232. Either that, or (streams)' implementation of FEP-e232 is newer than the software was when I sent that post.
Next, I wanted to see if (streams) had its way of quote-posting changed in the last seven years or so of development and forking. I expected it to quote-post like Hubzilla, namely by turning a BBcode short code into a dumb copy of the original upon sending, but I wanted to see proof. As (streams) is a fork of a fork of three forks of a fork (of a fork) of Hubzilla that's still maintained by Hubzilla's own creator, I would have been surprised if he had changed the way (streams) quote-posts at some point on the way.
So I quote-posted my own post on (streams) just to see what happens. And (streams) acted exactly like Hubzilla and not at all like described in FEP-044f on the surface. It still inserts a dumb copy.
Good thing I have access to the full source code of any message on (streams). So here's what happened, namely what I expected to happen: (streams) quote-posts like Hubzilla.
First of all, when I clicked the "Share" button, this short code was inserted into the post editor:[share=1198713][/share]
The number, by the way, is the running number of the message to quote-post on the server.
Upon sending the post, (streams) automatically "expanded" the short code into the dumb copy I had expected.[share author='Jupiter+Rowland' profile='https://hub.netzgemeinde.eu/channel/jupiter_rowland' portable_id='_moYLN61-o3FbP3jyThygMDf-bjF2cApXgkrwlAE77iKy19xM1_6F06V4b71eTkqqNaTUjGiN0lfw2dyn5nXRw' avatar='https://streams.elsmussols.net/xp/6b50efa4bb804860f6128bba791b74fab4a0a5e09dbcbee8d8ca77cee00f0330-6' link='https://hub.netzgemeinde.eu/item/0a1cdda5-eb1c-4a33-9574-ddd896977b4f' auth='true' posted='2025-09-21 19:42:56' message_id='https://hub.netzgemeinde.eu/item/0a1cdda5-eb1c-4a33-9574-ddd896977b4f'] ...(the source code of the original message goes here)... [/share]
Both Hubzilla and (streams) render this the same way, namely with a header line above the copy that includes the profile picture of the original author, the name of the original author with a Zot/Nomad-type link to their channel/account and a Zot/Nomad-type link to the original of the post ("Zot/Nomad-type" means that[zrl][/zrl]is used rather than[url][/url]which means that the ID of an observer on Hubzilla/(streams)/Forte is attached to the link for OpenWebAuth identity recognition purposes.)
At the same time, curiously, (streams) includes the line"rel": "https://misskey-hub.net/ns#_misskey_quote"and a line that starts with"name": "RE:and continues with the URL of the original message into the code for the link to the original message. The latter is identical to what Misskey and all Forkeys have in quote-posting notes in plain sight, only that (streams) only reveals it in the source code rather than in the content as well.
So this part of FEP-044f is implemented, albeit concealed from most people and only happening in the code.
Now, looking at the quote policy part, that looks like it could be possible to add to the Fediverse's permission champions Hubzilla, (streams) and Forte. After all, they already have comment controls with no FEP backing it (and if GoToSocial's quote policy can be made into an FEP, maybe so can (streams)' and Forte's comment controls so that they actually do blank out reply buttons on the farther ends of the Fediverse if the software on the farther ends implement support for that FEP).
This could be done at three levels again. I'll illustrate this with (streams) and Forte because they're quite a bit less complex than older Hubzilla.
At channel level, quote-posting (and maybe quoting as well) could be set as usually, namely to semi-public (= everyone in the Fediverse = no quote policy), restricted (= only your contacts) and only yourself. (Seriously, you don't want random passersby with no accounts to quote-post you. Even though you can allow them to comment on your posts if you dare.)
"Only yourself" could be overridden at contact level by permitting certain contacts to quote-post (and maybe quote) your messages. This is actually standard behaviour on (streams) and Forte.
And then there is the per-post level which would be similar to (streams)' and Forte's comment controls. These allow you to limit who may comment on a post to only your contacts and those who have already participated in the same conversation, and they allow you to turn off comments altogether.
Quote authorisation would not be much different in handling from manually moderating comments from those who technically aren't permitted to comment (only that spammers don't quote-post, at least not yet, and they probably never will because that simply makes no sense). So that'd be nothing really new.
Of course, this would have some limitations which come from how Hubzilla, (streams) and Forte work and from their conversation architecture.
The first limitation is that you could only give certain contacts permission to quote-post your posts if you didn't give it to the whole Fediverse. Channel-wide permissions are always inherited by contact-specific permissions, and this cannot be overridden. So you couldn't generally allow everyone to quote-post your posts except for one certain contact of yours.
The second limitation is that you can only control the permissions of contacts, but not of non-contacts. So you can't disallow some stranger whom you aren't connected to to quote-post your posts while everyone else is allowed.
Then again, FEP-044f doesn't make either of these two possible either. It can only define who is permitted to quote-post a post, not who isn't.
The third limitation is that, on Hubzilla, (streams) and Forte, comments always have the same permissions as the post that they belong to because comments always have the same owner as the post that they belong to. Basically, if FEP-044f was to be defined for each comment individually, it would have a chance of clashing with conversation containers as per FEP-171b.
Here on Hubzilla, as well as from (streams)' point of view, everyone's comments in this thread are owned by me because I've started the thread. And the permissions on all these comments are defined by my post. I've seen my share of permission clashes whenever someone on Mastodon replied to a public post or a public comment with a DM, and Hubzilla overrode this by forcing the permissions of the post on that reply.
In practice, this means that the quote policies of all comments would be the same as that of the post. At least that's how Hubzilla, (streams) and Forte would understand them because the concept of comments having different permissions than the post is alien to them. So if you say that I'm not permitted to quote-post your comment, but I say that anyone can quote-post my post, Hubzilla and (streams) override the quote policy that you've given your comment on Mastodon with the quote policy that I've given my post on Hubzilla, and I can quote-post you.
So the actually difficult part would be to implement an exception in how Hubzilla, (streams) and Forte handle comment permissions for quote policies and make them individual for each comment rather than making comments inherit them from the post.
Well, and lastly, if you permitted all your contacts to quote-post a post of yours, and you had a few more contacts, the"canQuote"section would end up monstrous. (A bit less so if you could cherry-pick those who are allowed to quote-post you on a per-post base, just like you can cherry-pick those who are allowed to see the post in the first place.) Also, I'm wondering just how well policies as per FEP-044f (and their implementations in various server applications) will work with DIDs as per FEP-ef61 which (streams) and Forte use, and I guess, so does Mitra now.
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Misskey #Forkey #Forkeys #GoToSocial #Hubzilla #Streams #(streams) #Forte #Mitra #QuotePost #QuotePosts #QuoteTweet #QuoteTweets #QuoteToot #QuoteToots #QuoteBoost #QuoteBoosts #QuotedShares #Permission #Permissions #FEP_044f #FEP_171b #FEP_e232 #FEP_ef61 -
@Julian Fietkau I'm surprised to read that (streams) allegedly has FEP-e232 implemented. As I happen to have two (streams) channels myself, and as (streams) allows me to have a look at the whole source code of any activity (whereas Hubzilla only shows me that of the content), I've checked a fairly recent post of mine that includes a link. And while it does define the hashtags just like Mastodon and Hubzilla, it does not define links in a way that conforms to FEP-e232. Either that, or (streams)' implementation of FEP-e232 is newer than the software was when I sent that post.
Next, I wanted to see if (streams) had its way of quote-posting changed in the last seven years or so of development and forking. I expected it to quote-post like Hubzilla, namely by turning a BBcode short code into a dumb copy of the original upon sending, but I wanted to see proof. As (streams) is a fork of a fork of three forks of a fork (of a fork) of Hubzilla that's still maintained by Hubzilla's own creator, I would have been surprised if he had changed the way (streams) quote-posts at some point on the way.
So I quote-posted my own post on (streams) just to see what happens. And (streams) acted exactly like Hubzilla and not at all like described in FEP-044f on the surface. It still inserts a dumb copy.
Good thing I have access to the full source code of any message on (streams). So here's what happened, namely what I expected to happen: (streams) quote-posts like Hubzilla.
First of all, when I clicked the "Share" button, this short code was inserted into the post editor:[share=1198713][/share]
The number, by the way, is the running number of the message to quote-post on the server.
Upon sending the post, (streams) automatically "expanded" the short code into the dumb copy I had expected.[share author='Jupiter+Rowland' profile='https://hub.netzgemeinde.eu/channel/jupiter_rowland' portable_id='_moYLN61-o3FbP3jyThygMDf-bjF2cApXgkrwlAE77iKy19xM1_6F06V4b71eTkqqNaTUjGiN0lfw2dyn5nXRw' avatar='https://streams.elsmussols.net/xp/6b50efa4bb804860f6128bba791b74fab4a0a5e09dbcbee8d8ca77cee00f0330-6' link='https://hub.netzgemeinde.eu/item/0a1cdda5-eb1c-4a33-9574-ddd896977b4f' auth='true' posted='2025-09-21 19:42:56' message_id='https://hub.netzgemeinde.eu/item/0a1cdda5-eb1c-4a33-9574-ddd896977b4f'] ...(the source code of the original message goes here)... [/share]
Both Hubzilla and (streams) render this the same way, namely with a header line above the copy that includes the profile picture of the original author, the name of the original author with a Zot/Nomad-type link to their channel/account and a Zot/Nomad-type link to the original of the post ("Zot/Nomad-type" means that[zrl][/zrl]is used rather than[url][/url]which means that the ID of an observer on Hubzilla/(streams)/Forte is attached to the link for OpenWebAuth identity recognition purposes.)
At the same time, curiously, (streams) includes the line"rel": "https://misskey-hub.net/ns#_misskey_quote"and a line that starts with"name": "RE:and continues with the URL of the original message into the code for the link to the original message. The latter is identical to what Misskey and all Forkeys have in quote-posting notes in plain sight, only that (streams) only reveals it in the source code rather than in the content as well.
So this part of FEP-044f is implemented, albeit concealed from most people and only happening in the code.
Now, looking at the quote policy part, that looks like it could be possible to add to the Fediverse's permission champions Hubzilla, (streams) and Forte. After all, they already have comment controls with no FEP backing it (and if GoToSocial's quote policy can be made into an FEP, maybe so can (streams)' and Forte's comment controls so that they actually do blank out reply buttons on the farther ends of the Fediverse if the software on the farther ends implement support for that FEP).
This could be done at three levels again. I'll illustrate this with (streams) and Forte because they're quite a bit less complex than older Hubzilla.
At channel level, quote-posting (and maybe quoting as well) could be set as usually, namely to semi-public (= everyone in the Fediverse = no quote policy), restricted (= only your contacts) and only yourself. (Seriously, you don't want random passersby with no accounts to quote-post you. Even though you can allow them to comment on your posts if you dare.)
"Only yourself" could be overridden at contact level by permitting certain contacts to quote-post (and maybe quote) your messages. This is actually standard behaviour on (streams) and Forte.
And then there is the per-post level which would be similar to (streams)' and Forte's comment controls. These allow you to limit who may comment on a post to only your contacts and those who have already participated in the same conversation, and they allow you to turn off comments altogether.
Quote authorisation would not be much different in handling from manually moderating comments from those who technically aren't permitted to comment (only that spammers don't quote-post, at least not yet, and they probably never will because that simply makes no sense). So that'd be nothing really new.
Of course, this would have some limitations which come from how Hubzilla, (streams) and Forte work and from their conversation architecture.
The first limitation is that you could only give certain contacts permission to quote-post your posts if you didn't give it to the whole Fediverse. Channel-wide permissions are always inherited by contact-specific permissions, and this cannot be overridden. So you couldn't generally allow everyone to quote-post your posts except for one certain contact of yours.
The second limitation is that you can only control the permissions of contacts, but not of non-contacts. So you can't disallow some stranger whom you aren't connected to to quote-post your posts while everyone else is allowed.
Then again, FEP-044f doesn't make either of these two possible either. It can only define who is permitted to quote-post a post, not who isn't.
The third limitation is that, on Hubzilla, (streams) and Forte, comments always have the same permissions as the post that they belong to because comments always have the same owner as the post that they belong to. Basically, if FEP-044f was to be defined for each comment individually, it would have a chance of clashing with conversation containers as per FEP-171b.
Here on Hubzilla, as well as from (streams)' point of view, everyone's comments in this thread are owned by me because I've started the thread. And the permissions on all these comments are defined by my post. I've seen my share of permission clashes whenever someone on Mastodon replied to a public post or a public comment with a DM, and Hubzilla overrode this by forcing the permissions of the post on that reply.
In practice, this means that the quote policies of all comments would be the same as that of the post. At least that's how Hubzilla, (streams) and Forte would understand them because the concept of comments having different permissions than the post is alien to them. So if you say that I'm not permitted to quote-post your comment, but I say that anyone can quote-post my post, Hubzilla and (streams) override the quote policy that you've given your comment on Mastodon with the quote policy that I've given my post on Hubzilla, and I can quote-post you.
So the actually difficult part would be to implement an exception in how Hubzilla, (streams) and Forte handle comment permissions for quote policies and make them individual for each comment rather than making comments inherit them from the post.
Well, and lastly, if you permitted all your contacts to quote-post a post of yours, and you had a few more contacts, the"canQuote"section would end up monstrous. (A bit less so if you could cherry-pick those who are allowed to quote-post you on a per-post base, just like you can cherry-pick those who are allowed to see the post in the first place.) Also, I'm wondering just how well policies as per FEP-044f (and their implementations in various server applications) will work with DIDs as per FEP-ef61 which (streams) and Forte use, and I guess, so does Mitra now.
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Misskey #Forkey #Forkeys #GoToSocial #Hubzilla #Streams #(streams) #Forte #Mitra #QuotePost #QuotePosts #QuoteTweet #QuoteTweets #QuoteToot #QuoteToots #QuoteBoost #QuoteBoosts #QuotedShares #Permission #Permissions #FEP_044f #FEP_171b #FEP_e232 #FEP_ef61 -
The Pittsburgh second person pronoun #yinz has come up here before (e.g., in this 2005 thread);
Now Ed Simon has a whole LitHub essay about it
(apparently an excerpt from his "The Soul of Pittsburgh: Essays on Life, Community, and History"),
tying it to the Glaswegian yins:The city center of Glasgow, Scotland
—that iron-and-glass-forged, cobblestoned fortress of a hilly, rainy, foggy metropolis
—is bisected by the dueling high streets of Buchanan and Sauchiehall.
There are any number of landmarks to draw your attention if ambling down either of these bustling thoroughfares as the last squibs of Caledonian light fight their losing battle of attrition during a brisk November afternoon.
For six months in 2006, Glasgow was my home across the Atlantic, and I often spent those glum Scottish afternoons in precisely this sort of aimless wandering […] Glasgow, I thought, is kind of like Pittsburgh. And then, walking through Glasgow again, I hear it: “There was a couple other of yins as well.” What? […]
There is more than a spiritual congruence between Glasgow and Pittsburgh, as Kelman’s “yins” would indicate, the s that ends that word so perilously close a sibilant to the z in yinz and the words so nearly used identically.
For those unfamiliar with yinz
—though I imagine if you’re currently reading this book, you most likely know what it means, albeit it’s becoming increasingly rare in usage
—it’s simply the Western Pennsylvania second-person plural, the Pittsburgh equivalent of y’all down South or youse in Jersey and New York.It is, admittedly to many outside the region (and to some within it), a strange-sounding word.
Where there is a certain sense in how you and all can be smoosh-mouthed over time into that southern all-purpose word,
yinz has a slightly alien quality about it, a combination of sounds that don’t quite make sense,
a shibboleth of identity to those who live in Pittsburgh and, apparently, Glasgow.
Because Kelman’s “yins” and the “yinz” you hear at Ritter’s Diner in Bloomfield, Gough’s Tavern in Greenfield, Gene’s Place in South Oakland or the Squirrel Hill Café literally have the same origin.As any good Glaswegian would tell you, yin simply means “one,”
but though obscure, it’s actually the same with Pittsburgh’s most distinctive linguistic attribute.
Just as “y’all” is a compression of two other words, so does “yinz” come from you ones.
That phrase is a direct translation of the Gallic Scots, where the second-person plural is perfectly grammatically correct.Calling it the “most salient morphosyntactic feature of local speech,”
Carnegie Mellon University rhetoric professor Barbara Johnson explains in her study
"Speaking Pittsburghese: The Story of a Dialect" (published as part of the prestigious Oxford Studies in Sociolinguistics series)
that “‘yinz’ was brought to America by Scotch-Irish immigrants… the descendants of Protestant people from Scotland and northern England.”Because there are few famous examples of a Pittsburgh dialect
—Michael Keaton speaks with a wonderful accent, especially as the character Beetlejuice,
and outsider Nick Kroll does a fairly good imitation in the skit “Pawnsylvania” from his national sketch comedy show
—it tends to confuse people.
As an accent, Pittsburgh English may be centered in the city,
but today it’s more likely to be heard in the outer counties of Western Pennsylvania.
Linguistically it’s clearly a variation on northern Appalachian English;
yinz or some permutation is frequently heard in western Maryland, eastern Ohio and the West Virginia panhandle.Within Pittsburgh, the accent has a curious aspect to it:
that vaguely twangy Appalachian pronunciation with all those loan words from Polish, Neapolitan and Yiddish,
making the dialect sound a bit like if somebody from Brooklyn was doing a really poor imitation of somebody from Kentucky, an urban Deadwood kind of talk.Pittsburghese, Western Pennsylvania English or, technically,
the North American North Midland dialect
—however you choose to identify the accent, what’s unassailable is that such a way of speaking is strongly identified with the archetypal figure of the Yinzer.
As a Townie or a Southie is to Boston, so is the Yinzer to Pittsburgh.
...
He then goes on to discuss Yinzers at great length.
At any rate, the OED includes yinz under the α forms of you-uns (entry revised 2012):
2006 Yinz was drivin’ pretty fast back there. Pittsburgh Post-Gazette (Nexis) 24 September h6
And the etymology is:
< you pron. + the plural of one pron. (see forms at that entry).
On the pattern of use with plural and singular reference compare discussion at you-all pron. With the formation compare also you-alls pron.¹, yez pron., yous pron., and also later we-uns pron.
#yins #yinser #pittsburgh #glasgow #pittsburghese
@pittsburgh
https://languagehat.com/yinzers/ -
The Pittsburgh second person pronoun #yinz has come up here before (e.g., in this 2005 thread);
Now Ed Simon has a whole LitHub essay about it
(apparently an excerpt from his "The Soul of Pittsburgh: Essays on Life, Community, and History"),
tying it to the Glaswegian yins:The city center of Glasgow, Scotland
—that iron-and-glass-forged, cobblestoned fortress of a hilly, rainy, foggy metropolis
—is bisected by the dueling high streets of Buchanan and Sauchiehall.
There are any number of landmarks to draw your attention if ambling down either of these bustling thoroughfares as the last squibs of Caledonian light fight their losing battle of attrition during a brisk November afternoon.
For six months in 2006, Glasgow was my home across the Atlantic, and I often spent those glum Scottish afternoons in precisely this sort of aimless wandering […] Glasgow, I thought, is kind of like Pittsburgh. And then, walking through Glasgow again, I hear it: “There was a couple other of yins as well.” What? […]
There is more than a spiritual congruence between Glasgow and Pittsburgh, as Kelman’s “yins” would indicate, the s that ends that word so perilously close a sibilant to the z in yinz and the words so nearly used identically.
For those unfamiliar with yinz
—though I imagine if you’re currently reading this book, you most likely know what it means, albeit it’s becoming increasingly rare in usage
—it’s simply the Western Pennsylvania second-person plural, the Pittsburgh equivalent of y’all down South or youse in Jersey and New York.It is, admittedly to many outside the region (and to some within it), a strange-sounding word.
Where there is a certain sense in how you and all can be smoosh-mouthed over time into that southern all-purpose word,
yinz has a slightly alien quality about it, a combination of sounds that don’t quite make sense,
a shibboleth of identity to those who live in Pittsburgh and, apparently, Glasgow.
Because Kelman’s “yins” and the “yinz” you hear at Ritter’s Diner in Bloomfield, Gough’s Tavern in Greenfield, Gene’s Place in South Oakland or the Squirrel Hill Café literally have the same origin.As any good Glaswegian would tell you, yin simply means “one,”
but though obscure, it’s actually the same with Pittsburgh’s most distinctive linguistic attribute.
Just as “y’all” is a compression of two other words, so does “yinz” come from you ones.
That phrase is a direct translation of the Gallic Scots, where the second-person plural is perfectly grammatically correct.Calling it the “most salient morphosyntactic feature of local speech,”
Carnegie Mellon University rhetoric professor Barbara Johnson explains in her study
"Speaking Pittsburghese: The Story of a Dialect" (published as part of the prestigious Oxford Studies in Sociolinguistics series)
that “‘yinz’ was brought to America by Scotch-Irish immigrants… the descendants of Protestant people from Scotland and northern England.”Because there are few famous examples of a Pittsburgh dialect
—Michael Keaton speaks with a wonderful accent, especially as the character Beetlejuice,
and outsider Nick Kroll does a fairly good imitation in the skit “Pawnsylvania” from his national sketch comedy show
—it tends to confuse people.
As an accent, Pittsburgh English may be centered in the city,
but today it’s more likely to be heard in the outer counties of Western Pennsylvania.
Linguistically it’s clearly a variation on northern Appalachian English;
yinz or some permutation is frequently heard in western Maryland, eastern Ohio and the West Virginia panhandle.Within Pittsburgh, the accent has a curious aspect to it:
that vaguely twangy Appalachian pronunciation with all those loan words from Polish, Neapolitan and Yiddish,
making the dialect sound a bit like if somebody from Brooklyn was doing a really poor imitation of somebody from Kentucky, an urban Deadwood kind of talk.Pittsburghese, Western Pennsylvania English or, technically,
the North American North Midland dialect
—however you choose to identify the accent, what’s unassailable is that such a way of speaking is strongly identified with the archetypal figure of the Yinzer.
As a Townie or a Southie is to Boston, so is the Yinzer to Pittsburgh.
...
He then goes on to discuss Yinzers at great length.
At any rate, the OED includes yinz under the α forms of you-uns (entry revised 2012):
2006 Yinz was drivin’ pretty fast back there. Pittsburgh Post-Gazette (Nexis) 24 September h6
And the etymology is:
< you pron. + the plural of one pron. (see forms at that entry).
On the pattern of use with plural and singular reference compare discussion at you-all pron. With the formation compare also you-alls pron.¹, yez pron., yous pron., and also later we-uns pron.
#yins #yinser #pittsburgh #glasgow #pittsburghese
@pittsburgh
https://languagehat.com/yinzers/ -
The Pittsburgh second person pronoun #yinz has come up here before (e.g., in this 2005 thread);
Now Ed Simon has a whole LitHub essay about it
(apparently an excerpt from his "The Soul of Pittsburgh: Essays on Life, Community, and History"),
tying it to the Glaswegian yins:The city center of Glasgow, Scotland
—that iron-and-glass-forged, cobblestoned fortress of a hilly, rainy, foggy metropolis
—is bisected by the dueling high streets of Buchanan and Sauchiehall.
There are any number of landmarks to draw your attention if ambling down either of these bustling thoroughfares as the last squibs of Caledonian light fight their losing battle of attrition during a brisk November afternoon.
For six months in 2006, Glasgow was my home across the Atlantic, and I often spent those glum Scottish afternoons in precisely this sort of aimless wandering […] Glasgow, I thought, is kind of like Pittsburgh. And then, walking through Glasgow again, I hear it: “There was a couple other of yins as well.” What? […]
There is more than a spiritual congruence between Glasgow and Pittsburgh, as Kelman’s “yins” would indicate, the s that ends that word so perilously close a sibilant to the z in yinz and the words so nearly used identically.
For those unfamiliar with yinz
—though I imagine if you’re currently reading this book, you most likely know what it means, albeit it’s becoming increasingly rare in usage
—it’s simply the Western Pennsylvania second-person plural, the Pittsburgh equivalent of y’all down South or youse in Jersey and New York.It is, admittedly to many outside the region (and to some within it), a strange-sounding word.
Where there is a certain sense in how you and all can be smoosh-mouthed over time into that southern all-purpose word,
yinz has a slightly alien quality about it, a combination of sounds that don’t quite make sense,
a shibboleth of identity to those who live in Pittsburgh and, apparently, Glasgow.
Because Kelman’s “yins” and the “yinz” you hear at Ritter’s Diner in Bloomfield, Gough’s Tavern in Greenfield, Gene’s Place in South Oakland or the Squirrel Hill Café literally have the same origin.As any good Glaswegian would tell you, yin simply means “one,”
but though obscure, it’s actually the same with Pittsburgh’s most distinctive linguistic attribute.
Just as “y’all” is a compression of two other words, so does “yinz” come from you ones.
That phrase is a direct translation of the Gallic Scots, where the second-person plural is perfectly grammatically correct.Calling it the “most salient morphosyntactic feature of local speech,”
Carnegie Mellon University rhetoric professor Barbara Johnson explains in her study
"Speaking Pittsburghese: The Story of a Dialect" (published as part of the prestigious Oxford Studies in Sociolinguistics series)
that “‘yinz’ was brought to America by Scotch-Irish immigrants… the descendants of Protestant people from Scotland and northern England.”Because there are few famous examples of a Pittsburgh dialect
—Michael Keaton speaks with a wonderful accent, especially as the character Beetlejuice,
and outsider Nick Kroll does a fairly good imitation in the skit “Pawnsylvania” from his national sketch comedy show
—it tends to confuse people.
As an accent, Pittsburgh English may be centered in the city,
but today it’s more likely to be heard in the outer counties of Western Pennsylvania.
Linguistically it’s clearly a variation on northern Appalachian English;
yinz or some permutation is frequently heard in western Maryland, eastern Ohio and the West Virginia panhandle.Within Pittsburgh, the accent has a curious aspect to it:
that vaguely twangy Appalachian pronunciation with all those loan words from Polish, Neapolitan and Yiddish,
making the dialect sound a bit like if somebody from Brooklyn was doing a really poor imitation of somebody from Kentucky, an urban Deadwood kind of talk.Pittsburghese, Western Pennsylvania English or, technically,
the North American North Midland dialect
—however you choose to identify the accent, what’s unassailable is that such a way of speaking is strongly identified with the archetypal figure of the Yinzer.
As a Townie or a Southie is to Boston, so is the Yinzer to Pittsburgh.
...
He then goes on to discuss Yinzers at great length.
At any rate, the OED includes yinz under the α forms of you-uns (entry revised 2012):
2006 Yinz was drivin’ pretty fast back there. Pittsburgh Post-Gazette (Nexis) 24 September h6
And the etymology is:
< you pron. + the plural of one pron. (see forms at that entry).
On the pattern of use with plural and singular reference compare discussion at you-all pron. With the formation compare also you-alls pron.¹, yez pron., yous pron., and also later we-uns pron.
#yins #yinser #pittsburgh #glasgow #pittsburghese
@pittsburgh
https://languagehat.com/yinzers/ -
The Pittsburgh second person pronoun #yinz has come up here before (e.g., in this 2005 thread);
Now Ed Simon has a whole LitHub essay about it
(apparently an excerpt from his "The Soul of Pittsburgh: Essays on Life, Community, and History"),
tying it to the Glaswegian yins:The city center of Glasgow, Scotland
—that iron-and-glass-forged, cobblestoned fortress of a hilly, rainy, foggy metropolis
—is bisected by the dueling high streets of Buchanan and Sauchiehall.
There are any number of landmarks to draw your attention if ambling down either of these bustling thoroughfares as the last squibs of Caledonian light fight their losing battle of attrition during a brisk November afternoon.
For six months in 2006, Glasgow was my home across the Atlantic, and I often spent those glum Scottish afternoons in precisely this sort of aimless wandering […] Glasgow, I thought, is kind of like Pittsburgh. And then, walking through Glasgow again, I hear it: “There was a couple other of yins as well.” What? […]
There is more than a spiritual congruence between Glasgow and Pittsburgh, as Kelman’s “yins” would indicate, the s that ends that word so perilously close a sibilant to the z in yinz and the words so nearly used identically.
For those unfamiliar with yinz
—though I imagine if you’re currently reading this book, you most likely know what it means, albeit it’s becoming increasingly rare in usage
—it’s simply the Western Pennsylvania second-person plural, the Pittsburgh equivalent of y’all down South or youse in Jersey and New York.It is, admittedly to many outside the region (and to some within it), a strange-sounding word.
Where there is a certain sense in how you and all can be smoosh-mouthed over time into that southern all-purpose word,
yinz has a slightly alien quality about it, a combination of sounds that don’t quite make sense,
a shibboleth of identity to those who live in Pittsburgh and, apparently, Glasgow.
Because Kelman’s “yins” and the “yinz” you hear at Ritter’s Diner in Bloomfield, Gough’s Tavern in Greenfield, Gene’s Place in South Oakland or the Squirrel Hill Café literally have the same origin.As any good Glaswegian would tell you, yin simply means “one,”
but though obscure, it’s actually the same with Pittsburgh’s most distinctive linguistic attribute.
Just as “y’all” is a compression of two other words, so does “yinz” come from you ones.
That phrase is a direct translation of the Gallic Scots, where the second-person plural is perfectly grammatically correct.Calling it the “most salient morphosyntactic feature of local speech,”
Carnegie Mellon University rhetoric professor Barbara Johnson explains in her study
"Speaking Pittsburghese: The Story of a Dialect" (published as part of the prestigious Oxford Studies in Sociolinguistics series)
that “‘yinz’ was brought to America by Scotch-Irish immigrants… the descendants of Protestant people from Scotland and northern England.”Because there are few famous examples of a Pittsburgh dialect
—Michael Keaton speaks with a wonderful accent, especially as the character Beetlejuice,
and outsider Nick Kroll does a fairly good imitation in the skit “Pawnsylvania” from his national sketch comedy show
—it tends to confuse people.
As an accent, Pittsburgh English may be centered in the city,
but today it’s more likely to be heard in the outer counties of Western Pennsylvania.
Linguistically it’s clearly a variation on northern Appalachian English;
yinz or some permutation is frequently heard in western Maryland, eastern Ohio and the West Virginia panhandle.Within Pittsburgh, the accent has a curious aspect to it:
that vaguely twangy Appalachian pronunciation with all those loan words from Polish, Neapolitan and Yiddish,
making the dialect sound a bit like if somebody from Brooklyn was doing a really poor imitation of somebody from Kentucky, an urban Deadwood kind of talk.Pittsburghese, Western Pennsylvania English or, technically,
the North American North Midland dialect
—however you choose to identify the accent, what’s unassailable is that such a way of speaking is strongly identified with the archetypal figure of the Yinzer.
As a Townie or a Southie is to Boston, so is the Yinzer to Pittsburgh.
...
He then goes on to discuss Yinzers at great length.
At any rate, the OED includes yinz under the α forms of you-uns (entry revised 2012):
2006 Yinz was drivin’ pretty fast back there. Pittsburgh Post-Gazette (Nexis) 24 September h6
And the etymology is:
< you pron. + the plural of one pron. (see forms at that entry).
On the pattern of use with plural and singular reference compare discussion at you-all pron. With the formation compare also you-alls pron.¹, yez pron., yous pron., and also later we-uns pron.
#yins #yinser #pittsburgh #glasgow #pittsburghese
@pittsburgh
https://languagehat.com/yinzers/ -
Meanwhile, in #Maine...
How Concerned Citizens Drove a #NeoNazi Out of Rural Maine
#ChristopherPohlhaus wanted to build a #fascist training compound in America’s whitest state. His neighbors had other plans.by Mira Ptacin | The Atavist Magazine | October 31, 2024
"The first step in establishing a neo-Nazi compound is to clear and level the land. These sites tend to pop up in rural America, which means that there’s brush to hack down, tree stumps to pull up, and piles of debris to burn. All this work is done to make room for the barracks, kitchens, and meeting halls where modern-day devotees of Adolf Hitler will live, work, and train together.
"When Christopher Pohlhaus moved to the forested lot where, like other neo-Nazis on other forested lots before him, he planned to start a fascist revolution, he brought two RVs with him. That meant he had somewhere to bunk down at night. But he didn’t have running water. I can’t say how he bathed when he first arrived; as for other matters of hygiene, perhaps he used the woods.
"Pohlhaus’s parcel of 10.6 acres does not have an address. Technically, it’s in #SpringfieldMaine, a hamlet of fewer than 300 people. The closest city, about an hour’s drive away, is #BangorMaine. That’s where Pohlhaus, a gym rat, eventually joined Planet Fitness. To get home after a session of lifting, showering, and doing whatever else he needed to do, Pohlhaus would take Route 2 north, then turn eastward on Route 6. He would drive to Bottle Lake Road, take a right, and drive about two miles before taking another right on a gravel lane called Moores Road. Eventually, among scattered hunting camps, Trump banners, and 'Support the Blue' signs, he would come to a metal gate situated on a dirt road. Behind the gate sat the land of Pohlhaus’s dreams.
"Pohlhaus, 37, is a former U.S. marine, an itinerant tattoo artist, and a hardcore white-supremacist influencer. He is loud and hostile, and proud to be both. His voice is pitched surprisingly high, and he has a slight Southern drawl. He has a large body and small bald head; a blue-black tattoo crawls up the right side of his face, from his chin to his forehead. Over the years, Pohlhaus has collected thousands of social media followers, who know him by his nickname: #Hammer.
"Hammer had been living in Texas for a few years when, in March 2022, he bought the land in Maine. He told his followers that he was going to use it to build a haven, operational center, and training ground for white supremacists. He invited them to join him. Together, he said, they would plant the seed of a #WhiteEthnostate, and they would engage in violence, if necessary, to nurture it. 'An unarmed man sacrifices his family to the unpredictably [sic] of chaos,' Hammer wrote online in 2021.
"Hammer packed his bags and headed north, meeting with various white supremacists along the way. He solicited donations for his new compound in the form of cryptocurrency, and later set up a page on GiveSendGo, a Christian crowdfunding site. He raised close to $10,000 before the campaign was shut down earlier this year.
"Once he’d settled in Maine, Hammer kept his followers abreast of his progress breaking ground, frequently posting photos and uploading videos to Telegram. There was Hammer standing next to a pile of freshly chopped wood, snowshoeing through the forest, holding a beer in front of a bonfire. Followers saw him cradling an AK-47 in his arms. (Caption: 'All this Slavic war training in the Maine woods has me exhausted!') Hammer posted footage from a celebration he held with about eight of his followers, where he claimed they sacrificed a goat. Another clip showed Hammer helping a man in a balaclava slice the palm of his hand as part of an initiation ritual.
"Hammer appeared excited, optimistic. He was careful—or thought that he was careful—not to reveal his exact location, lest it attract unwanted attention from his enemies, including the media and the FBI. If people wanted to join him at the compound, they could get in touch directly.
"But unbeknownst to Hammer, he was being followed. A longtime #Mainer was determined to wipe the smirk off the neo-Nazi’s face. Indeed, he hoped to run Hammer out of the state for good."
Read more:
https://longreads.com/2024/10/31/how-concerned-citizens-drove-a-neo-nazi-out-of-rural-maine/
#USPol #Fascists #Nazis #ICE #FuckNazis #NoPlaceForHate #GlobalProjectAgainstHateAndExtremism -
Meanwhile, in #Maine...
How Concerned Citizens Drove a #NeoNazi Out of Rural Maine
#ChristopherPohlhaus wanted to build a #fascist training compound in America’s whitest state. His neighbors had other plans.by Mira Ptacin | The Atavist Magazine | October 31, 2024
"The first step in establishing a neo-Nazi compound is to clear and level the land. These sites tend to pop up in rural America, which means that there’s brush to hack down, tree stumps to pull up, and piles of debris to burn. All this work is done to make room for the barracks, kitchens, and meeting halls where modern-day devotees of Adolf Hitler will live, work, and train together.
"When Christopher Pohlhaus moved to the forested lot where, like other neo-Nazis on other forested lots before him, he planned to start a fascist revolution, he brought two RVs with him. That meant he had somewhere to bunk down at night. But he didn’t have running water. I can’t say how he bathed when he first arrived; as for other matters of hygiene, perhaps he used the woods.
"Pohlhaus’s parcel of 10.6 acres does not have an address. Technically, it’s in #SpringfieldMaine, a hamlet of fewer than 300 people. The closest city, about an hour’s drive away, is #BangorMaine. That’s where Pohlhaus, a gym rat, eventually joined Planet Fitness. To get home after a session of lifting, showering, and doing whatever else he needed to do, Pohlhaus would take Route 2 north, then turn eastward on Route 6. He would drive to Bottle Lake Road, take a right, and drive about two miles before taking another right on a gravel lane called Moores Road. Eventually, among scattered hunting camps, Trump banners, and 'Support the Blue' signs, he would come to a metal gate situated on a dirt road. Behind the gate sat the land of Pohlhaus’s dreams.
"Pohlhaus, 37, is a former U.S. marine, an itinerant tattoo artist, and a hardcore white-supremacist influencer. He is loud and hostile, and proud to be both. His voice is pitched surprisingly high, and he has a slight Southern drawl. He has a large body and small bald head; a blue-black tattoo crawls up the right side of his face, from his chin to his forehead. Over the years, Pohlhaus has collected thousands of social media followers, who know him by his nickname: #Hammer.
"Hammer had been living in Texas for a few years when, in March 2022, he bought the land in Maine. He told his followers that he was going to use it to build a haven, operational center, and training ground for white supremacists. He invited them to join him. Together, he said, they would plant the seed of a #WhiteEthnostate, and they would engage in violence, if necessary, to nurture it. 'An unarmed man sacrifices his family to the unpredictably [sic] of chaos,' Hammer wrote online in 2021.
"Hammer packed his bags and headed north, meeting with various white supremacists along the way. He solicited donations for his new compound in the form of cryptocurrency, and later set up a page on GiveSendGo, a Christian crowdfunding site. He raised close to $10,000 before the campaign was shut down earlier this year.
"Once he’d settled in Maine, Hammer kept his followers abreast of his progress breaking ground, frequently posting photos and uploading videos to Telegram. There was Hammer standing next to a pile of freshly chopped wood, snowshoeing through the forest, holding a beer in front of a bonfire. Followers saw him cradling an AK-47 in his arms. (Caption: 'All this Slavic war training in the Maine woods has me exhausted!') Hammer posted footage from a celebration he held with about eight of his followers, where he claimed they sacrificed a goat. Another clip showed Hammer helping a man in a balaclava slice the palm of his hand as part of an initiation ritual.
"Hammer appeared excited, optimistic. He was careful—or thought that he was careful—not to reveal his exact location, lest it attract unwanted attention from his enemies, including the media and the FBI. If people wanted to join him at the compound, they could get in touch directly.
"But unbeknownst to Hammer, he was being followed. A longtime #Mainer was determined to wipe the smirk off the neo-Nazi’s face. Indeed, he hoped to run Hammer out of the state for good."
Read more:
https://longreads.com/2024/10/31/how-concerned-citizens-drove-a-neo-nazi-out-of-rural-maine/
#USPol #Fascists #Nazis #ICE #FuckNazis #NoPlaceForHate #GlobalProjectAgainstHateAndExtremism -
Meanwhile, in #Maine...
How Concerned Citizens Drove a #NeoNazi Out of Rural Maine
#ChristopherPohlhaus wanted to build a #fascist training compound in America’s whitest state. His neighbors had other plans.by Mira Ptacin | The Atavist Magazine | October 31, 2024
"The first step in establishing a neo-Nazi compound is to clear and level the land. These sites tend to pop up in rural America, which means that there’s brush to hack down, tree stumps to pull up, and piles of debris to burn. All this work is done to make room for the barracks, kitchens, and meeting halls where modern-day devotees of Adolf Hitler will live, work, and train together.
"When Christopher Pohlhaus moved to the forested lot where, like other neo-Nazis on other forested lots before him, he planned to start a fascist revolution, he brought two RVs with him. That meant he had somewhere to bunk down at night. But he didn’t have running water. I can’t say how he bathed when he first arrived; as for other matters of hygiene, perhaps he used the woods.
"Pohlhaus’s parcel of 10.6 acres does not have an address. Technically, it’s in #SpringfieldMaine, a hamlet of fewer than 300 people. The closest city, about an hour’s drive away, is #BangorMaine. That’s where Pohlhaus, a gym rat, eventually joined Planet Fitness. To get home after a session of lifting, showering, and doing whatever else he needed to do, Pohlhaus would take Route 2 north, then turn eastward on Route 6. He would drive to Bottle Lake Road, take a right, and drive about two miles before taking another right on a gravel lane called Moores Road. Eventually, among scattered hunting camps, Trump banners, and 'Support the Blue' signs, he would come to a metal gate situated on a dirt road. Behind the gate sat the land of Pohlhaus’s dreams.
"Pohlhaus, 37, is a former U.S. marine, an itinerant tattoo artist, and a hardcore white-supremacist influencer. He is loud and hostile, and proud to be both. His voice is pitched surprisingly high, and he has a slight Southern drawl. He has a large body and small bald head; a blue-black tattoo crawls up the right side of his face, from his chin to his forehead. Over the years, Pohlhaus has collected thousands of social media followers, who know him by his nickname: #Hammer.
"Hammer had been living in Texas for a few years when, in March 2022, he bought the land in Maine. He told his followers that he was going to use it to build a haven, operational center, and training ground for white supremacists. He invited them to join him. Together, he said, they would plant the seed of a #WhiteEthnostate, and they would engage in violence, if necessary, to nurture it. 'An unarmed man sacrifices his family to the unpredictably [sic] of chaos,' Hammer wrote online in 2021.
"Hammer packed his bags and headed north, meeting with various white supremacists along the way. He solicited donations for his new compound in the form of cryptocurrency, and later set up a page on GiveSendGo, a Christian crowdfunding site. He raised close to $10,000 before the campaign was shut down earlier this year.
"Once he’d settled in Maine, Hammer kept his followers abreast of his progress breaking ground, frequently posting photos and uploading videos to Telegram. There was Hammer standing next to a pile of freshly chopped wood, snowshoeing through the forest, holding a beer in front of a bonfire. Followers saw him cradling an AK-47 in his arms. (Caption: 'All this Slavic war training in the Maine woods has me exhausted!') Hammer posted footage from a celebration he held with about eight of his followers, where he claimed they sacrificed a goat. Another clip showed Hammer helping a man in a balaclava slice the palm of his hand as part of an initiation ritual.
"Hammer appeared excited, optimistic. He was careful—or thought that he was careful—not to reveal his exact location, lest it attract unwanted attention from his enemies, including the media and the FBI. If people wanted to join him at the compound, they could get in touch directly.
"But unbeknownst to Hammer, he was being followed. A longtime #Mainer was determined to wipe the smirk off the neo-Nazi’s face. Indeed, he hoped to run Hammer out of the state for good."
Read more:
https://longreads.com/2024/10/31/how-concerned-citizens-drove-a-neo-nazi-out-of-rural-maine/
#USPol #Fascists #Nazis #ICE #FuckNazis #NoPlaceForHate #GlobalProjectAgainstHateAndExtremism -
Meanwhile, in #Maine...
How Concerned Citizens Drove a #NeoNazi Out of Rural Maine
#ChristopherPohlhaus wanted to build a #fascist training compound in America’s whitest state. His neighbors had other plans.by Mira Ptacin | The Atavist Magazine | October 31, 2024
"The first step in establishing a neo-Nazi compound is to clear and level the land. These sites tend to pop up in rural America, which means that there’s brush to hack down, tree stumps to pull up, and piles of debris to burn. All this work is done to make room for the barracks, kitchens, and meeting halls where modern-day devotees of Adolf Hitler will live, work, and train together.
"When Christopher Pohlhaus moved to the forested lot where, like other neo-Nazis on other forested lots before him, he planned to start a fascist revolution, he brought two RVs with him. That meant he had somewhere to bunk down at night. But he didn’t have running water. I can’t say how he bathed when he first arrived; as for other matters of hygiene, perhaps he used the woods.
"Pohlhaus’s parcel of 10.6 acres does not have an address. Technically, it’s in #SpringfieldMaine, a hamlet of fewer than 300 people. The closest city, about an hour’s drive away, is #BangorMaine. That’s where Pohlhaus, a gym rat, eventually joined Planet Fitness. To get home after a session of lifting, showering, and doing whatever else he needed to do, Pohlhaus would take Route 2 north, then turn eastward on Route 6. He would drive to Bottle Lake Road, take a right, and drive about two miles before taking another right on a gravel lane called Moores Road. Eventually, among scattered hunting camps, Trump banners, and 'Support the Blue' signs, he would come to a metal gate situated on a dirt road. Behind the gate sat the land of Pohlhaus’s dreams.
"Pohlhaus, 37, is a former U.S. marine, an itinerant tattoo artist, and a hardcore white-supremacist influencer. He is loud and hostile, and proud to be both. His voice is pitched surprisingly high, and he has a slight Southern drawl. He has a large body and small bald head; a blue-black tattoo crawls up the right side of his face, from his chin to his forehead. Over the years, Pohlhaus has collected thousands of social media followers, who know him by his nickname: #Hammer.
"Hammer had been living in Texas for a few years when, in March 2022, he bought the land in Maine. He told his followers that he was going to use it to build a haven, operational center, and training ground for white supremacists. He invited them to join him. Together, he said, they would plant the seed of a #WhiteEthnostate, and they would engage in violence, if necessary, to nurture it. 'An unarmed man sacrifices his family to the unpredictably [sic] of chaos,' Hammer wrote online in 2021.
"Hammer packed his bags and headed north, meeting with various white supremacists along the way. He solicited donations for his new compound in the form of cryptocurrency, and later set up a page on GiveSendGo, a Christian crowdfunding site. He raised close to $10,000 before the campaign was shut down earlier this year.
"Once he’d settled in Maine, Hammer kept his followers abreast of his progress breaking ground, frequently posting photos and uploading videos to Telegram. There was Hammer standing next to a pile of freshly chopped wood, snowshoeing through the forest, holding a beer in front of a bonfire. Followers saw him cradling an AK-47 in his arms. (Caption: 'All this Slavic war training in the Maine woods has me exhausted!') Hammer posted footage from a celebration he held with about eight of his followers, where he claimed they sacrificed a goat. Another clip showed Hammer helping a man in a balaclava slice the palm of his hand as part of an initiation ritual.
"Hammer appeared excited, optimistic. He was careful—or thought that he was careful—not to reveal his exact location, lest it attract unwanted attention from his enemies, including the media and the FBI. If people wanted to join him at the compound, they could get in touch directly.
"But unbeknownst to Hammer, he was being followed. A longtime #Mainer was determined to wipe the smirk off the neo-Nazi’s face. Indeed, he hoped to run Hammer out of the state for good."
Read more:
https://longreads.com/2024/10/31/how-concerned-citizens-drove-a-neo-nazi-out-of-rural-maine/
#USPol #Fascists #Nazis #ICE #FuckNazis #NoPlaceForHate #GlobalProjectAgainstHateAndExtremism -
Subnational tailoring of malaria strategies and interventions: bridging the gap between planning and implementation
The global malaria response is currently navigating a convergence of crises. Epidemiologically, the reduction in mortality has plateaued. Biologically, threats from Anopheles stephensi and partial artemisinin resistance are accelerating. Financially, the 2025 landscape is defined by a severe contraction in foreign assistance, necessitating a radical optimization of resources. In this context, the World Health Organization’s (WHO) new guidance, Subnational tailoring of malaria strategies and interventions (2025), offers a necessary technical framework.
However, the manual relies on an implementation architecture that remains fragile. To succeed, the technical rigor of subnational tailoring (SNT) should be coupled with an operational mechanism capable of mobilizing the workforce in the current context. This article examines how digital peer learning-to-action networks offer a potential mechanism to address the operational deficits of conventional technical assistance and capacity building.
Subnational tailoring of malaria strategies: moving from blanket coverage to allocative efficiency
The rationale for SNT rests on the recognition that transmission heterogeneity – driven by ecology, urbanization, and human behaviour – renders national averages insufficient for operational planning. The WHO guidance codifies a ten-step “Data-to-Action Loop,” designed to be embedded within the National Malaria Strategic Plan (NMSP) cycle. This process moves beyond simple risk mapping to a rigorous cycle of optimization:
- Granular stratification: This involves using composite metrics (combining prevalence, incidence, and mortality) to segment operational units, rather than relying on broad national averages.
- Tailoring and prioritization: This requires developing “ideal scenarios” (what is epidemiologically required) versus “prioritized scenarios” (what is financially feasible). For example, this might involve restricting expensive indoor residual spraying (IRS) to high-burden zones while deploying next-generation nets solely in areas of confirmed pyrethroid resistance.
- Resource optimization: This entails using cost-effectiveness analysis (CEA) to scientifically justify trade-offs, such as cutting lower-impact interventions to preserve life-saving commodities in the face of budget shocks.
The implementation gap: systemic blind spots in subnational tailoring of malaria strategies
While the WHO framework is technically robust, its execution faces systemic “blind spots” that threaten to undermine the strategy:
- The private sector void: In high-burden nations such as Nigeria, the private sector acts as the primary entry point for febrile patients yet remains largely absent from national surveillance data. Without integrating these providers, SNT models risk being built on incomplete datasets, leading to flawed stratification.
- The incentive crisis: The operational culture of many national malaria programmes (NMPs) relies on donor-funded per diems to motivate training and data review. As funding from major donors contracts, this transactional motivation model is fracturing, threatening workforce retention and data quality.
- Centralization of analysis: There is a risk that SNT becomes an extractive process where districts feed data upwards to central planners without retaining analytical ownership. This centralization disempowers the district health teams (DHMTs) expected to execute the tailored strategies.
Operationalizing the subnational tailoring of malaria strategies: the role of digital peer networks
To operationalize SNT in a resource-constrained environment, national malaria programmes require a low-cost mechanism to drive district-level ownership and data quality that goes beyond traditional cascade training. The Geneva Learning Foundation (TGLF) has developed a digital peer-learning model that warrants examination by technical specialists as a complement to standard capacity-building approaches.
- Shifting from incentives to intrinsic motivation: Traditional training workshops often rely on per diems to ensure attendance. In contrast, the TGLF model connects health workers in digital cohorts to share problem-solving strategies without extrinsic financial incentives. Empirical data from recent cohorts involving 1,715 health workers indicate that participants report high levels of practice application (rated 5.13 on a 6-point scale) based purely on professional recognition and peer accountability. This suggests that intrinsic motivation can be sustained digitally, a critical finding as external funding for operational costs diminishes.
- Validating granular data through ground-level intelligence: SNT models depend entirely on the quality of input data. Digital peer networks can serve as a listening mechanism to surface “tacit knowledge” from the frontline that quantitative surveillance misses. For instance, during recent Teach to Reach sessions, health workers provided over 400 narrative accounts of specific local barriers – such as cultural resistance to bed nets due to associations with burial shrouds – that would not appear in DHIS2 reports. This qualitative intelligence provides a necessary layer of validation for stratification maps.
- Devolving analytical capacity to the district: True SNT requires districts to function as data users, not merely data collectors. The peer-learning platform employs a structured “Impact Accelerator” methodology, which guides frontline staff to conduct their own root-cause analyses (for example, using the “Five Whys” technique) rather than receiving top-down instruction. In Nigeria, working with UNICEF and NPHCDA, The Geneva Learning Foundation supported 4,300 health workers to identify and resolve local bottlenecks in a matter of weeks, effectively decentralizing the “tailoring” process to the community level.
- Cost-efficiency and sustainability: Traditional face-to-face training and supervision are resource-intensive. Comparative data suggests the peer-learning model delivers capacity building at approximately 90% lower cost than traditional technical assistance methods. This is primarily by virtue of scalability: costs very little whether there are 10 or 1,000 participants. Furthermore, in a country-specific study, 82% of a cohort reported using TGLF’s peer learning model for their own needs, and 78% said they needed no further assistance from TGLF. More than half of participants stay in touch because they want to. This aligns with both the value for money and sustainability mandates of malaria partners.
We need more than technical precision to overcome operational inertia
The WHO’s Subnational tailoring of malaria strategies and interventions guidance provides the necessary technical standards, stratification algorithms, and modeling tools for the next phase of malaria control. However, technical precision alone cannot overcome operational inertia.
TGLF’s peer-learning model demonstrates that it is possible to shift from top-down instruction to lateral learning, and from extrinsic financial incentives to intrinsic professional motivation. For technical partners and epidemiologists, integrating these two approaches – rigorous technical stratification coupled with broad-based workforce mobilization – could provide an innovative path to sustaining gains in a fragile funding landscape.
Image: “Contours of Local Knowledge”, The Geneva Learning Foundation Collection © 2025. This installation stretches organic planes across a web of taut, intersecting lines, echoing how malaria responses must adapt to the distinct shapes of local realities. The tension between each form –sometimes pulling apart, sometimes holding together – mirrors the work of tailoring strategies to varied terrains, communities, and transmission patterns. By revealing strength in flexibility and coherence in diversity, the piece evokes a central truth of subnational action: health systems become most effective when they align with the textures of the places and people they serve.
References
- Goodman, C., Tougher, S., Shang, T.J., Visser, T., 2024. Improving malaria case management with artemisinin-based combination therapies and malaria rapid diagnostic tests in private medicine retail outlets in sub-Saharan Africa: A systematic review. PLoS ONE 19, e0286718. https://doi.org/10.1371/journal.pone.0286718
- Sadki, R., 2024. Ahead of Teach to Reach 11, health leaders from 45 countries share malaria experiences in REACH network session. https://doi.org/10.59350/vhky9-fvf32
- The Geneva Learning Foundation, 2024. World Malaria Day 2024: We need new ways to support health workers leading change with local communities. https://doi.org/10.59350/yrn1r-hpz62
- Thawer, S.G., Chacky, F., Runge, M. et al. Sub-national stratification of malaria risk in mainland Tanzania: a simplified assembly of survey and routine data. Malar J 19, 177 (2020). https://doi.org/10.1186/s12936-020-03250-4
- The Geneva Learning Foundation. Teach to Reach 11 – Malaria: Turning the tide. Listening and Learning report 19, 2025. The Geneva Learning Foundation, 2025. https://doi.org/10.5281/zenodo.15126588.
- Venkatesan, P., 2025. WHO world malaria report 2024. The Lancet Microbe 6, 101073. https://doi.org/10.1016/j.lanmic.2025.101073
- World Health Organization. Guiding principles for prioritizing malaria interventions in resource-constrained country contexts to achieve maximum impact. Geneva: World Health Organization; 2024. https://www.who.int/publications/i/item/B09044
- World Health Organization. Subnational tailoring of malaria strategies and interventions: reference manual. Geneva: World Health Organization; 2025. https://www.who.int/publications/i/item/9789240115712
- World Health Organization. World Malaria Report 2024. Geneva: World Health Organization; 2024.
#globalHealth #guideline #implementationGap #learningStrategy2 #malaria #peerLearning #snt #theGenevaLearningFoundation #worldHealthOrganization
-
Subnational tailoring of malaria strategies and interventions: bridging the gap between planning and implementation
The global malaria response is currently navigating a convergence of crises. Epidemiologically, the reduction in mortality has plateaued. Biologically, threats from Anopheles stephensi and partial artemisinin resistance are accelerating. Financially, the 2025 landscape is defined by a severe contraction in foreign assistance, necessitating a radical optimization of resources. In this context, the World Health Organization’s (WHO) new guidance, Subnational tailoring of malaria strategies and interventions (2025), offers a necessary technical framework.
However, the manual relies on an implementation architecture that remains fragile. To succeed, the technical rigor of subnational tailoring (SNT) should be coupled with an operational mechanism capable of mobilizing the workforce in the current context. This article examines how digital peer learning-to-action networks offer a potential mechanism to address the operational deficits of conventional technical assistance and capacity building.
Subnational tailoring of malaria strategies: moving from blanket coverage to allocative efficiency
The rationale for SNT rests on the recognition that transmission heterogeneity – driven by ecology, urbanization, and human behaviour – renders national averages insufficient for operational planning. The WHO guidance codifies a ten-step “Data-to-Action Loop,” designed to be embedded within the National Malaria Strategic Plan (NMSP) cycle. This process moves beyond simple risk mapping to a rigorous cycle of optimization:
- Granular stratification: This involves using composite metrics (combining prevalence, incidence, and mortality) to segment operational units, rather than relying on broad national averages.
- Tailoring and prioritization: This requires developing “ideal scenarios” (what is epidemiologically required) versus “prioritized scenarios” (what is financially feasible). For example, this might involve restricting expensive indoor residual spraying (IRS) to high-burden zones while deploying next-generation nets solely in areas of confirmed pyrethroid resistance.
- Resource optimization: This entails using cost-effectiveness analysis (CEA) to scientifically justify trade-offs, such as cutting lower-impact interventions to preserve life-saving commodities in the face of budget shocks.
The implementation gap: systemic blind spots in subnational tailoring of malaria strategies
While the WHO framework is technically robust, its execution faces systemic “blind spots” that threaten to undermine the strategy:
- The private sector void: In high-burden nations such as Nigeria, the private sector acts as the primary entry point for febrile patients yet remains largely absent from national surveillance data. Without integrating these providers, SNT models risk being built on incomplete datasets, leading to flawed stratification.
- The incentive crisis: The operational culture of many national malaria programmes (NMPs) relies on donor-funded per diems to motivate training and data review. As funding from major donors contracts, this transactional motivation model is fracturing, threatening workforce retention and data quality.
- Centralization of analysis: There is a risk that SNT becomes an extractive process where districts feed data upwards to central planners without retaining analytical ownership. This centralization disempowers the district health teams (DHMTs) expected to execute the tailored strategies.
Operationalizing the subnational tailoring of malaria strategies: the role of digital peer networks
To operationalize SNT in a resource-constrained environment, national malaria programmes require a low-cost mechanism to drive district-level ownership and data quality that goes beyond traditional cascade training. The Geneva Learning Foundation (TGLF) has developed a digital peer-learning model that warrants examination by technical specialists as a complement to standard capacity-building approaches.
- Shifting from incentives to intrinsic motivation: Traditional training workshops often rely on per diems to ensure attendance. In contrast, the TGLF model connects health workers in digital cohorts to share problem-solving strategies without extrinsic financial incentives. Empirical data from recent cohorts involving 1,715 health workers indicate that participants report high levels of practice application (rated 5.13 on a 6-point scale) based purely on professional recognition and peer accountability. This suggests that intrinsic motivation can be sustained digitally, a critical finding as external funding for operational costs diminishes.
- Validating granular data through ground-level intelligence: SNT models depend entirely on the quality of input data. Digital peer networks can serve as a listening mechanism to surface “tacit knowledge” from the frontline that quantitative surveillance misses. For instance, during recent Teach to Reach sessions, health workers provided over 400 narrative accounts of specific local barriers – such as cultural resistance to bed nets due to associations with burial shrouds – that would not appear in DHIS2 reports. This qualitative intelligence provides a necessary layer of validation for stratification maps.
- Devolving analytical capacity to the district: True SNT requires districts to function as data users, not merely data collectors. The peer-learning platform employs a structured “Impact Accelerator” methodology, which guides frontline staff to conduct their own root-cause analyses (for example, using the “Five Whys” technique) rather than receiving top-down instruction. In Nigeria, working with UNICEF and NPHCDA, The Geneva Learning Foundation supported 4,300 health workers to identify and resolve local bottlenecks in a matter of weeks, effectively decentralizing the “tailoring” process to the community level.
- Cost-efficiency and sustainability: Traditional face-to-face training and supervision are resource-intensive. Comparative data suggests the peer-learning model delivers capacity building at approximately 90% lower cost than traditional technical assistance methods. This is primarily by virtue of scalability: costs very little whether there are 10 or 1,000 participants. Furthermore, in a country-specific study, 82% of a cohort reported using TGLF’s peer learning model for their own needs, and 78% said they needed no further assistance from TGLF. More than half of participants stay in touch because they want to. This aligns with both the value for money and sustainability mandates of malaria partners.
We need more than technical precision to overcome operational inertia
The WHO’s Subnational tailoring of malaria strategies and interventions guidance provides the necessary technical standards, stratification algorithms, and modeling tools for the next phase of malaria control. However, technical precision alone cannot overcome operational inertia.
TGLF’s peer-learning model demonstrates that it is possible to shift from top-down instruction to lateral learning, and from extrinsic financial incentives to intrinsic professional motivation. For technical partners and epidemiologists, integrating these two approaches – rigorous technical stratification coupled with broad-based workforce mobilization – could provide an innovative path to sustaining gains in a fragile funding landscape.
Image: “Contours of Local Knowledge”, The Geneva Learning Foundation Collection © 2025. This installation stretches organic planes across a web of taut, intersecting lines, echoing how malaria responses must adapt to the distinct shapes of local realities. The tension between each form –sometimes pulling apart, sometimes holding together – mirrors the work of tailoring strategies to varied terrains, communities, and transmission patterns. By revealing strength in flexibility and coherence in diversity, the piece evokes a central truth of subnational action: health systems become most effective when they align with the textures of the places and people they serve.
References
- Goodman, C., Tougher, S., Shang, T.J., Visser, T., 2024. Improving malaria case management with artemisinin-based combination therapies and malaria rapid diagnostic tests in private medicine retail outlets in sub-Saharan Africa: A systematic review. PLoS ONE 19, e0286718. https://doi.org/10.1371/journal.pone.0286718
- Sadki, R., 2024. Ahead of Teach to Reach 11, health leaders from 45 countries share malaria experiences in REACH network session. https://doi.org/10.59350/vhky9-fvf32
- The Geneva Learning Foundation, 2024. World Malaria Day 2024: We need new ways to support health workers leading change with local communities. https://doi.org/10.59350/yrn1r-hpz62
- Thawer, S.G., Chacky, F., Runge, M. et al. Sub-national stratification of malaria risk in mainland Tanzania: a simplified assembly of survey and routine data. Malar J 19, 177 (2020). https://doi.org/10.1186/s12936-020-03250-4
- The Geneva Learning Foundation. Teach to Reach 11 – Malaria: Turning the tide. Listening and Learning report 19, 2025. The Geneva Learning Foundation, 2025. https://doi.org/10.5281/zenodo.15126588.
- Venkatesan, P., 2025. WHO world malaria report 2024. The Lancet Microbe 6, 101073. https://doi.org/10.1016/j.lanmic.2025.101073
- World Health Organization. Guiding principles for prioritizing malaria interventions in resource-constrained country contexts to achieve maximum impact. Geneva: World Health Organization; 2024. https://www.who.int/publications/i/item/B09044
- World Health Organization. Subnational tailoring of malaria strategies and interventions: reference manual. Geneva: World Health Organization; 2025. https://www.who.int/publications/i/item/9789240115712
- World Health Organization. World Malaria Report 2024. Geneva: World Health Organization; 2024.
#globalHealth #guideline #implementationGap #learningStrategy2 #malaria #peerLearning #snt #theGenevaLearningFoundation #worldHealthOrganization
-
In late 2022, I blogged about the work needed to develop a specification for end-to-end encryption for the fediverse. I sketched out some of the key management components on GitHub, and then the public work abruptly stalled.
A few of you have wondered what’s the deal with that.
This post covers why this effort stalled, what I’m proposing we do next.
What’s The Hold Up?
The “easy” (relatively speaking) parts of the problem are as follows:
- Secret key management. (This is sketched out already, and provides multiple mechanisms for managing secret key material. Yay!)
- Bulk encryption of messages and media. (I’ve done a lot of work in this space over the years, so it’s an area I’m deeply familiar with. When we get to this part, it will be almost trivial. I’m not worried about it at all.)
- Forward-secure ratcheting / authenticated key exchange / group key agreement. (RFC 9420 is a great starting point.)
That is to say, managing secret keys, using secret keys, and deriving shared secret keys are all in the “easy” bucket.
The hard part? Public key management.
CMYKat made thisWhy is Public Key Management Hard?
In a centralized service (think: BlueSky, Twitter, Facebook, etc.), this is actually much easier to build: Shove your public keys into a database, and design your client-side software to trust whatever public key your server gives them. Bob’s your uncle, pack it up and go home.
Unfortunately, it’s kind of stupid to build anything that way.
If you explicitly trust the server, the server could provide the wrong public key (i.e., one for which the server knows the corresponding secret key) and you’ll be none the wiser. This makes it trivial for the server to intercept and read your messages.
If your users are trusting you regardless, they’re probably just as happy if you don’t encrypt at the endpoint at all (beyond using TLS, but transport encryption is table stakes for any online service so nevermind that).
But let’s say you wanted to encrypt between peers anyway, because you’re feeling generous (or don’t want to field a bunch of questionably legal demands for user data by law enforcement; a.k.a. the Snapchat threat model).
You could improve endpoint trust by shoving all of your users’ public keys into an append-only data structure; i.e. key transparency, like WhatsApp proposed in 2023:
https://www.youtube.com/watch?v=_N4Q05z5vPE
And, to be perfectly clear, key transparency is a damn good idea.
Key transparency keeps everyone honest and makes it difficult for criminals to secretly replace a victim’s public key, because the act of doing so is unavoidably published to an append-only log.
The primary challenge is scaling a transparency feature to serve a public, federated system.
AJFederated Key Transparency?
Despite appearances, I haven’t been sitting on my thumbs for the past year or so. I’ve been talking with cryptography experts about their projects and papers in the same space.
Truthfully, I had been hoping to piggyback off one of those upcoming projects (which is focused more on public key discovery for SAML- and OAuth-like protocols) to build the Federated PKI piece for E2EE for the Fediverse.
Unfortunately, that project keeps getting delayed and pushed back, and I’ve just about run out of patience for it.
Additionally, there are some engineering challenges that I would need to tackle to build atop it, so it’s not as simple as “let’s just use that protocol”, either.
So let’s do something else instead:
Art: ScruffKerfluffFediverse Public Key Directories
Orthogonal to the overall Fediverse E2EE specification project, let’s build a Public Key Directory for the Fediverse.
This will not only be useful for building a coherent specification for E2EE (as it provides the “Federated PKI” component we’d need to build it securely), but it would also be extremely useful for software developers the whole world over.
Imagine this:
- If you want to fetch a user’s SSH public key, you can just query for their username and get a list of non-expired, non-revoked public keys to choose from.
- If you wanted public key pinning and key rotation for OAuth2 and/or OpenID Connect identity providers without having to update configurations or re-deploy any applications, you can do that.
- If you want to encrypt a message to a complete stranger, such that only they can decrypt it, without any sort of interaction (i.e., they could be offline for a holiday and still decrypt it when they get back), you could do that.
Oh, and best of all? You can get all these wins without propping up any cryptocurrency bullshit either.
From simple abstractions, great power may bloom.
Mark Miller
How Will This Work?
We need to design a specific kind of server that speaks a limited set of the ActivityPub protocol.
I say “limited” because it will only not support editing or deleting messages provided by another instance. It will only append data.
To understand the full picture, let’s first look at the message types, public key types, and how the message types will be interpreted.
Message Types
Under the ActivityPub layer, we will need to specify a distinct set of Directory Message Types. An opening offer would look like this:
AddKey— contains an Asymmetric Public Key, a number mapped to the user, and instance that hosts it, and some other metadata (i.e., time)RevokeKey— marks an existing public key as revokedMoveIdentity— moves all of the public keys from identity A to identity B. This can be used for username changes or instance migrations.
We may choose to allow more message types at the front-end if need be, but that’s enough for our purposes.
EDIT: Username Obfuscation
As Lunawawa points out about my first draft of this blog post:
that’s enough data to count as PII under GDPR, you’d need to handle the right to be forgotten somehow
We could use the Actor
@idfor this instead.Alternatively, we can make it mandatory that each instance will map usernames to a random 256-bit integer, which is what will be stored in the append-only ledger.
Then, if someone wants to invoke their right to be forgotten, they can just have the instance delete the mapping between User ID and actual username, and we don’t need to break the transparency log’s history.
This is kind of annoying, but so is everything else in government, so it’s to be expected.
Public Key Types
We are not interested in backwards compatibility with every existing cryptosystem. We will only tolerate a limited set of public key types.
At the outset, only Ed25519 will be supported.
In the future, we will include post-quantum digital signature algorithms on this list, but not before the current designs have had time to mature.
RSA will never be included in the set.
ECDSA over NIST P-384 may be included at some point, if there’s sufficient interest in supporting e.g., US government users.
If ECDSA is ever allowed, RFC 6979 is mandatory.
Message Processing
When an instance sends a message to a Directory Server, it will need to contain a specific marker for our protocol. Otherwise, it will be rejected.
Each message will have its own processing rules.
After the processing rules are applied, the message will be stored in the Directory Server, and a hash of the message will be published to a SigSum transparency ledger. The Merkle root and inclusion proofs will be stored in an associated record, attached to the record for the new message.
Every message will have its hash published in SigSum. No exceptions.
We will also need a mechanism for witness co-signatures to be published and attached to the record.
AddKey
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "action": "AddKey", "message": { "time": "2024-12-31T23:59:59Z", "identity": "<foo-id>@mastodon.example.com", "public-key": "ed25519:<key goes here>" }, "signature": "SignatureOfMessage"}The first
AddKeyfor any given identity will need to be self-signed by the key being added (in addition to ActivityPub messages being signed by the instance).After an identity exists in the directory, every subsequent public key MUST be signed by a non-revoked keypair.
RevokeKey
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "action": "RevokeKey", "message": { "time": "2024-12-31T23:59:59Z", "identity": "<foo-id>@mastodon.example.com", "public-key": "ed25519:<key goes here>" }, "signature": "SignatureOfMessage"}This marks the public key as untrusted, and effectively “deletes” it from the list that users will fetch.
Important: RevokeKey will fail unless there is at least one more trusted public key for this user. Otherwise, a denial of service would be possible.
Replaying an AddKey for a previously-revoked key MUST fail.
MoveIdentity
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "action": "MoveIdentity", "message": { "time": "2024-12-31T23:59:59Z", "old-identity": "<foo-id>@mastodon.example.com", "new-identity": "<bar-id>@akko.example.net" }, "signature": "SignatureOfMessage"}This exists to facilitate migrations and username changes.
Fetching Public Keys
A simple JSON API (and/or an ActivityStream; haven’t decided) will be exposed to query for the currently trusted public keys for a given identity.
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "public-keys": [ { "data": { "time": "2024-12-31T23:59:59Z", "identity": "[email protected]", "public-key": "ed25519:<key goes here>" }, "signature": "SignatureOfData", "sigsum": { /* ... */ }, }, { "data": { /* ... */ }, /* ... */ }, /* ... */ ]}Simple and easy.
CMYKatGossip Between Instances
Directory Servers should be configurable to mirror records from other instances.
Additionally, they should be configurable to serve as Witnesses for the SigSum protocol.
The communication layer here between Directory Servers will also be ActivityPub.
Preventing Abuse
The capability of learning a user’s public key doesn’t imply the ability to send messages or bypass their block list.
Additionally, Fediverse account usernames are (to my knowledge) generally not private, so I don’t anticipate there being any danger in publishing public keys to an append-only ledger.
That said, I am totally open to considering use cases where the actual identity is obfuscated (e.g., HMAC with a static key known only to the instance that hosts them instead of raw usernames).
Nevermind! Apparently GDPR will make it really annoying to not do this.
So we’re going to do it, unavoidably, for everyone, always, just so we don’t have to deal with lawyers.
How Will This Be Used for E2EE Direct Messaging?
I anticipate that a small pool of Directory Servers will be necessary, due to only public keys and identities being stored.
Additional changes beyond just the existence of Directory Servers will need to be made to facilitate private messaging. Some of those changes include:
- Some endpoint for users to know which Directory Servers a given ActivityPub instance federates with (if any).
- Some mechanism for users to asynchronously exchange Signed Pre-Key bundles for initiating contact. (One for users to publish new bundles, another for users to retrieve a bundle.)
- These will be Ed25519-signed payloads containing an ephemeral X25519 public key.
This is all outside the scope of the proposal I’m sketching out here today, but it’s worth knowing that I’m aware of the implementation complexity.
The important thing is: I ([email protected]) should be able to query pawb.fun, find the Directory Server(s) they federate with, and then query that Directory server for
[email protected]and get his currently trusted Ed25519 public keys.From there, I can query pawb.fun for a SignedPreKey bundle, which will have been signed by one of those public keys.
And then we can return to the “easy” pile.
MarleyTanukiDevelopment Plan
Okay, so that was a lot of detail, and yet not enough detail, depending on who’s reading this blog post.
What I wrote here today is a very rough sketch. The devil is always in the details, especially with cryptography.
Goals and Non-Goals
We want Fediverse users to be able to publish a public key that is bound to their identity, which anyone else on the Internet can fetch and then use for various purposes.
We want to leverage the existing work into key transparency by the cryptography community.
We don’t want to focus on algorithm agility or protocol compatibility.
We don’t want to involve any government offices in the process. We don’t care about “real” identities, nor about codifying falsehoods about names.
We don’t want any X.509 or Web-of-Trust machinery involved in the process.
Tasks
The first thing we would need to do is write a formal specification for a Directory Server (whose job is only to vend Public Keys in an auditable, transparent manner).
Next, we need to actually build a reference implementation of this server, test it thoroughly, and then have security experts pound at the implementation for a while. Any security issues that can be mitigated by design will require a specification update.
We will NOT punt these down to implementors to be responsible for, unless we cannot avoid doing so.
Once these steps are done, we can start rolling the Directory Servers out. At this point, we can develop client-side libraries in various programming languages to make it easy for developers to adopt.
My continued work on the E2EE specification for the Fediverse can begin after we have an implementation of the Directory Server component ready to go.
Timeline
I have a very demanding couple of months ahead of me, professionally, so I don’t yet know when I can commit to starting the Fediverse Directory Server specification work.
Strictly speaking, it’s vaguely possible to get buy-in from work to focus on this project as part of my day-to-day responsibilities, since it has immediate and lasting value to the Internet.
However, I don’t want to propose it because that would be crossing the professional-personal streams in a way I’m not really comfortable with.
The last thing I need is angry Internet trolls harassing my coworkers to try to get under my fur, y’know?
If there is enough interest from the broader Fediverse community, I’m also happy to delegate this work to anyone interested.
Once the work can begin, I don’t anticipate it will take more than a week for me to write a specification that other crypto nerds will take seriously.
I am confident in this because most of the cryptography will be constrained to hash functions, preventing canonicalization and cross-protocol attacks, and signatures.
Y’know, the sort of thing I write about on my furry blog for fun!
Building a reference implementation will likely take a bit longer; if, for no other reason, than I believe it would be best to write it in Go (which has the strongest SigSum support, as of this writing).
This is a lot of words to say, as far as timelines go:
CMYKatHow to Get Involved
Regardless of whether my overall E2EE proposal gets adopted, the Directory Server component is something that should be universally useful to the Fediverse and to software developers around the world.
If you are interested in participating in any technical capacity, I have just created a Signal Group for discussing and coordinating efforts.
Can I Contribute Non-Technically?
Yes, absolutely. In the immediate future, once it kicks off, the work is going to be technology-oriented.
However, we may need people with non-technical skills at some point, so feel free to dive in whenever you feel comfortable.
What About Financially?
If you really have money burning a hole in your pocket and want to toss a coin my way, I do have a Ko-Fi. Do not feel pressured at all to do so, however.
Because I only use Ko-Fi as a tip jar, rather than as a business, I’m not specifically tracking which transaction is tied to which project, so I can’t make any specific promises about how any of the money sent my way will be allocated.
What I will promise, however, is that any icons/logos/etc. created for this work will be done by an artist and they will be adequately compensated for their work. I will not use large-scale computing (a.k.a., “Generative AI”) for anything.
Closing Thoughts
What I’ve sketched here is much simpler (and more ActivityPub-centric) than the collaboration I was originally planning.
Thanks for being patient while I tried, in vain, to make that work.
As of today, I no longer think we need to wait for them. We can build this ourselves, for each other.
https://soatok.blog/2024/06/06/towards-federated-key-transparency/
#cryptography #endToEndEncryption #fediverse #KeyTransparency #Mastodon #MerkleTrees #PublicKeys
-
In late 2022, I blogged about the work needed to develop a specification for end-to-end encryption for the fediverse. I sketched out some of the key management components on GitHub, and then the public work abruptly stalled.
A few of you have wondered what’s the deal with that.
This post covers why this effort stalled, what I’m proposing we do next.
What’s The Hold Up?
The “easy” (relatively speaking) parts of the problem are as follows:
- Secret key management. (This is sketched out already, and provides multiple mechanisms for managing secret key material. Yay!)
- Bulk encryption of messages and media. (I’ve done a lot of work in this space over the years, so it’s an area I’m deeply familiar with. When we get to this part, it will be almost trivial. I’m not worried about it at all.)
- Forward-secure ratcheting / authenticated key exchange / group key agreement. (RFC 9420 is a great starting point.)
That is to say, managing secret keys, using secret keys, and deriving shared secret keys are all in the “easy” bucket.
The hard part? Public key management.
CMYKat made thisWhy is Public Key Management Hard?
In a centralized service (think: Twitter, Facebook, etc.), this is actually much easier to build: Shove your public keys into a database, and design your client-side software to trust whatever public key your server gives them. Bob’s your uncle, pack it up and go home.
Unfortunately, it’s kind of stupid to build anything that way.
If you explicitly trust the server, the server could provide the wrong public key (i.e., one for which the server knows the corresponding secret key) and you’ll be none the wiser. This makes it trivial for the server to intercept and read your messages.
If your users are trusting you regardless, they’re probably just as happy if you don’t encrypt at the endpoint at all (beyond using TLS, but transport encryption is table stakes for any online service so nevermind that).
But let’s say you wanted to encrypt between peers anyway, because you’re feeling generous (or don’t want to field a bunch of questionably legal demands for user data by law enforcement; a.k.a. the Snapchat threat model).
You could improve endpoint trust by shoving all of your users’ public keys into an append-only data structure; i.e. key transparency, like WhatsApp proposed in 2023:
https://www.youtube.com/watch?v=_N4Q05z5vPE
And, to be perfectly clear, key transparency is a damn good idea.
Key transparency keeps everyone honest and makes it difficult for criminals to secretly replace a victim’s public key, because the act of doing so is unavoidably published to an append-only log.
The primary challenge is scaling a transparency feature to serve a public, federated system.
AJFederated Key Transparency?
Despite appearances, I haven’t been sitting on my thumbs for the past year or so. I’ve been talking with cryptography experts about their projects and papers in the same space.
Truthfully, I had been hoping to piggyback off one of those upcoming projects (which is focused more on public key discovery for SAML- and OAuth-like protocols) to build the Federated PKI piece for E2EE for the Fediverse.
Unfortunately, that project keeps getting delayed and pushed back, and I’ve just about run out of patience for it.
Additionally, there are some engineering challenges that I would need to tackle to build atop it, so it’s not as simple as “let’s just use that protocol”, either.
So let’s do something else instead:
Art: ScruffKerfluffFediverse Public Key Directories
Orthogonal to the overall Fediverse E2EE specification project, let’s build a Public Key Directory for the Fediverse.
This will not only be useful for building a coherent specification for E2EE (as it provides the “Federated PKI” component we’d need to build it securely), but it would also be extremely useful for software developers the whole world over.
Imagine this:
- If you want to fetch a user’s SSH public key, you can just query for their username and get a list of non-expired, non-revoked public keys to choose from.
- If you wanted public key pinning and key rotation for OAuth2 and/or OpenID Connect identity providers without having to update configurations or re-deploy any applications, you can do that.
- If you want to encrypt a message to a complete stranger, such that only they can decrypt it, without any sort of interaction (i.e., they could be offline for a holiday and still decrypt it when they get back), you could do that.
Oh, and best of all? You can get all these wins without propping up any cryptocurrency bullshit either.
From simple abstractions, great power may bloom.
Mark Miller
How Will This Work?
We need to design a specific kind of server that speaks a limited set of the ActivityPub protocol.
I say “limited” because it will only not support editing or deleting messages provided by another instance. It will only append data.
To understand the full picture, let’s first look at the message types, public key types, and how the message types will be interpreted.
Message Types
Under the ActivityPub layer, we will need to specify a distinct set of Directory Message Types. An opening offer would look like this:
AddKey— contains an Asymmetric Public Key, a number mapped to the user, and instance that hosts it, and some other metadata (i.e., time)RevokeKey— marks an existing public key as revokedMoveIdentity— moves all of the public keys from identity A to identity B. This can be used for username changes or instance migrations.
We may choose to allow more message types at the front-end if need be, but that’s enough for our purposes.
Public Key Types
We are not interested in backwards compatibility with every existing cryptosystem. We will only tolerate a limited set of public key types.
At the outset, only Ed25519 will be supported.
In the future, we will include post-quantum digital signature algorithms on this list, but not before the current designs have had time to mature.
RSA will never be included in the set.
ECDSA over NIST P-384 may be included at some point, if there’s sufficient interest in supporting e.g., US government users.
If ECDSA is ever allowed, RFC 6979 is mandatory.
Message Processing
When an instance sends a message to a Directory Server, it will need to contain a specific marker for our protocol. Otherwise, it will be rejected.
Each message will have its own processing rules.
After the processing rules are applied, the message will be stored in the Directory Server, and a hash of the message will be published to a SigSum transparency ledger. The Merkle root and inclusion proofs will be stored in an associated record, attached to the record for the new message.
Every message will have its hash published in SigSum. No exceptions.
We will also need a mechanism for witness co-signatures to be published and attached to the record.
Additionally, all messages defined here are generated by the users, client-side. Servers are not trusted, generally, as part of the overall E2EE threat model.
AddKey
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "action": "AddKey", "message": { "time": "2024-12-31T23:59:59Z", "identity": "[email protected]", "public-key": "ed25519:<key goes here>" }, "signature": "SignatureOfMessage"}The first
AddKeyfor any given identity will need to be self-signed by the key being added (in addition to ActivityPub messages being signed by the instance).After an identity exists in the directory, every subsequent public key MUST be signed by a non-revoked keypair.
RevokeKey
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "action": "RevokeKey", "message": { "time": "2024-12-31T23:59:59Z", "identity": "[email protected]", "public-key": "ed25519:<key goes here>" }, "signature": "SignatureOfMessage"}This marks the public key as untrusted, and effectively “deletes” it from the list that users will fetch.
Important: RevokeKey will fail unless there is at least one more trusted public key for this user. Otherwise, a denial of service would be possible.
Replaying an AddKey for a previously-revoked key MUST fail.
MoveIdentity
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "action": "MoveIdentity", "message": { "time": "2024-12-31T23:59:59Z", "old-identity": "[email protected]", "new-identity": "[email protected]" }, "signature": "SignatureOfMessage"}This exists to facilitate migrations and username changes.
Other Message Types
The above list is not exhaustive. We may need other message types depending on the exact feature set needed by the final specification.
Fetching Public Keys
A simple JSON API (and/or an ActivityStream; haven’t decided) will be exposed to query for the currently trusted public keys for a given identity.
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "public-keys": [ { "data": { "time": "2024-12-31T23:59:59Z", "identity": "[email protected]", "public-key": "ed25519:<key goes here>" }, "signature": "SignatureOfData", "sigsum": { /* ... */ }, }, { "data": { /* ... */ }, /* ... */ }, /* ... */ ]}Simple and easy.
CMYKatGossip Between Instances
Directory Servers should be configurable to mirror records from other instances.
Additionally, they should be configurable to serve as Witnesses for the SigSum protocol.
The communication layer here between Directory Servers will also be ActivityPub.
Preventing Abuse
The capability of learning a user’s public key doesn’t imply the ability to send messages or bypass their block list.
Additionally, Fediverse account usernames are (to my knowledge) generally not private, so I don’t anticipate there being any danger in publishing public keys to an append-only ledger.
That said, I am totally open to considering use cases where the actual identity is obfuscated (e.g., HMAC with a static key known only to the instance that hosts them instead of raw usernames).
What About GDPR / Right To Be Forgotten?
Others have previously suggested that usernames might be subject to the “right to be forgotten”, which would require breaking history for an append-only ledger.
After discussing a proposed workaround with a few people in the Signal group for this project, we realized complying necessarily introduced security issues by giving instance admins the capability of selectively remapping the user ID to different audiences, and detecting/mitigating this remapping is annoying.
However, we don’t need to do that in the first place.
According to this webpage about GDPR’s Right to be Forgotten:
However, an organization’s right to process someone’s data might override their right to be forgotten. Here are the reasons cited in the GDPR that trump the right to erasure:
- (…)
- The data is being used to perform a task that is being carried out in the public interest or when exercising an organization’s official authority.
- (…)
- The data represents important information that serves the public interest, scientific research, historical research, or statistical purposes and where erasure of the data would likely to impair or halt progress towards the achievement that was the goal of the processing.
Enabling private communication is in the public interest. The only information that will be stored in the ledger in relation to the username are cryptographic public keys, so it’s not like anything personal (e.g., email addresses or legal names) will be included.
However, we still need to be extremely up-front about this to ensure EU citizens are aware of the trade-off we’re making.
Account Recovery
In the event that a user loses access to all of their secret keys and wants to burn down the old account, they may want a way to start over with another fresh self-signed
AddKey.However, the existing policies I wrote above would make this challenging:
- Since every subsequent
AddKeymust be signed by an incumbent key, if you don’t have access to these secret keys, you’re locked out. - Since
RevokeKeyrequires one trusted keypair remains in the set, for normal operations, you can’t just burn the set down to zero even while you still had access to the secret keys.
There is an easy way out of this mess: Create a new verb; e.g.
BurnDownthat an instance can issue that resets all signing keys for a given identity.The use of
BurnDownshould be a rare, exceptional event that makes a lot of noise:- All existing E2EE sessions must break, loudly.
- All other participants must be alerted to the change, through the client software.
- Witnesses and watchdog nodes must take note of this change.
This comes with some trade-offs. Namely: Any account recovery mechanism is a backdoor, and giving the instance operators the capability of issuing
BurnDownmessages is a risk to their users.Therefore, users who trust their own security posture and wish to opt out of this recovery feature should also be able to issue a
Fireproofmessage at any point in the process, which permanent and irrevocably prevents anyBurnDownfrom being accepted on their current instance.If users opt out of recovery and then lose their signing keys, they’re locked out and need to start over with a new Fediverse identity. On the flipside, their instance operator cannot successfully issue a BurnDown for them, so they have to trust them less.
Notice
This is just a rough sketch of my initial ideas, going into this project. It is not comprehensive, nor complete.
There are probably big gaps that need to be filled in, esp. on the ActivityPub side of things. (I’m not as worried about the cryptography side of things.)
How Will This Be Used for E2EE Direct Messaging?
I anticipate that a small pool of Directory Servers will be necessary, due to only public keys and identities being stored.
Additional changes beyond just the existence of Directory Servers will need to be made to facilitate private messaging. Some of those changes include:
- Some endpoint for users to know which Directory Servers a given ActivityPub instance federates with (if any).
- Some mechanism for users to asynchronously exchange Signed Pre-Key bundles for initiating contact. (One for users to publish new bundles, another for users to retrieve a bundle.)
- These will be Ed25519-signed payloads containing an ephemeral X25519 public key.
This is all outside the scope of the proposal I’m sketching out here today, but it’s worth knowing that I’m aware of the implementation complexity.
The important thing is: I ([email protected]) should be able to query pawb.fun, find the Directory Server(s) they federate with, and then query that Directory server for
[email protected]and get his currently trusted Ed25519 public keys.From there, I can query pawb.fun for a SignedPreKey bundle, which will have been signed by one of those public keys.
And then we can return to the “easy” pile.
MarleyTanukiDevelopment Plan
Okay, so that was a lot of detail, and yet not enough detail, depending on who’s reading this blog post.
What I wrote here today is a very rough sketch. The devil is always in the details, especially with cryptography.
Goals and Non-Goals
We want Fediverse users to be able to publish a public key that is bound to their identity, which anyone else on the Internet can fetch and then use for various purposes.
We want to leverage the existing work into key transparency by the cryptography community.
We don’t want to focus on algorithm agility or protocol compatibility.
We don’t want to involve any government offices in the process. We don’t care about “real” identities, nor about codifying falsehoods about names.
We don’t want any X.509 or Web-of-Trust machinery involved in the process.
Tasks
The first thing we would need to do is write a formal specification for a Directory Server (whose job is only to vend Public Keys in an auditable, transparent manner).
Next, we need to actually build a reference implementation of this server, test it thoroughly, and then have security experts pound at the implementation for a while. Any security issues that can be mitigated by design will require a specification update.
We will NOT punt these down to implementors to be responsible for, unless we cannot avoid doing so.
Once these steps are done, we can start rolling the Directory Servers out. At this point, we can develop client-side libraries in various programming languages to make it easy for developers to adopt.
My continued work on the E2EE specification for the Fediverse can begin after we have an implementation of the Directory Server component ready to go.
Timeline
I have a very demanding couple of months ahead of me, professionally, so I don’t yet know when I can commit to starting the Fediverse Directory Server specification work.
Strictly speaking, it’s vaguely possible to get buy-in from work to focus on this project as part of my day-to-day responsibilities, since it has immediate and lasting value to the Internet.
However, I don’t want to propose it because that would be crossing the professional-personal streams in a way I’m not really comfortable with.
The last thing I need is angry Internet trolls harassing my coworkers to try to get under my fur, y’know?
If there is enough interest from the broader Fediverse community, I’m also happy to delegate this work to anyone interested.
Once the work can begin, I don’t anticipate it will take more than a week for me to write a specification that other crypto nerds will take seriously.
I am confident in this because most of the cryptography will be constrained to hash functions, preventing canonicalization and cross-protocol attacks, and signatures.
Y’know, the sort of thing I write about on my furry blog for fun!
Building a reference implementation will likely take a bit longer; if, for no other reason, than I believe it would be best to write it in Go (which has the strongest SigSum support, as of this writing).
This is a lot of words to say, as far as timelines go:
CMYKatHow to Get Involved
Regardless of whether my overall E2EE proposal gets adopted, the Directory Server component is something that should be universally useful to the Fediverse and to software developers around the world.
If you are interested in participating in any technical capacity, I have just created a Signal Group for discussing and coordinating efforts.
All of these efforts will also be coordinated on the fedi-e2ee GitHub organization.
The public key directory server’s specification will eventually exist in this GitHub repository.
Can I Contribute Non-Technically?
Yes, absolutely. In the immediate future, once it kicks off, the work is going to be technology-oriented.
However, we may need people with non-technical skills at some point, so feel free to dive in whenever you feel comfortable.
What About Financially?
If you really have money burning a hole in your pocket and want to toss a coin my way, I do have a Ko-Fi. Do not feel pressured at all to do so, however.
Because I only use Ko-Fi as a tip jar, rather than as a business, I’m not specifically tracking which transaction is tied to which project, so I can’t make any specific promises about how any of the money sent my way will be allocated.
What I will promise, however, is that any icons/logos/etc. created for this work will be done by an artist and they will be adequately compensated for their work. I will not use large-scale computing (a.k.a., “Generative AI”) for anything.
Closing Thoughts
What I’ve sketched here is much simpler (and more ActivityPub-centric) than the collaboration I was originally planning.
Thanks for being patient while I tried, in vain, to make that work.
As of today, I no longer think we need to wait for them. We can build this ourselves, for each other.
https://soatok.blog/2024/06/06/towards-federated-key-transparency/
#cryptography #endToEndEncryption #fediverse #KeyTransparency #Mastodon #MerkleTrees #PublicKeys
-
In late 2022, I blogged about the work needed to develop a specification for end-to-end encryption for the fediverse. I sketched out some of the key management components on GitHub, and then the public work abruptly stalled.
A few of you have wondered what’s the deal with that.
This post covers why this effort stalled, what I’m proposing we do next.
What’s The Hold Up?
The “easy” (relatively speaking) parts of the problem are as follows:
- Secret key management. (This is sketched out already, and provides multiple mechanisms for managing secret key material. Yay!)
- Bulk encryption of messages and media. (I’ve done a lot of work in this space over the years, so it’s an area I’m deeply familiar with. When we get to this part, it will be almost trivial. I’m not worried about it at all.)
- Forward-secure ratcheting / authenticated key exchange / group key agreement. (RFC 9420 is a great starting point.)
That is to say, managing secret keys, using secret keys, and deriving shared secret keys are all in the “easy” bucket.
The hard part? Public key management.
CMYKat made thisWhy is Public Key Management Hard?
In a centralized service (think: BlueSky, Twitter, Facebook, etc.), this is actually much easier to build: Shove your public keys into a database, and design your client-side software to trust whatever public key your server gives them. Bob’s your uncle, pack it up and go home.
Unfortunately, it’s kind of stupid to build anything that way.
If you explicitly trust the server, the server could provide the wrong public key (i.e., one for which the server knows the corresponding secret key) and you’ll be none the wiser. This makes it trivial for the server to intercept and read your messages.
If your users are trusting you regardless, they’re probably just as happy if you don’t encrypt at the endpoint at all (beyond using TLS, but transport encryption is table stakes for any online service so nevermind that).
But let’s say you wanted to encrypt between peers anyway, because you’re feeling generous (or don’t want to field a bunch of questionably legal demands for user data by law enforcement; a.k.a. the Snapchat threat model).
You could improve endpoint trust by shoving all of your users’ public keys into an append-only data structure; i.e. key transparency, like WhatsApp proposed in 2023:
https://www.youtube.com/watch?v=_N4Q05z5vPE
And, to be perfectly clear, key transparency is a damn good idea.
Key transparency keeps everyone honest and makes it difficult for criminals to secretly replace a victim’s public key, because the act of doing so is unavoidably published to an append-only log.
The primary challenge is scaling a transparency feature to serve a public, federated system.
AJFederated Key Transparency?
Despite appearances, I haven’t been sitting on my thumbs for the past year or so. I’ve been talking with cryptography experts about their projects and papers in the same space.
Truthfully, I had been hoping to piggyback off one of those upcoming projects (which is focused more on public key discovery for SAML- and OAuth-like protocols) to build the Federated PKI piece for E2EE for the Fediverse.
Unfortunately, that project keeps getting delayed and pushed back, and I’ve just about run out of patience for it.
Additionally, there are some engineering challenges that I would need to tackle to build atop it, so it’s not as simple as “let’s just use that protocol”, either.
So let’s do something else instead:
Art: ScruffKerfluffFediverse Public Key Directories
Orthogonal to the overall Fediverse E2EE specification project, let’s build a Public Key Directory for the Fediverse.
This will not only be useful for building a coherent specification for E2EE (as it provides the “Federated PKI” component we’d need to build it securely), but it would also be extremely useful for software developers the whole world over.
Imagine this:
- If you want to fetch a user’s SSH public key, you can just query for their username and get a list of non-expired, non-revoked public keys to choose from.
- If you wanted public key pinning and key rotation for OAuth2 and/or OpenID Connect identity providers without having to update configurations or re-deploy any applications, you can do that.
- If you want to encrypt a message to a complete stranger, such that only they can decrypt it, without any sort of interaction (i.e., they could be offline for a holiday and still decrypt it when they get back), you could do that.
Oh, and best of all? You can get all these wins without propping up any cryptocurrency bullshit either.
From simple abstractions, great power may bloom.
Mark Miller
How Will This Work?
We need to design a specific kind of server that speaks a limited set of the ActivityPub protocol.
I say “limited” because it will only not support editing or deleting messages provided by another instance. It will only append data.
To understand the full picture, let’s first look at the message types, public key types, and how the message types will be interpreted.
Message Types
Under the ActivityPub layer, we will need to specify a distinct set of Directory Message Types. An opening offer would look like this:
AddKey— contains an Asymmetric Public Key, a number mapped to the user, and instance that hosts it, and some other metadata (i.e., time)RevokeKey— marks an existing public key as revokedMoveIdentity— moves all of the public keys from identity A to identity B. This can be used for username changes or instance migrations.
We may choose to allow more message types at the front-end if need be, but that’s enough for our purposes.
EDIT: Username Obfuscation
As Lunawawa points out about my first draft of this blog post:
that’s enough data to count as PII under GDPR, you’d need to handle the right to be forgotten somehow
We could use the Actor
@idfor this instead.Alternatively, we can make it mandatory that each instance will map usernames to a random 256-bit integer, which is what will be stored in the append-only ledger.
Then, if someone wants to invoke their right to be forgotten, they can just have the instance delete the mapping between User ID and actual username, and we don’t need to break the transparency log’s history.
This is kind of annoying, but so is everything else in government, so it’s to be expected.
Public Key Types
We are not interested in backwards compatibility with every existing cryptosystem. We will only tolerate a limited set of public key types.
At the outset, only Ed25519 will be supported.
In the future, we will include post-quantum digital signature algorithms on this list, but not before the current designs have had time to mature.
RSA will never be included in the set.
ECDSA over NIST P-384 may be included at some point, if there’s sufficient interest in supporting e.g., US government users.
If ECDSA is ever allowed, RFC 6979 is mandatory.
Message Processing
When an instance sends a message to a Directory Server, it will need to contain a specific marker for our protocol. Otherwise, it will be rejected.
Each message will have its own processing rules.
After the processing rules are applied, the message will be stored in the Directory Server, and a hash of the message will be published to a SigSum transparency ledger. The Merkle root and inclusion proofs will be stored in an associated record, attached to the record for the new message.
Every message will have its hash published in SigSum. No exceptions.
We will also need a mechanism for witness co-signatures to be published and attached to the record.
AddKey
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "action": "AddKey", "message": { "time": "2024-12-31T23:59:59Z", "identity": "<foo-id>@mastodon.example.com", "public-key": "ed25519:<key goes here>" }, "signature": "SignatureOfMessage"}The first
AddKeyfor any given identity will need to be self-signed by the key being added (in addition to ActivityPub messages being signed by the instance).After an identity exists in the directory, every subsequent public key MUST be signed by a non-revoked keypair.
RevokeKey
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "action": "RevokeKey", "message": { "time": "2024-12-31T23:59:59Z", "identity": "<foo-id>@mastodon.example.com", "public-key": "ed25519:<key goes here>" }, "signature": "SignatureOfMessage"}This marks the public key as untrusted, and effectively “deletes” it from the list that users will fetch.
Important: RevokeKey will fail unless there is at least one more trusted public key for this user. Otherwise, a denial of service would be possible.
Replaying an AddKey for a previously-revoked key MUST fail.
MoveIdentity
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "action": "MoveIdentity", "message": { "time": "2024-12-31T23:59:59Z", "old-identity": "<foo-id>@mastodon.example.com", "new-identity": "<bar-id>@akko.example.net" }, "signature": "SignatureOfMessage"}This exists to facilitate migrations and username changes.
Fetching Public Keys
A simple JSON API (and/or an ActivityStream; haven’t decided) will be exposed to query for the currently trusted public keys for a given identity.
{ "@context": "https://example.com/ns/fedi-e2ee/v1", "public-keys": [ { "data": { "time": "2024-12-31T23:59:59Z", "identity": "[email protected]", "public-key": "ed25519:<key goes here>" }, "signature": "SignatureOfData", "sigsum": { /* ... */ }, }, { "data": { /* ... */ }, /* ... */ }, /* ... */ ]}Simple and easy.
CMYKatGossip Between Instances
Directory Servers should be configurable to mirror records from other instances.
Additionally, they should be configurable to serve as Witnesses for the SigSum protocol.
The communication layer here between Directory Servers will also be ActivityPub.
Preventing Abuse
The capability of learning a user’s public key doesn’t imply the ability to send messages or bypass their block list.
Additionally, Fediverse account usernames are (to my knowledge) generally not private, so I don’t anticipate there being any danger in publishing public keys to an append-only ledger.
That said, I am totally open to considering use cases where the actual identity is obfuscated (e.g., HMAC with a static key known only to the instance that hosts them instead of raw usernames).
Nevermind! Apparently GDPR will make it really annoying to not do this.
So we’re going to do it, unavoidably, for everyone, always, just so we don’t have to deal with lawyers.
How Will This Be Used for E2EE Direct Messaging?
I anticipate that a small pool of Directory Servers will be necessary, due to only public keys and identities being stored.
Additional changes beyond just the existence of Directory Servers will need to be made to facilitate private messaging. Some of those changes include:
- Some endpoint for users to know which Directory Servers a given ActivityPub instance federates with (if any).
- Some mechanism for users to asynchronously exchange Signed Pre-Key bundles for initiating contact. (One for users to publish new bundles, another for users to retrieve a bundle.)
- These will be Ed25519-signed payloads containing an ephemeral X25519 public key.
This is all outside the scope of the proposal I’m sketching out here today, but it’s worth knowing that I’m aware of the implementation complexity.
The important thing is: I ([email protected]) should be able to query pawb.fun, find the Directory Server(s) they federate with, and then query that Directory server for
[email protected]and get his currently trusted Ed25519 public keys.From there, I can query pawb.fun for a SignedPreKey bundle, which will have been signed by one of those public keys.
And then we can return to the “easy” pile.
MarleyTanukiDevelopment Plan
Okay, so that was a lot of detail, and yet not enough detail, depending on who’s reading this blog post.
What I wrote here today is a very rough sketch. The devil is always in the details, especially with cryptography.
Goals and Non-Goals
We want Fediverse users to be able to publish a public key that is bound to their identity, which anyone else on the Internet can fetch and then use for various purposes.
We want to leverage the existing work into key transparency by the cryptography community.
We don’t want to focus on algorithm agility or protocol compatibility.
We don’t want to involve any government offices in the process. We don’t care about “real” identities, nor about codifying falsehoods about names.
We don’t want any X.509 or Web-of-Trust machinery involved in the process.
Tasks
The first thing we would need to do is write a formal specification for a Directory Server (whose job is only to vend Public Keys in an auditable, transparent manner).
Next, we need to actually build a reference implementation of this server, test it thoroughly, and then have security experts pound at the implementation for a while. Any security issues that can be mitigated by design will require a specification update.
We will NOT punt these down to implementors to be responsible for, unless we cannot avoid doing so.
Once these steps are done, we can start rolling the Directory Servers out. At this point, we can develop client-side libraries in various programming languages to make it easy for developers to adopt.
My continued work on the E2EE specification for the Fediverse can begin after we have an implementation of the Directory Server component ready to go.
Timeline
I have a very demanding couple of months ahead of me, professionally, so I don’t yet know when I can commit to starting the Fediverse Directory Server specification work.
Strictly speaking, it’s vaguely possible to get buy-in from work to focus on this project as part of my day-to-day responsibilities, since it has immediate and lasting value to the Internet.
However, I don’t want to propose it because that would be crossing the professional-personal streams in a way I’m not really comfortable with.
The last thing I need is angry Internet trolls harassing my coworkers to try to get under my fur, y’know?
If there is enough interest from the broader Fediverse community, I’m also happy to delegate this work to anyone interested.
Once the work can begin, I don’t anticipate it will take more than a week for me to write a specification that other crypto nerds will take seriously.
I am confident in this because most of the cryptography will be constrained to hash functions, preventing canonicalization and cross-protocol attacks, and signatures.
Y’know, the sort of thing I write about on my furry blog for fun!
Building a reference implementation will likely take a bit longer; if, for no other reason, than I believe it would be best to write it in Go (which has the strongest SigSum support, as of this writing).
This is a lot of words to say, as far as timelines go:
CMYKatHow to Get Involved
Regardless of whether my overall E2EE proposal gets adopted, the Directory Server component is something that should be universally useful to the Fediverse and to software developers around the world.
If you are interested in participating in any technical capacity, I have just created a Signal Group for discussing and coordinating efforts.
Can I Contribute Non-Technically?
Yes, absolutely. In the immediate future, once it kicks off, the work is going to be technology-oriented.
However, we may need people with non-technical skills at some point, so feel free to dive in whenever you feel comfortable.
What About Financially?
If you really have money burning a hole in your pocket and want to toss a coin my way, I do have a Ko-Fi. Do not feel pressured at all to do so, however.
Because I only use Ko-Fi as a tip jar, rather than as a business, I’m not specifically tracking which transaction is tied to which project, so I can’t make any specific promises about how any of the money sent my way will be allocated.
What I will promise, however, is that any icons/logos/etc. created for this work will be done by an artist and they will be adequately compensated for their work. I will not use large-scale computing (a.k.a., “Generative AI”) for anything.
Closing Thoughts
What I’ve sketched here is much simpler (and more ActivityPub-centric) than the collaboration I was originally planning.
Thanks for being patient while I tried, in vain, to make that work.
As of today, I no longer think we need to wait for them. We can build this ourselves, for each other.
https://soatok.blog/2024/06/06/towards-federated-key-transparency/
#cryptography #endToEndEncryption #fediverse #KeyTransparency #Mastodon #MerkleTrees #PublicKeys