the challenge will not only be to have json-ld parsers/generators in different languages. the bigger challenge will probably be to make them compatible
I am very, very curious. I will use existing json-ld libs in my implementation and will report what that leads to. Since the day before yesterday iām hacking again, letās see how long i can keep it up. but iām working inside with rdf4j as abstraction and transport turtle. json-ld will āonlyā become an in/out adapter/translator in my case.
Once Iām a little further along, Iām happy to test json-ld compatibility with others. iām starting with C2S though.
It is a very nice, encouraging article.
One more important point is
āAnd why has everything become an array?ā
Cause it does not help anybody if software expects it not to be an array when ActivityPub clearly says, it can be an array.
The Fediverse needs JSON-LD alone for not loosing content.
Have a look at e.g. Federation - Mobilizon ā you would loose all the schema.org properties when you just use the JSON payload.
If you donāt use JSON-LD, your software will not know where the event is and all users are lost. This is one of 1000 examples.
about
āThere are practically no implementations of the ActivityPub Client-to-Server protocol (C2S)ā
I am leading a team at a large publishing house writing a server and a client and I am using every free minute to write my Open Source client, see Commits Ā· redaktor/widgets-preview Ā· GitHub
And so the above sentence is just frustrating and disencouraging to read that there are no implementations (apart from:)
Thank you for pointing out the existing C2S implementations. I changed the wording in the post to āThere are not many implementations of the ActivityPub Client-to-Server protocol (C2S).ā and linked to your post.
It was not my intention to frustrate or discourage. Sorry that you felt so.
Absolutely not ! json-ld is still linked data. Even itās awful
My implementation will understand json-ld and it will also generate json-ld. Iām just afraid that very few people can interpret my json-ld. I currently working on an docker image.
Features now:
Receiving a create activity
read activities/Objects by their subject
no authenticatiopn yet
no actor profile yet.
supports json-ld, turtle and many other rdf syntax.
maybe we should think about a webservice that translates json-ld to turtle and vice versa.
I have one processor each for (in/out) that does this translation for me
Do you think I should go for XMPP? What would be the pros and cons?
I think you should go for XMPP. There are three main advantages I see:
Everything you need to get it working is well specified. You need to read a RFC and a couple of XEPs. Unfortunately ActivityPub seems to be underspecified and getting a working/federating implementation is non-trivial.
There are working, well-tested and generic XMPP servers that you can just use. Generic in the sense that XMPP servers do not care what kind of content you transport over them. This is not the case for ActivityPub. I am not aware of any ActivityPub server that allows arbirtary types of content to be transported. This was something we were trying to do with CPub. With XMPP we just use ejabberd or prosody (both work perfectly fine).
With XMPP youāre not bound to Web technologies. XMPP main transport is TCP, but it works over WebSocket (what we are using in GeoPub) and other things such as radio links (XEP-0361: Zero Handshake Server to Server Protocol). ActivityPub is a Web first stack. If you create a non-web client you still need a lot of web libraries.
Cons:
You need to read some XEPs and other documents that look scary.
You need to deal with XML. But IMHO thatās better than having to deal with JSON-LD.
Considering that many people, who are doing generic servers, looked for help ā
and considering all the meetings, I disagree.
Also, I started GitHub - redaktor/server which just went the closed-source-way for G+J cause we did not get funding at nlnet ā¦
It seems to be a vicious circle but maybe we should actively collect the efforts.
Apart from go-fed, python ap, epicyon, bonfire, semapps ā¦ there is also a Rust start now: