Lets talk about the protocol wars

Yep, people are lifting the lid and finding smoke and mirrors - I hope we are not wasting our focus and time on Fear, uncertainty, and doubt - Wikipedia with this.

On a positive note, the “protocol wars” - has pushed creativity in the #activertypub world and siphoned off some of the worst #fahernistas to the other networks. Let’s keep planting #openweb spaces to become more of what we need, #4opens in the era of #climatechaos

There is a lot of “negativity noise” to the signal in your post, enough to make me not even want to read it completely. You need to look inward my brother.

That said, ActivityPub is never going to get widespread adoption because the specs are a nightmare in implement. It is clear they were created without a single thought to the mess that making everything optional makes.

there are some good ideas, and some good intentions, but they are a kitchen sink one api to rule them all mess. they are too generic to be of any use other than a sign post of how not to do a specification.

I think the majority of the issue is the inheritence based design that makes everything so tightly coupled.

there MUST be constraints and limitations. everything MUST have an id for example.

A more liberal use of MUST/SHALL in the specs is sorely needed.

Also union types in JSON are a nightmare to implement because none of the languages that people actually get work done easily support parsing union types.

A property should NEVER be a string OR url OR list of string OR url OR object OR list of object.
It should be ONE of them, not all of them maybe …
The only people that think that is a good idea have either never written code or have not written code since 1998 when XML was new and all the rage. hint: it was a bad idea then, I know I was there.

But when I mention this, I get variations of the following response. “thats nice you do not like it move on.”

This is the difference between “trust” and “control” one is social the other less so, how to make tech more of the first is something we are currently often doing badly, this is what good social tech looks like:

And this is what bad social tech looks like:

Yep, it’s hard-to-make tech less in “control” this is why am excited about #activertpub and more importantly the process that created it, and people building to use it is where the value is.

Ideas? Good to put them into the #FEP process.

I found myself agreeing until this part.

The web was a simple idea, and that was to add hyperlinks to documents and browsers. Because adding hyperlinks makes things more interconnected, and hence, better.

Linked data is a similarly simple idea, and that is adding hyperlinks to data. It started with HTML, then XML, then JSON. So adding hyperlinks to URLs to create more interconnected data and hence social data.

you miss the point, it should be ONE of those things, not maybe one of ALL of those things.

if you want to do union types then you have to make it a request, as in the default is a URL, but if you want the URL resolved to an object or list or whatever it should be expected to be you ASK for that to happen not just return ¯_(ツ)_/¯ and make the caller have to deal with a soup of types all assigned to the same property name.

Are you alluding to the simplification that would occur if one replaced

        "to": {
            "@id": "as:to",
            "@type": "@id"
        },

by the more stringent

        "to": {
            "@id": "as:to",
            "@type": "@id",
            "@container": "@set"
        },

I personally would even suggest replacing “@id” by “xsd:anyURI”. However, that might be a matter of taste. Unfortunately, I don’t know how many developers would agree that this small change would simplify the Fediverse. A lot of rewriting might be necessary to accommodate it.

I just tested it:

https://json-ld.org/playground/#startTab=tab-compacted&json-ld={"%40context"%3A"https%3A%2F%2Fwww.w3.org%2Fns%2Factivitystreams"%2C"to"%3A"acct%3Ahelge%40mymath.rocks"}&context=["https%3A%2F%2Fwww.w3.org%2Fns%2Factivitystreams"%2C{"to"%3A{"%40id"%3A"as%3Ato"%2C"%40type"%3A"%40id"%2C"%40container"%3A"%40set"}}]

This means we could actually generate a new @context that fixes ActivityStreams while still being compatible. I’ll probably have to give it another think.

Not sure what your yardstick is for “widespread adoption” but I guess dozens of working implementations with many others in progress and a wide range of tools for developer working with AP doesn’t count? What about millions of users, all interacting with each other across thousands of servers running AP implementations?

AP is not something one person would sit down and write from scratch. If you ever end up in a group of devs who all have working implementions of federated social websites, trying to agree on a common standard that won’t break anyone’s app, you might understand why AP is the best standard that could be produced at the time. Having said that, it’s worth noting that you’re not the first to make this criticism, one group even attempted to define a simpler version of AP that could still federate with AP implementations:
https://litepub.social/

Perhaps it has something to do with the tone of these comments? As you so wisely put it;

2 Likes

no the fact that a property can in some cases can be an “Object” or a “string that is a url” or an array of “Object” or an array of string or a “Link” or an array of Link OR NULL even.

And the only way to know which is to try and parse it; this is a nightmare implementation and about as developer antagonistic as you can get.

The fact that no up to date JSON Schema , protobuf spec files or any other schema exists kind of points to this is too much trouble to deal with and terrible design choice.

There are API’s that hit that sweet spot and let you tell the server to “expand/embed” anything that refers objects. The best ones even let you specify which properties you want to “expand/embed” and which ones you want to leave as IRI references.

"understand why AP is the best standard that could be produced at the time. " that time has way passed. There are alternatives popping up with lots of traction for the exact reasons I mention, if you guys want to bury your heads in the sand and stay in past because reasons … have fun with that. “Internet Time” is a thing for a reason. Modernize or die off.

Excluding blockchain noise, there are 2 that I know of; AT Protocol and Nostr . AT Protocol is a WIP with one barely-working prototype (BlueSky) and many people question whether it’s really decentralised at all. Not even a working replacement for AP, let alone one that fits our needs. Nostr is a promising development, and potentially a good replacement for SSB (Secure ScuttleButt). But I’m not going to be rushing to recommend it as a replacement for AP until there are working demonstrations of Nostr-based events calendars (eg Gancio), music hosting (eg FunkWhale), video hosting (like PeerTube), livestreaming (eg OwnCast), etc, etc.

There’s also Zot, which has been around at least as long as AP and is great in many ways, but never gets traction, mainly to do with the prickly and uncooperative attitudes of the people involved. Maybe a lesson to learn there?

If you have any specific suggestions, I’m sure we’d all love to learn from them.

1 Like

Rabble on Bluesky vs Nostr

1 Like

I find it interesting, and problematic, how the two encryptions protocols ONLY talk about themselves and leave out the big #4opens non encryptions path #activertpub that is currently dominating this #openweb space. This is understandable, but not a good path.

Good to see this is more about the “#4opens” than the actual tech, as @Rabble touches on when he talks about the culture of the projects. To move beyond this current tendency to blocking in our #geekproblem we need to focus on the “culture” differences as much as if not more than the tech difference #KISS

Notice language use in the video - Bridges - not Gates - push us to take us on this path. Language matters, GATES have locks where “bridges” are flows. Metaphors matter.

We need ideas to mediate how the #geekproblem easily, default, adding mess like this.
logo_searx_a

To highlight, I am not saying anyone is “wrong”. He does talk about this at the end, it’s about kings in #FOSS about governance.

How can we build a “native” project that addresses these issues

The #OGB is looking for devs.