I’m gonna write an FEP for audio objects. I will follow funkwhale implementation of AP.
@LLK and @bandwagon you might be interested to add things to this list. This will cover :
- description of audio objects (artist, album, track, playlists, playlist_track, tag, genre)
- how to support multiple artists (artist credit)
- how to share privately user data (listenings, favorites, private playlists)
- how to share privately audio streams (upload and library object)
- how to handle metadata conflicts
FYI devs don’t necessarily need to be planning to support ActivityPub in their own software/ service to get some value out of reading and commenting on this FEP.
FEPs are as much about standardising software federation in specific domains (eg music) in ways that harmonise as much as possible with other work in progress (eg Canimus), and with pre-existing protocol/format use (eg RSS, or open database formats developed for Discogs, Musicbrainz, etc). When FEPs do a good job of this, projects whose devs implement them automatically get some level of interoperation with music-related services that don’t use AP (yet, or because it isn’t relevant to their use case). Without having to go digging into those projects one by one and figuring out what they’re doing (as @kidlightbulbs seems to have to do for Unstream).
The more we can separate the interoperation of online music services into specific functions - along the lines of the microformats and IndieWeb approaches - the easier it will be for devs to start small, and implement only the specific types of interop that make sense to their projects.
So @LLK and @simon (@mirlo), @jam (jam.coop), @Jordan (SubJam), @simonrepp (FairCamp), @limebar /@TheIndieBeat (TheIndieBeat), @fluffy (Canimus), and @kidlightbulbs (Unstream), might all have valuable insights to contribute to the improvement of @petitminion’s FEP, whether or not they have any familiarity with or interest in AP.
Please note:
I wanted to spell all this out because I get the impression I’m perceived here as an AP zealot. I’m bullish on open interoperation over protocol standards, and having been following this space for a couple of decades, I do have strong opinions about particular protocols and their usefulness. But one thing I’m definitely not here to do, is to present any one protocol as the One Ring every use case ought to wedged into 
1 Like
Thank you for publishing this. I would love to support your flavor of ActivityPub going forward. Interoperation between FunkWhale (for listeners) and Bandwagon (for musicians) would be amazing.
Since this is the official “Discussions To” for the FEP, would you be able to a question about how this works?
I could never figure out how to link an artist (the ActivityPub Actor) to their list of Albums. How is this connection published? Ideally, I’d like to be able to find an artists and then crawl all of their albums.
To represent an Artist has an Actor on the fediverse, Funkwhale created the concept of Channel (see --batch --follow-symlinks would print ce013625030ba8dba906f756967f9e9ca394464a blob 6 And echo.). There could be various way to get the actor albums, the FEP propose to use the channel.actor outbox. Since this actor is different from the one managing the channel (channel.attributed_to) the outbox shouldn’t be filled with listenings / favorites or other activities.
more details : since the metadata is public, the channel.actor activities are mainly creating audio content (uploading files). The albums metadata associated to the artists is fetched using a graph approach : channel.actor → upload activity → track id → track metadata (including artist id, album id) → artist metadata / album metadata
we could also use the channel.library see --batch --follow-symlinks would print ce013625030ba8dba906f756967f9e9ca394464a blob 6 And echo.