UX challenges in federating music hosts

Continuing the discussion from Subvert gone live today:

I note the irony of having 2 accounts, when the core idea of a federated network is that we can do everything we need to do in software connected to the network with just 1 account :grin:

Anyway, this reminds me of a question I’ve been meaning to ask both @bandwagon and @mirlo devs, and now that I do some testing, FunkWhale too (@petitminion). Why can’t I find music releases on your services as posts by searching their URL in a fediverse app?

If I search for the URL of a PeerTube video, say ā€œThe Future of the Fediverse — Ben Pate — FediCon 2025 - Iridescent PeerTubeā€, it comes up as a post, which I can then comment on, Boost, etc. That doesn’t seem to work with album or track URLs on BandCamp.fm, Mirlo.space, or open.audio.

I went down a few web search rabbitholes looking for a resource that clearly explain how to do this, but couldn’t find one. I guess this is why it’s quite common for this not to work in newer ActivityPub implementations?

1 Like

I asked about this on SocialHub and got this reply from Silverpill;

" The technical aspects are described in sections ā€œRetrieving objectsā€ and ā€œServing objectsā€ of ap-next guide

Setting wrong headers is the most common mistake.

One additional thing that is currently not stated in the guide and might not be obvious is that one URL may resolve to either an HTML page or an AP object depending on the value of Accept header. I’ll probably add this information to the guide."

Here’s the section of the ap-next guide Silverpill refers to.

EDIT: Silverpill has added a section to that document specific to discovery by a URL.

You can search on astodon for the upload Open Audio, hosted by Funkwhale. Mastodon only support Audio objects (which is the equivalent of an upload on Funkwhale). They do not support releases or tracks objects. We could redirect the Track url object to an Audio ap object. But which one ? A track can have various upload… For releases there is nothing we can do. The only clean solution is for mastodon to support the Track and release ap object

I’m glad you posted this. I did some digging of my own, and found pretty much the same thing. We’re not showing up on Mastodon searches because it discards documents it doesn’t recognize, and Mastodon doesn’t recognize Funkwhale’s Album documents.

In the past, I used a multi-type [ā€Albumā€, ā€œNoteā€] but was told that many other apps wouldn’t support that. Here’s some more current research:

The vast majority of smaller apps will break on multi-type documents. But they mostly break if we send an Album, too. The good news is that Mastodon and WordPress does support multi-type documents.

Once again, we can choose architectural purity and support 0.2% of the Fediverse, or bend for Mastodon and get 65% support. I’m going to restore this feature to see how it plays out.

2 Likes

Quick update, that change went to bandwagon.fm earlier today, and now albums are all coming up in the search. Try one of my favorites as an example: Bandwagon.fm - The Misery Stains

3 Likes

Nice idea :slight_smile: I didn’t manage to make this wok with Funkwhale. Can’t find out why :


{
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
            "PropertyValue": "schema:PropertyValue",
            "discoverable": "toot:discoverable",
            "featured": {"@id": "http://joinmastodon.org/ns#featured", "@type": "@id"},
            "indexable": "toot:indexable",
            "schema": "https://schema.org/",
            "toot": "https://joinmastodon.org/ns#",
            "value": "schema:value",
        },
        "https://funkwhale.audio/ns",
    ],
    "artists": {
        "0": {
            "id": "https://bandwagon.fm/@67797f7bed07f50e1f4ee726",
            "name": "Helen Bell",
        }
    },
    "attachment": [
        {
            "mediaType": "image/webp",
            "name": "image",
            "type": "Document",
            "url": "https://bandwagon.fm/67867aca5511d3938d9273e5/attachments/67867aca5511d3938d9273e7",
        }
    ],
    "attributedTo": "https://bandwagon.fm/@67797f7bed07f50e1f4ee726",
    "content": '\u003cp\u003e\u003cem\u003eFive Thousand Feathers\u003c/em\u003e was mostly written and recorded between  2018 and 2024 and includes twelve original songs and two instrumental interludes. The songs are about our relationships with the physical world, with the digital world, and with each other.\u003c/p\u003e\n\u003cp\u003eThere are jackdaws, moons, ecosystem infections generated by surveillance capitalism, love songs, telescopes, miniature sci-fi stories, a longing for a flask of tea by the river, and lots of other things.\u003c/p\u003e\n\u003cp\u003eIt features singing, viola, violin, keyboards, drums, bass, electric guitar, recorders, melodica, EWI, gamelan samples, and strange noises.\u003c/p\u003e\n\u003cp\u003eFull liner notes for individual tracks are available \u003ca href="https://www.helenbell.co.uk/writing/5000-feathers.php"\u003eon my website here\u003c/a\u003e.\u003c/p\u003e\n',
    "id": "https://bandwagon.fm/67867aca5511d3938d9273e5",
    "library": "https://bandwagon.fm/67867aca5511d3938d9273e5/pub/children",
    "license": "COPYRIGHT",
    "links": [
        {
            "href": "https://helenbell.bandcamp.com/album/five-thousand-feathers",
            "label": "OTHER1",
            "rel": "alternate",
        }
    ],
    "name": "Five Thousand Feathers",
    "published": "2025-01-14T15:39:50Z",
    "replies": "https://bandwagon.fm/67867aca5511d3938d9273e5/pub/replies",
    "to": ["Public"],
    "tracks": "https://bandwagon.fm/67867aca5511d3938d9273e5/pub/children",
    "type": ["Album", "Article"],
    "url": "https://bandwagon.fm/67867aca5511d3938d9273e5",
}

this is funkwhale

{
    "type": ["Album", "Article"],
    "id": "https://open.audio/federation/music/albums/5da038c4-841f-4bfd-938c-9a0323d999f5",
    "name": "Losing My Shit Vol.01",
    "published": "2026-09-19T12:57:11.384159+00:00",
    "musicbrainzId": "e3424f12-0a61-468d-9e9c-b602c3f9161d",
    "released": "2025-04-10",
    "attributedTo": "https://open.audio/federation/actors/FunkwhaleCollective",
    "tag": [],
    "artist_credit": [
        {
            "type": "ArtistCredit",
            "id": "https://open.audio/federation/music/artistcredit/ed08d21f-0f54-4486-8823-a635dff6a922",
            "artist": {
                "type": "Artist",
                "id": "https://open.audio/federation/music/artists/0cee84f2-e1b5-47f9-bcd7-f22c2096d950",
                "name": "DJ LM$",
                "published": "2026-09-19T12:57:08.131064+00:00",
                "musicbrainzId": "44dc3813-d66f-4dbe-a770-ee61d805550f",
                "attributedTo": "https://open.audio/federation/actors/FunkwhaleCollective",
                "tag": [
                    {"type": "Hashtag", "name": "#Bass Music"},
                    {"type": "Hashtag", "name": "#baile funk"},
                    {"type": "Hashtag", "name": "#booty"},
                    {"type": "Hashtag", "name": "#electronic"},
                    {"type": "Hashtag", "name": "#footwork"},
                    {"type": "Hashtag", "name": "#ghetto"},
                    {"type": "Hashtag", "name": "#jersey club"},
                    {"type": "Hashtag", "name": "#rennes"},
                ],
                "image": null,
                "banner": null,
            },
            "joinphrase": "",
            "credit": "DJ LM$",
            "index": 0,
            "published": "2026-09-19T12:57:09.233558+00:00",
        }
    ],
    "image": {
        "type": "Image",
        "url": "https://s3.eu-central-2.wasabisys.com/open-audio/attachments/c5/7a/5f/attachment_cover-5da038c4-841f-4bfd-938c-9a0323d999f5.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=69ST19MZXMKJ5ZP4NF6L%2F20260922%2Feu-central-2%2Fs3%2Faws4_request&X-Amz-Date=20260922T095126Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=d319be89da54ec8878fcacb133193cc92bf67a841bd51481ea7603550b685bcb",
        "mediaType": "image/jpeg",
    },
    "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        "https://funkwhale.audio/ns",
        {
            "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
            "Hashtag": "as:Hashtag",
        },
    ],
}

Do you have an example of a multiples artist object with a join phrase like ā€œfeatā€ on bandwagon ?