What if...
-
@mariusor
I was thinking about trying to build a lightweight wrapper around c2s that mimics the Mastodon/pixelfed API, and then just bootstrap every existing mastodon/pixelfed client but that feels like more work than it'd be worth@tom I doubt you can reproduce the timelines and the tag following with anything lightweight.
It probably needs a lot of caching and reprocessing of collections... -
@tom I doubt you can reproduce the timelines and the tag following with anything lightweight.
It probably needs a lot of caching and reprocessing of collections...@mariusor Yeah that's where I was hung up with my mental model of it and why I haven't actually tried anything yet
-
@raphael @silverpill @steve I don't intend to stop working on the ActivityPub API.
There are a lot of us collaborating through the SocialCG ActivityPub API Task Force, and I expect that collaboration to continue:
GitHub - swicg/activitypub-api: ActivityPub API Task Force repository.
ActivityPub API Task Force repository. Contribute to swicg/activitypub-api development by creating an account on GitHub.
GitHub (github.com)
@evan @raphael @steve I think a generic ActivityPub server can't be built without major changes to ActivityPub. For example, it might be necessary to make all side-effects of activities explicit.
And there is a bigger problem. A generic server without FEP-ef61 is like ATProto PDS or Nostr relay but all data is tied to a single server. This means that it is obsolete before the work has even begun.
-
@evan @mariusor @steve oh neat!
Add Arrive outbox handler for check-in activities by pfefferle · Pull Request #2977 · Automattic/wordpress-activitypub
ActivityPub for WordPress. Contribute to Automattic/wordpress-activitypub development by creating an account on GitHub.
GitHub (github.com)
@pfefferle @mariusor @steve WHAT
-
@pfefferle @mariusor @steve that's awesome!
-
What if... you had one Fedi account on a generic headless #ActivityPub server that simply hosts and federates your data... and had C2S UIs for microblogging, long form writing, media editing and sharing, link aggregation, games, fitness tracking, and so on, that all used that same Fedi account. Technically, it's a similar concept as ATProto (but no relay and app view) and Solid Pods (but no RDF).
It seems possible... if we can improve the AP C2S API/protocol sufficiently.
I love this vision. One hurdle I see is the lack of content types + the ability to represent them in HTML.
Bandwagon is my best use case: Albums and Tracks aren’t a standard data type. I could push those into my own AP server, but other servers wouldn’t know how to represent them correctly.
For this to work, we need a restricted subset of HTML for generating previews of unknown content.
This feature exists in oEmbed (optional) but is poorly supported on the Fediverse.
-
@steve I've built the server part already, that was 5 years ago. Still waiting for people with the skills to build the UIs though...
-
@evan @raphael @steve I think a generic ActivityPub server can't be built without major changes to ActivityPub. For example, it might be necessary to make all side-effects of activities explicit.
And there is a bigger problem. A generic server without FEP-ef61 is like ATProto PDS or Nostr relay but all data is tied to a single server. This means that it is obsolete before the work has even begun.
@silverpill @evan @raphael Several generic AP server implementations have been built, so I don't know what you mean by the side-effect comment. Note that my mental model of a generic server doesn't implement any domain-specific behaviors in the server, but only side-effects specified by AP (and extended generic C2S support). There are also simpler ways to design servers so that content isn't tied to a specific server (with different tradeoffs than FEP-ef61). That's a long discussion...
-
I love this vision. One hurdle I see is the lack of content types + the ability to represent them in HTML.
Bandwagon is my best use case: Albums and Tracks aren’t a standard data type. I could push those into my own AP server, but other servers wouldn’t know how to represent them correctly.
For this to work, we need a restricted subset of HTML for generating previews of unknown content.
This feature exists in oEmbed (optional) but is poorly supported on the Fediverse.
@benpate The approach I described requires us to think about servers differently. A generic AP server would only store and federate data, and would not render any user-facing content. The C2S clients would know how to render the content because they were coded to do it. Different clients might render the same content very differently for different purposes (although I see value in having the ability to share UI components too).
-
I love this vision. One hurdle I see is the lack of content types + the ability to represent them in HTML.
Bandwagon is my best use case: Albums and Tracks aren’t a standard data type. I could push those into my own AP server, but other servers wouldn’t know how to represent them correctly.
For this to work, we need a restricted subset of HTML for generating previews of unknown content.
This feature exists in oEmbed (optional) but is poorly supported on the Fediverse.
@benpate as long as your custom types have the current ActivityStreams Object as a base (ie, they contain a Content and a MediaType) anyone would be able to render them to some extent.
For cases where you have a different structure, you can have Profile objects alognside them linked to their Preview property. Use the vocabulary to your advantage.
-
What if... you had one Fedi account on a generic headless #ActivityPub server that simply hosts and federates your data... and had C2S UIs for microblogging, long form writing, media editing and sharing, link aggregation, games, fitness tracking, and so on, that all used that same Fedi account. Technically, it's a similar concept as ATProto (but no relay and app view) and Solid Pods (but no RDF).
It seems possible... if we can improve the AP C2S API/protocol sufficiently.
@steve FEP-ef61 makes it possible to build a server that only talks to other servers or to a client that pulls inbox (i.e. received activities) and pushes to outbox (outgoing activities). tootik is very close to this, I'm working on a 'local mode' where the server and the UI run locally but synchronize with a server in the internet, a 'dumb pipe' that can send and receive activities.
-
-
@lori so, Semaphore social seems to be is the project from which Pinafore started. And they are both Mastodon clients, not ActivityPub client to server clients. So no, my server does not support the Mastodon client API.
-
@silverpill @evan @raphael Several generic AP server implementations have been built, so I don't know what you mean by the side-effect comment. Note that my mental model of a generic server doesn't implement any domain-specific behaviors in the server, but only side-effects specified by AP (and extended generic C2S support). There are also simpler ways to design servers so that content isn't tied to a specific server (with different tradeoffs than FEP-ef61). That's a long discussion...
@steve @evan @raphael A server can't properly process an arbitrary activity without knowing its side effects. A server that only supports a small number of activities mentioned in the ActivityPub spec is obviously not generic.
I can point to other challenges because I've been working on this problem for years, but...
Several generic AP server implementations have been built
There are also simpler ways to design servers so that content isn't tied to a specific serverWow, for real? I suppose it's time for me to retire then.
-
@steve @evan @raphael A server can't properly process an arbitrary activity without knowing its side effects. A server that only supports a small number of activities mentioned in the ActivityPub spec is obviously not generic.
I can point to other challenges because I've been working on this problem for years, but...
Several generic AP server implementations have been built
There are also simpler ways to design servers so that content isn't tied to a specific serverWow, for real? I suppose it's time for me to retire then.
I don't follow: how does that relate to the "ActivityPub API" if the activity is "arbitrary" and not defined by ActivityPub, not using AS2 vocabulary?
Isn't that like saying that we can't use HTTP as a protocol because an HTTP server doesn't know what to do with verbs defined on, e.g, WebDAV?
-
@steve @evan @raphael A server can't properly process an arbitrary activity without knowing its side effects. A server that only supports a small number of activities mentioned in the ActivityPub spec is obviously not generic.
I can point to other challenges because I've been working on this problem for years, but...
Several generic AP server implementations have been built
There are also simpler ways to design servers so that content isn't tied to a specific serverWow, for real? I suppose it's time for me to retire then.
@silverpill I think you're getting confused about ActivityPub side-effects and application logic side-effects.
I call my project FedBOX a "Generic ActivityPub server" because outside of storing ActivityPub objects and activities to a local storage and dispatching said activities to their recipients it doesn't do anything else.
However there's nothing preventing someone from forking the project and adding some other type of logic to it for specific combinations of Activities/Objects. That's the thing I'm trying to do with my GoActivityPub library: take care of the ActivityPub stuff, so you can then do your own stuff alongside it.
-
I don't follow: how does that relate to the "ActivityPub API" if the activity is "arbitrary" and not defined by ActivityPub, not using AS2 vocabulary?
Isn't that like saying that we can't use HTTP as a protocol because an HTTP server doesn't know what to do with verbs defined on, e.g, WebDAV?
-
@silverpill I think you're getting confused about ActivityPub side-effects and application logic side-effects.
I call my project FedBOX a "Generic ActivityPub server" because outside of storing ActivityPub objects and activities to a local storage and dispatching said activities to their recipients it doesn't do anything else.
However there's nothing preventing someone from forking the project and adding some other type of logic to it for specific combinations of Activities/Objects. That's the thing I'm trying to do with my GoActivityPub library: take care of the ActivityPub stuff, so you can then do your own stuff alongside it.
-
Then I'd echo what @mariusor said: it seems like you are conflating the server with the applications built on top of it.
-
@silverpill @mariusor @evan @raphael You're starting to get it!
You quoted "extensions" in the previous post and that was good since the way you think of "extensions" is likely very different than my view. The generic servers I'm discussing *are* highly "extensible" (more than most current Fedi implementations).