Publishing the software that an actor uses?


I want to publish the server software that an actor uses. This has to be returned as an value when fetching the profile address of an actor. I thought of using the “generator” field for that:

What do you think? Is this the correct field?


It definitely seems like the correct field and it has been identified indepently by a few of us for the exact same thing.

Supposing it is the right field, what would be the best value? Just a uri? A uri including version? What does the uri point to? A Service actor? Something else? An anonymous LD object with name? Etc.


it will be looking like this:

    [generator] => Array
            [type] => Service
            [name] => Friendica 'Dalmatian Bellflower' 2019.06-dev-1310


Question is, if this is possible as well:

    [generator] => Array
            [type] => Service
            [name] => Friendica 'Dalmatian Bellflower' 2019.06-dev-1310
            [url] =>


Last summer we threw around the idea that generator would point to a Service actor for the site and that the actor would have special properties like

{ software: { name: blah,  version:1.2.3g, etc } }

But then some of us argued whether that should just be on all actors or if it should be underneath generator or just directly on the actors and just about every other combination that all kind of seems valid.


“software” and “version” aren’t standard, aren’t they?


Nope. There are other fields that would be quite useful too, none of them standard.

I think @_cj was thinking up some related discovery stuff that takes a different approach.


Are there any ways to expose explicitly the version number with standard fields?


No it’s all extension territory and the url-is-object thing kind of resists the idea of a site or software controller.


Can you explain what you mean with “the url-is-object thing kind of resists the idea of a site or software controller”? I’m not a native speaker and I’m reaching my limits very fast - additionally I have problems thinking too abstract :slight_smile:


Sorry I mean “Follow Your Nose”


I would be interested in what your use-case for exposing this is. :slight_smile:


Friendica is a multi protocol system, not only speaking ActivityPub, but also Diaspora, OStatus and its own protocol DFRN. We want to sunset DFRN in favour of using AP for Friendica <=> Friendica as well.

I’m currently working on the process of following a person. To make this possible for Friendica <=> Friendica via AP, I need to apply changes on both sides. So I have to make sure that my communication partner is up to date. Then I switch the following process from DFRN to AP.


Ah, thank you.

I am currently thinking about whether you could also use a property of the server’s json-ld description for that, i.e. the json-ld data for Maybe a object property that describes which AP things are implemented, like { "": { "follow": true, "foo", false } }


The idea I’d like to play with is a single Service object at some .well-known URI with descriptions such as protocols, versions, supported vocabularies, etc.

But it’s still a pipe dream at the moment, don’t wait on me.


You think of some capabilities file? Sounds like some interesting idea.