#iceshrimpnet — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #iceshrimpnet, aggregated by home.social.
-
CW: Why Sharkey fails to render hashtags from Friendica, Hubzilla & Co. properly, and how long this bug has been known already; CW: long (over 6,600 characters), Fediverse meta, Fediverse-beyond-Mastodon meta
So there's that nasty bug on Sharkey that mangles hashtags in messages from Hubzilla and probably also Friendica, (streams) and Forte. They always look like this:
#[Hashtag](https://hub.netzgemeinde.eu/search?tag=Hashtag)
Basically, Sharkey receives fully standard Rich Text from Hubzilla. It manages to convert this Rich Text into its own Misskey-Flavored Markdown. But then its Markdown parser does not parse it and leaves the Markdown code visible to everyone. It simply doesn't expect there to be a hashtag character in front of an embedded link because, seriously, who'd ever do that and why?!
Friendica would. In fact, Friendica does. It puts the hashtag character in front of the tag, as in outside the tag, as opposed to at the beginning of the tag. It has been doing that since its beginnings in 2010 because it was designed from the get-go to also federate with StatusNet from 2008. And StatusNet does hashtags the same way on its few remaining servers. In fact, so did Identi.ca from 2008, from which StatusNet emerged.
Hubzilla, (streams) and Forte do it, too, because they have inherited it from Friendica.
On StatusNet, Friendica, Hubzilla, (streams) and Forte, a hashtag in a message looks like this:
#Hashtag
Notice how the hashtag character has the same colour as the rest of the post text. And not the same colour as the rest of the hashtag. This means that the hashtag character is not part of the link. (To Mastodon users who don't know this: If something in a "toot" has a different colour from the rest of the "toot", it's a link. Even if it doesn't show a URL in plain sight.)
On 𝕏, Mastodon, Pleroma, Akkoma, Misskey, the various Forkeys and a whole lot of other Fediverse software, a hashtag in a message looks like this:
#Hashtag
Notice how now the hashtag character has the same colour as the rest of the hashtag. This means that the hashtag character is part of the link.
But why did Identi.ca do hashtags differently from Twitter? Because Identi.ca did hashtags before Twitter. AFAIK, when Identi.ca was launched, it had support for hashtags right away. About one year before Twitter.
The hashtag itself had already been invented by the Twitter community. Chris Messina had already codified it in 2007. But it wasn't until 2009 that Twitter actually introduced a technological implementation to support it.
Again, Identi.ca must have had hashtags as early as 2008, and there was no way that Identi.ca creator Evan Prodromou could possibly predict what Twitter would do the following year. So he did what he thought was right and what actually made sense to him.
But nowadays, everybody "knows" that Twitter had the world's very first hashtag implementation ever because nobody, even in the Fediverse, has ever heard of Identi.ca. I mean, the majority of Fediverse users "know" that the Fediverse started with Mastodon.
You know, just like Officer James Barrett "knew" that there is no intelligent life outside Earth only a few minutes before he became Agent J of the Men In Black.
This is also why just about all Fediverse software that does hashtags the Twitter way expects everything to do hashtags the Twitter way. It does not expect hashtags to be done differently. And when a message comes in from Friendica, Hubzilla, (streams) or Forte with hashtags in it, it fails at varying degrees of ungracefully.
Hashtags with the hashtag character outside the link are older than hashtags with the hashtag character inside that they're not only completely unexpected, that they cause software to malfunction, but the same software often can't even handle that malfunction. It's a miracle that the Friendica/Hubzilla family doesn't cause Fediverse servers to crash or even server databases to go corrupt by simply sending hashtags.
Mastodon used to be an exception of sorts, but only because, before version 4.0 from October, 2022, its HTML "sanitiser" actually ripped out any and all rich text code from incoming messages and left nothing but plain text behind. And then it didn't recognise hashtags in messages from outside Mastodon as hashtags at all.
When Mastodon 4.0 came and supported some rich text, including embedded links, it went haywire, of course. But then someone from Friendica and Hubzilla went in and complained about this malfunction and explained what happened, why it happened and why it was not Friendica and Hubzilla that did things wrong. Besides, if something utterly defaces "toots", then Mastodon developers do step in to stop it. After all, Mastodon has a few more of them at hand, paid, full-time professionals even. You have to give it that.
Which takes us back to Sharkey. Sharkey is developed by a small handful of individuals in their spare time. Granted, it's a soft fork of Misskey, so a lot of development work is done by the Misskey devs and taken over by the Sharkey devs, but they still have to weave the code changes coming from Misskey in and make them work with what's different on Sharkey.
So it turned out that (Link content warning: eye contact) this bug has already been filed to the Sharkey devs in October, 2024. All that has happened since then until today was that Hazelnoot added two labels. But the bug report came with no explanations. In fact, it misattributed one of my Hubzilla posts as a Friendica post.
And in fact, it turned out that this is actually (Link content warning: Microsoft GitHub link, eye contact) a Misskey bug which has been filed in January, 2024, two years ago. The bug report is a bit more elaborate, but the reporter still knew precious little about what's going on. So I wrote a comment in which I explained the bug from a Friendica/Hubzilla POV as well as what's going on on the technical side, and why the error has to be on Misskey's side.
I hope this will finally help get the bug fixed. Unfortunately, this fix would come too late for Iceshrimp. Iceshrimp-JS is a true Forkey, but in maintenance mode, so I guess only security patches and critical bugfixes will be merged from Misskey, if anything. And Iceshrimp.NET is a complete rewrite of a pre-this-fix Misskey fork, so the Iceshrimp devs probably don't know about this issue either. If it fails ungracefully upon receiving hashtags with the hashtag character outside, it will require its own bug report.
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Hashtag #Hashtags #HashtagMeta #CWHashtagMeta #Twitter #𝕏 #Fediverse #Mastodon #Pleroma #Akkoma #Misskey #Forkey #Forkeys #Sharkey #Iceshrimp #Iceshrimp-JS #Iceshrimp.NET #Identi.ca #Laconi.ca #StatusNet #Friendica #Hubzilla #Streams #(streams) #Forte -
@D.Hamlin.Music Okay, let me demonstrate it this way. I hope Glitch can at least display multiple-line code blocks. If not, I give up, for there's absolutely no way of showing you what I mean.
On Twitter, Mastodon and everything else that "does microblogging", a hashtag includes the hashtag character in the link. In#[zrl=https://hub.netzgemeinde.eu/search?tag=Hashtag]Hashtag[/zrl], everything is part of the link and part of the hashtag.All this is a link
|
________
#[zrl=https://hub.netzgemeinde.eu/search?tag=Hashtag]Hashtag[/zrl]
Look at the hashtags that you're used to. The#is always part of the link and part of the hashtag.
This is what Mastodon used to expect. And this is what Glitch (which is where you are) and Iceshrimp.NET (which is where @Lunawawa :neofox_snug: :therian: is) still expect and nothing else.
Friendica, Hubzilla (which is where I am) and (streams) work differently, also because Friendica is five and a half years older than Mastodon, Hubzilla is an indirect Friendica fork, and (streams) is an indirect Mastodon fork.
In#[zrl=https://hub.netzgemeinde.eu/search?tag=Hashtag]Hashtag[/zrl], the#is decoration, not part of the link, not part of the hashtag. OnlyHashtagis the link and the actual hashtag.
Neither Glitch nor Iceshrimp.NET can handle this. Their devs have probably never seen any of this. They neither know it exists, nor do they even only expect it to exist.
Result: Glitch "sanitises" the unknown, unexpected, "IDFK what this is" code away, just like Mastodon probably used to do until someone from Friendica or Hubzilla filed a bug on GitHub. And Iceshrimp.NET doesn't know how to handle this unexpected code at all. It fails ungracefully by going completely haywire.
I'm going to file a bug on the Glitch repository now. For Iceshrimp.NET, I'll need an account on its repository.
The following hashtags are only for discovery purposes and for sensible users to filter this comment out.
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Glitch #GlitchSoc #Glitch_Soc #Iceshrimp #Iceshrimp.NET #Friendica #Hubzilla #Streams #(streams) #Hashtag #Hashtags #HashtagMeta #CWHashtagMeta -
@D.Hamlin.Music @Lunawawa :neofox_snug: :therian: The problem is most likely that Mistpark, now Friendica, introduced hashtags that do not include the "hashtag character" into the link. All of Friendica's descendants took this behaviour over, including Hubzilla and (streams).
#Hashtag
Twitter/𝕏 has always included the "hashtag character" into the link. All the Twitter replacements, Mastodon, Pleroma, Misskey and their forks, have taken this behaviour over.
#Hashtag
However, they largely expect or used to expect everything in the Fediverse to do that. The way Friendica and its descendants do hashtags is unexpected and highly irritating to them. Vanilla Mastodon has largely fixed their hashtag handling; only the extraction of the hashtags in the last line doesn't work properly yet.
Apparently, this fix was introduced to vanilla Mastodon after the Glitch fork, and Glitch has never taken it over. And the Iceshrimp.NET devs seem not to know about this phenomenon either.
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Hashtag #Hashtags #HashtagMeta #CWHashtagMeta #Glitch #GlitchSoc #Glitch_Soc #Iceshrimp #Iceshrimp.NET #Friendica #Hubzilla #Streams #(streams)