Ariadne's Space


Jejune milestone 2 is out!

I am pleased to announce that Jejune milestone 2 (version 0.0.2) has been released. Here's the changelog:

Jejune Milestone 2 (v0.0.2) [February 18, 2021]

  • Many jejune-client improvements:
  • Search for and follow users
  • Better display of interactions
  • Lightbox
  • Infinite scrolling on the dashboard

  • Improved support for HTTP signatures:

  • Support for validating HS2019 signatures (we still send RSA-SHA256 signatures for now)

  • Numerous ActivityStreams/ActivityPub improvements:

  • Support for the replies collection
  • Support for the liked and likes collections
  • Support for the shares and jejune:shared collections
  • Collection rendering for clients

  • Implemented support for signed object fetches

  • Improved Accept header handling

  • Improved inbox processing worker robustness

If you're interested in Jejune, join our Matrix room! We would be glad to help you deploy and hopefully even develop features in the software!

February 18, 2021 [11:30:33] by Ariadne


i feel like the fediverse does not really need any more twitter clones

February 18, 2021 [10:16:47] by Ariadne


Jejune now has a lightbox for post attachments with visible image descriptions.

February 18, 2021 [09:28:15] by Ariadne


Pretty close to having this HTTP signatures code refactored.

February 18, 2021 [06:10:52] by Ariadne


verifying my http signatures refactoring works in the real-world

February 17, 2021 [15:21:56] by Ariadne


this is utterly amazing: the latest draft of http-signatures spec completely breaks previous implementations by changing (request-target) to *request-target in the signing string.

February 17, 2021 [13:40:44] by Ariadne


Why I do not think SOLID will gain adoption.

SOLID ("Social Linked Data") is an emergent technology being incubated by W3C and Tim Berners-Lee's new company Inrupt.

It promises to reinvent the web in an open and decentralized fashion, where you interact with apps that store their data on infrastructure you control (a solid "pod"). This sounds good, right? Well, at the surface, it sounds good, unfortunately there are serious defects that make the viability of SOLID's adoption amongst developers unlikely.

SOLID is built on the RDF data model.

RDF is an extremely flawed data model. While the general idea of encoding relations between objects in the same way as we would use human language is enticing, the implementation is... quite lacking. The RDF data model does not even support lists (although it has sets which can act like lists if you squint hard enough).

Because of the lack of natural data types that developers expect to be present in a data model, using RDF feels unnatural, which translates directly to it being an unpleasant tool.

The original RDF specification only provided one way to represent an RDF document: the RDF/XML representation (as an aside: the Netscape/Mozilla bookmarks.html format was built on top of RDF/XML, specifically using RDF and XHTML together).

The overhead of having to write XML to represent semantic data lead to other representation languages being developed, starting with N-Triples, which evolved into Notation3 and finally Turtle. Turtle is the preferred format for semantic web researchers today, although TriG may replace it eventually.

RDF models can also be represented in HTML, as so-called Semantic HTML. When people talk about microformats, OpenGraph or similar technology, they are talking about various takes on Semantic HTML.

Because of the requirement of RDF to be portable in some way to all of these formats, the RDF data model has suffered greatly -- it is effectively the least common denominator of all of these different formats.

(As a side note, Audacious uses RDF internally, first using XSPF as its preferred representation of library data, but later moving to a custom format which encodes the triples as a bare document.)


JSON-LD was created by Manu Sporny as an alternative to RDF, allowing for developers to make practical use of linked data.

At the same time, the RDF working group discovered that developers really like to use JSON, so they prototyped a JSON-based representation called JTriples. If you look at the examples on the wiki page, you'll understand why the developer community wasn't interested in what they had to offer: it is basically Turtle, but represented in JSON.

Eventually, the chair of the RDF Working Group decided to call up Manu Sporny and ask him to bring JSON-LD under the auspices of the RDF Working Group, and JSON-LD became the JSON representation for RDF objects.

JSON-LD also extended the RDF data model so that working with JSON-LD feels natural (it can do anything JSON can do).

Anyway, if you're interested in the unholy union of JSON-LD and RDF, Manu Sporny is more qualified to tell that tale.

Let's talk about ActivityPub

Now that the technical background concerning the various ways to represent RDF documents are out of the way, let's talk about the only remotely successful Social Web protocol the W3C has released, ActivityPub.

ActivityPub is essentially a very clever combination of ActivityStreams 2.0, Linked Data Notifications and an actor model. It has been adopted by dozens of free software projects wanting to build social graph features into their apps, the most popular being Mastodon and PeerTube.

ActivityPub is very explicitly built on JSON-LD. The examples are all JSON-LD and the specification explicitly says that JSON-LD is the only representation allowed on the wire between peers. This means that developers can work with the tooling they already know: the JSON library in their programming language, and it's guaranteed to always work.

It is because of this that ActivityPub has been successful: you can just jump in and start hacking.

The main defect of SOLID.

SOLID is not explicitly built on JSON-LD, instead JSON-LD is one of two supported representations: you can either compose your messages in JSON-LD or in Turtle.

Turtle, if you didn't already know, is depicted in the screenshot at the beginning of this post (which itself is from part of the SOLID Interoperability specification).

While it is true that some languages have high quality libraries for composing and reading Turtle documents, it is yet another thing that you have to deal with to implement a SOLID pod or a SOLID application and be conformant.

There is no stepping around it: the specification says you must support Turtle and JSON-LD.

The reality of this situation is political: W3C is unwilling to admit that almost nobody actually wants to use RDF, so they try to push alternate RDF representations like Turtle into the work they produce.

This situation means that developers will either not embrace SOLID, or they will just ignore the Turtle requirement and W3C will eventually have to concede and remove that requirement from the specification.

To be clear: ActivityPub is successful because the specification authors decisively ignored RDF and went all in on JSON-LD. If SOLID wishes to have the same success, it must reject Turtle and do the same.

If you want to build truly world-changing technology, you have to focus on the future and not the past. JSON-LD is the future and traditional RDF is the past.

February 17, 2021 [12:28:00] by Ariadne


I see a long-form rant about SOLID in the near future.

I want to believe, really, I do, but there are many defects in the specification that will generally prevent adoption by developers.

And without developers, there's no apps, and without apps, there's really no point in having a SOLID pod, now is there?

February 17, 2021 [11:13:39] by Ariadne


Water's out. Great.

February 16, 2021 [22:09:59] by JBOD Shadow Legends via

this is why you shouldn't be smug @Elizafox

February 17, 2021 [09:48:55] by Ariadne


the more expensive the server, the longer it takes to boot

February 17, 2021 [08:18:23] by Ariadne


soon, furries will be "yiffing" using ActivityPub and Immers Space.

and a whole digital economy will be built trading "yiff" for capital using Web Monetization.

you just wait and see

February 15, 2021 [20:27:34] by Ariadne


oh, Parler managed to finally bring itself back online. they missed their own target (Matze said he could have it back up in a week!) by 30 days though.

February 15, 2021 [20:16:09] by Ariadne


oh, nice, actually we are up to Rust 1.50 :)

February 15, 2021 [20:02:55] by Ariadne


well, Alpine now has Rust 1.48. Let's see if it's any more or less broken for bootstrapping Rust on s390x.

February 15, 2021 [20:01:59] by Ariadne


Any recommendations for a used laptop with decent Linux support and good enough graphics without a proprietary driver to run typical 3d games? No need for AAA games at high graphics settings, but it would be nice to be able to run games from 5 years ago at medium settings.

February 15, 2021 [18:41:02] by Charles U. Farley via

Intel graphics have come a long way... anything with Iris Pro graphics is likely suitable for that requirement.

February 15, 2021 [19:59:34] by Ariadne


imagine being paid to be a judgemental boomer

February 15, 2021 [12:13:28] by Ariadne


@ariadne so, like aptitude which tries to resolve every dependency issue – and usually suggests deleting everything as its first option (instead of, iunno, upgrading everything, which even regular apt has the capacity to do)?

February 15, 2021 [09:25:09] by /dev/urandom via

aptitude uses a deductive solver, not a true SAT solver. in recent years, it is also a bounded deductive solver, but that's not great either.

February 15, 2021 [10:28:19] by Ariadne


this might be a controversial opinion, but I think AT&T assembler syntax is much better than Intel syntax.

February 15, 2021 [08:58:11] by Ariadne


this likely comes as a surprise to nobody, but i still do not have nice things to say about TERFs.

February 15, 2021 [08:50:16] by Ariadne


I notice that Friendica instances probe all sorts of various endpoints on my server. I presume this is for "software type detection" or something. And so I wonder what software it detects Jejune as being?

February 15, 2021 [08:23:43] by Ariadne