#microformats 2024-12-17

2024-12-17 UTC
[tw2113], Kupietz, gRegor, srijan, [jgarber], carrvo[d], peterkaminski, Tiffany, Guest6, [Joe_Crawford], barnaby, gRegorLove_, [snarfed], [manton], sebbu2 and [KevinMarks] joined the channel
#
benpate
Hello! I'm working bandwagon.fm -- on an open source server where indie bands can post and stream (and someday sell) their music online. The server currently reads some basic microformats, but I'd really like to go deeper with audio-specific microformats. My goal would be to open up interoperability (especially search) with people posting music via IndieWeb.
#
IWDiscord
<b​enpate>
#
benpate
I've looked through the old hAudio spec (http://microformats.org/wiki/haudio) for v1, and I'm wondering if there's any interest in updating this for v2?
#
IWDiscord
<b​enpate>
#
benpate
I'll try to get some thoughts together soon, for feedback. But if anyone wants to jump in with me early, I'd love to have your help!
#
benpate
[edit] Hello! I'm working bandwagon.fm -- on an open source server where indie bands can post and stream (and someday sell) their music online. The server currently reads some basic microformats, but I'd really like to go deeper with audio-specific microformats. My goal would be to open up interoperability (especially search) with people posting music via IndieWeb.
#
IWDiscord
<b​enpate>
#
benpate
I've looked through the old hAudio spec (http://microformats.org/wiki/haudio) for v1, and I'm wondering if there's any interest in updating this for v2?
#
IWDiscord
<b​enpate>
#
benpate
I'll try to get some thoughts together soon, for feedback. But if anyone wants to jump in with me early, I'd love to have your help!
#
Loqi
[preview] hAudio specification was placed into the public domain
#
Loqi
[preview] hAudio specification was placed into the public domain
[schmarty], barnaby and [fluffy] joined the channel
#
[fluffy]
Hello! As we were discussing in email, there’s a lot I don’t like about the hAudio specification as it exists right now. Starting with the name - “audio” covers a lot of ground, including podcasts, singles, albums, field recordings, samples, etc., and I’d rather see a much more focused name that’s specific to the class of what we’re trying to interop on.
#
[fluffy]
I guess in the 0.9 spec there are specific classes for “album” and a bit of a handwave of “item” which can refer to… a lot of different things, unfortunately.
#
benpate
Agreed. Interchangeable pieces are nice, but there comes a point when things are SO generalized that they aren’t useful anymore.
#
IWDiscord
<b​enpate>
#
benpate
How about something direct, like `h-album` and `h-track`
#
[fluffy]
Yeah there’s where I was leaning
#
[mattl]
I've been using p-music-track, etc.
#
[fluffy]
Oh, do you have anything in the wild we could consult?
#
[fluffy]
Also I’m not sure how that works as a p- element
#
[mattl]
using it on the embed stuff that was added recently.
#
[fluffy]
Ah, I’ve been curious about http://libre.fm, although I’m usually pretty confused about how to actually do anything with it.
#
[fluffy]
okay it looks like you’re making them properties on h-entry?
#
[fluffy]
like h-entry contains the track, p-music-track is the title, p-music-album is the album name, etc.?
#
[fluffy]
That doesn’t feel like it would work well for interop when it comes to exchanging data about albums as a whole
#
[fluffy]
Especially since there are many, many albums and tracks with the same name as each other
#
[mattl]
I don't think anyone else is doing anything like this.
#
[fluffy]
The use case that @benpate and I have been discussing is specifically for syndicating information about albums as a whole for things like http://bandwagon.fm, bandcrash, http://TheIndieBeat.fm, RadioFreeFedi, etc.
#
benpate
I’m only on a phone right now, so I can’t view source. But I’ll agree I’d like to say explicitly “this is an album” and “this is a song” — it will make it much easier for me to know what I’m looking at, and to add it into an album list.
#
[fluffy]
@benpate you can use http://pin13.net to parse out the microformats to get the structured data, e.g. https://pin13.net/mf2/?url=https%3A%2F%2Flibre.fm%2Fuser%2Fmattl%2Fscrobble%2F1733940140
#
benpate
Thanks! Checking that out now.
#
[mattl]
I'm not aware of what any of those sites do. Would you mind explaining them?
#
[fluffy]
http://bandwagon.fm is basically indieweb/activitypub Bandcamp. bandcrash is my own encoding pipeline that makes it easy to produce your own self-hosted website with embedded/distributable music on it. TheIndieBeat and RadioFreeFedi are streaming radio for indie music which would be consuming the data in order to find artists and their music.
#
[mattl]
What's wrong with Bandcamp itself?
#
[fluffy]
Aside from being a VC-backed commercial interest that loves to lock everyone in and doesn’t provide interop tools?
#
[mattl]
Break that down for me?
#
[fluffy]
They do publish structured data in the form of extremely grody LD-JSON though
#
[mattl]
VC-backed and commercial aren't relevant.
#
benpate
Yeah, think Federated, IndieWeb Bandcamp, and you’re 90% there
#
[fluffy]
Bandcamp is a silo.
#
[mattl]
Bandcamp is a store front, really.
#
[fluffy]
The use case here is to try to make it easier for music discovery stuff to find stuff that’s hosted in any number of ways, including one’s own website (e.g. https://sockpuppet.band/).
#
[mattl]
Are any artists using any of this yet?
#
benpate
Yes, and it’s a pretty good storefront, too. But people are worried that it’s getting (or going to get) enshitification by the new owner
#
benpate
Yes. I have ~130 bands on Bandwagon.
#
[fluffy]
There are several artists on Bandwagon, and this conversation started because Bandwagon has started working with TheIndieBeat for music discovery stuff, and I’d really like it to be more open to people who are self-hosting on platforms that aren’t Bandwagon.
#
[fluffy]
Oh also http://mirlo.space is another player in this, uh, space.
#
benpate
And, that’s holding off other people launching their own servers, because it’s too new. In Jan/Feb, there will be many other Bandwagon sites people can use, or self-host their own.
#
[mattl]
What's needed to run a server?
#
[fluffy]
Yeah, and as nice as Bandwagon is, I definitely wouldn’t want to have Yet Another Place to post my music in order to get it seen by the things that work with it - I’d rather just host my own site on my own stack and have it work
#
benpate
Thanks for mentioning Mirlo. There are a couple others, too. I’m hoping this Microformat effort will help us to interop with a number of other siloed systems.
#
[mattl]
I spoke to one person from "radiofreefedi" who sent me a few artists doing CC BY and CC BY-SA music, but it didn't seem to be very common.
[slack_sp] joined the channel
#
benpate
Bandwagon is pretty easy to run. Theres a Docker image that.. just works. It’s built with Go and Mongo, and depends on FFmpeg for media transcoding.
#
[fluffy]
Radiofreefedi is a discovery platform (which is, sadly, winding down) and was mostly based on people submitting their stuff to a person who would put a lot of time/effort/etc. into hand-curating things, which ended up not being sustainable.
#
[mattl]
Do you think bands will run their own Bandwagon sites? Or is that more of a label role?
#
gRegor
Aside, [fluffy], if you're streaming music in a browser you can use https://web-scrobbler.com/ to scrobble to libre.fm, similar to scrobbling to last.fm
#
benpate
Sites would likely be run by labels or coops. It’s possible to run your own, but probably unlikely.
#
gRegor
Works well for me with YouTube Music, haven't tried others.
#
[mattl]
Yeah, we point you there when you make an account now gRegor. Web Scrobbler and DeadBeeF for local collections of music.
#
[mattl]
I use it for Apple Music all the time. It's the main way I scrobble stuff.
#
gRegor
Yep, great little tool
#
[mattl]
Will these tools work with Bluesky too or are you only focusing on the ActivityPub stuff?
#
benpate
That’s a larger issue. I want to work with BlueSky, too, but implementing ATP will be a ton of work. I think multi-protocol is definitely the future.
#
benpate
Do you work with Go? Wanna help me build ATP?
#
[fluffy]
gRegor I’ve been using a combination of PlexAmp and Apple http://Music.app to listen to my own locally-hosted music collection, and getting them to work with http://last.fm was super easy, barely an inconvenience. But I don’t do web-based music streaming.
#
[mattl]
benpate: I'm too busy with http://Libre.fm and other stuff.
#
[tantek]2
btw last time discussions of audio and media were active, there was more movement towards using hMedia instead of hAudio
#
[fluffy]
Anyway my main interest is with the idea that I find a site that catalogs indie music and I can just point it to my music webpage and it can parse out the data in some form. I’m not super interested in worrying about things like push notifications or building a timeline or subscribing to a sea of updates from every musician on the planet.
#
[tantek]2
we should probably mark hAudio as abandoned somehow
#
[fluffy]
h-media would be a sensible name for the general concept yeah
#
[tantek]2
if there's interest in starting an h-media mf2 vocabulary based on hMedia, that's worth discussion
#
Loqi
[preview] Tim Aidlin
#
[fluffy]
also it’s worth noting that Bandcamp does provide LD-JSON although it isn’t documented anywhere, and what I’ve found from it seems like it’s suuuuper Bandcamp-specific
#
[tantek]2
I would start with (re)documenting today's use-cases you are trying to solve with interop across different systems
#
[fluffy]
Yeah that’s the thing, use cases should drive the protocol
#
[fluffy]
like http://last.fm is a pretty good target I think? (the site as a whole, not the scrobbling stuff, even though scrobbling seems to be all that anyone uses it for anymore)
#
[fluffy]
I guess http://musicbrainz.org would be a better example
#
[tantek]2
a whole site is not really a use-case though
#
[fluffy]
right but the things the site does is
#
[fluffy]
sorry my brain’s in a randomized state right now
#
[tantek]2
it's like what do you want to do as a human on site/service X to then have it do something else on site/service Y?
#
[tantek]2
the full set of lastfm functionality is probably not it either
#
[fluffy]
Like, as a musician I want to post my music to my own self-hosted website, and then have the data about it become available to things that index/categorize/filter music.
#
[fluffy]
As a music listener I want to be able to subscribe to updates about, say, bands, or genres, or get recommendations.
#
[tantek]2
[fluffy]++ that posting music than have information about it be available is reasonable. question is, is there actual interest / intent from both parties (obviously yes on your publishing side)
#
Loqi
[fluffy] has 1 karma in this channel over the last year (5 in all channels)
#
[fluffy]
Or also, hey wow this band is great, where can I find more of their stuff?
#
[tantek]2
but at this point, I would not hold my breath for the current owners of lastfm implementing anything
#
[fluffy]
yeah I’m definitely not saying that lastfm or bandcamp would be ones that would provide the interop
#
[fluffy]
I’m suggesting that having indieweb protocols (namely microformats) would make it easier for someone else eto build something that’s actually useful outside of the silo
#
benpate
@tantek I'll have to dig into h-media, but yes: if that's the best starting point, then I'd love to discuss a mf2 vocabulary for that.
#
[tantek]2
the other thing we have found is that if a use-case requires building of a new product or new product feature, that's also unlikely to happen just because someone proposed a standard somewhere
#
[fluffy]
yes but we already have at least two players who have built something where interop is useful: bandwagon and theindiebeat
#
[tantek]2
benpate are you building something to publish or consume such information or both?
#
[fluffy]
benpate is building bandwagon, which publishes
#
[tantek]2
that's encouraging [fluffy]!
#
[fluffy]
and it was his(? sorry for assuming) interop with theindiebeat which led me to start this conversation about broadening the protocol 🙂
#
[tantek]2
right, and one thing we changed with mf2 vocab development is making sure there are consuming code implementers in the conversation
#
[tantek]2
experience has shown that publish-only proposals / specs really don't go anywhere
#
[fluffy]
Yeah, but bandwagon has at least one consumer
#
[fluffy]
there’s also been a lot of other noise in that space because of other production platforms like Faircamp, Mirlo, Bandcrash, etc., and the imminent shutdown of Radio Free Fedi due to it being super difficult to actually maintain stuff and it all being hand-curated.
#
[fluffy]
Ever since Bandcamp sold out there’s been a *lot* of interest in indie music spaces for not ending up with another basket to hold all our eggs
#
[fluffy]
and Bandcamp never had particularly great discovery anyway
#
[tantek]2
what does the consuming code/service do today that's visible, and are they part of this conversation or is the code OSS so folks here can file PRs that would implementing consuming some new format?
#
[fluffy]
plus even before they sold out there were a lot of… worrying things about Bandcamp as a single-silo platform.
#
benpate
[tantek]2: I think there is an interest, at least for me. I'm publishing this data over ActivityPub now, and looking to open this information up in other ways, too. My goal is to enable a network of band sites to all contribute album and song information into a shared database. I think MF2 could be perfect for this.
#
[fluffy]
And I personally don’t have interest in adding the mess of ActivityPub to my music site. 🙂
#
[fluffy]
(but if this is something http://brid.gy could eventually add, well that’d be super)
#
[tantek]2
yup that part makes a lot of sense
#
[tantek]2
benpate, when you say "there is an interest, at least for me", are you writing consuming code? or only publishing code?
#
[fluffy]
@benpate What’s the relationship between you and TheIndieBeat?
#
[fluffy]
and would they be interested in joining the conversation?
#
[tantek]2
this "into a shared database" — is that existing or would that need to be built?
#
[fluffy]
like I assume the both of you have agreed on some sort of content delivery protocol
#
benpate
Yes. Bandwagon will *be* a consumer of this data, too, as a search engine that scans many indie sites (like Faircamp and others) . ActivityPub is hard, MicroFormats are easy, so if all those DIY sites can present their data in MF2, then I can add them to the search index.
#
[fluffy]
I think “database” is probably caring too much about implementation details here
#
[fluffy]
ah nice, I didn’t know about that part of your plan
#
[tantek]2
awesome
#
benpate
[tantek]2: I am building that now. It's a self-hosted music search engine anyone can run.
#
[tantek]2
very cool! is there a prototype we can play with to search?
#
benpate
[fluffy]: Sorry. Not trying to hide anything. There are many layers to this initiative.
#
[fluffy]
Not accusing you of that by any means! I just wasn’t aware of it is all. 🙂
#
[fluffy]
I only knew about the publishing aspect of bandwagon.
#
benpate
My code is all open source, on github.com/EmissarySocial/emissary. The search engine hasn't left my laptop, though. It's still very early.
#
benpate
Yeah, music discovery is a whole thing. I've posted this in the roadmap, if you're interested: https://bandwagon.fm/roadmap
#
[fluffy]
Personally I’d love to have some sort of microformat suite I can add to sockpuppet.band before I get around to opening up those templates
#
[fluffy]
Ah, nice, I must have overlooked that page.
#
[fluffy]
I knew your push was towards federation in general but I hadn’t looked into the details of what you meant by that.
#
benpate
@tantek - I've been skimming the h-media proposal. It looks fine for individual songs, and I like the ability to embed a player, too. I also need a way to *group* media elements into albums. Does the standard cover this, or would that be addressed in another section?
#
benpate
[fluffy]: Yeah, it's going to be really cool. I hope to have something demo-worthy by FediForum. The first step is to get "following" working on local data, then to build the web crawler that can pull in data from around the web.
[jamietanna] joined the channel
#
[fluffy]
One of the big open questions I keep having about this stuff is how to handle the relationship between albums and tracks that live on separate pages. Like, it’s pretty obvious that a page with an album (e.g. `https://sockpuppet.band/album/transitions`) can easily include the data for all of the individual tracks as well as having the links to the individual track pages. But seems a little wonky for each individual track (e.g.
#
[fluffy]
`https://sockpuppet.band/track/paper-cuts`) to include the full data of the album itself (including the other tracks), but should at least have a link of some sort to the collection that contains it.
#
benpate
Yeah, the SQL database engineer in my keeps wanting to normalize all the data. In this graph-database world, I think that would mean having a canonical URL for each record, with `rel` links up and down the hierarchy.
#
benpate
You've got individual pages for each album, and each song, so why not just lean into that with additional MF2 classes?
#
[tantek]2
benpate I think playlists and albums are related and perhaps that could be solved with a combination of h-feed for the "set" and h-media for the individual items
#
[fluffy]
I mean there’s also the whole like, okay so (for example) h-album contains h-track, but how does a page with just an h-track declare its relationship to its containing h-album(s)? (and note that it can be plural, one song can exist on multiple disparate releases)
#
benpate
Yes, playlists and albums are (pretty much) the same thing. I'll want to make sure we can get a little extra metadata into albums, such as release date, license, etc, but I think that's probably doable.
#
[fluffy]
… which just made me realize a shortcoming in how I set up my Publ-based album stuff, oops
#
[fluffy]
ooh yeah I guess “playlist” and “best-of compilation” are kind of the same thing
#
benpate
[fluffy]: Would this work? You could include a link to the album. `<a href="my.album.html" class="u-album">Album Name</a>
#
benpate
(or multiple links, if the song appears on many albums)
#
[fluffy]
I guess that works? Or u-collection or something. I’m not hugely a fan of having a different shape for containment depending on the direction though.
#
benpate
Yeah, if it was a database, we would just have a parentId, or something.
#
gRegor
Maybe some prior work on https://indieweb.org/collection, though not sure if with any specific microformats
#
benpate
And, looking at `h-entry` as an example, there's nothing that says "this entry is a member of this feed", so we'll need something like `u-feed`, `u-collection`, or `u-member-of`. ActivityPub has `part-of` when identifying CollectionPages in a Collection, but I don't think this is used to indicate an item, like a toot, is a part of a collection.
#
[fluffy]
Yeah `h-feed` in my experience just collects `h-entry` parts on it but the indiviual `h-entry` pages don’t ever link back to the feed directly from the `h-entry` itself, although there is often a `<link rel="feed">` on the page to provide feed discovery.
#
benpate
gRegor: True. Is there a difference between a "Collection" and a "Feed"? On the surface, I think I expect a feed to be updated in the future, but I'm not really sure how they'd be used differently in this context.
#
benpate
[fluffy]: Ew. Gross. 😛
#
[fluffy]
honestly most of what I do with mf2 is to do the minimum necessary to make http://brid.gy and webmention work 😛
#
gRegor
For the individual track permalinks, you could maybe use rel=prev and rel=next to link between each of them? Not sure about linking to the overall album, though. I'm not sure that's come up with h-feed examples yet.
#
[fluffy]
yeah I do have those, although those are just across my entire discography, not within a collection
#
[fluffy]
or at leaset I think I do
#
gRegor
Makes sense. Definitely gets complicated if a song is on multiple albums, too
#
[fluffy]
I do not
#
benpate
IANA lists `rel=collection` - that's also a possibility.
#
[fluffy]
I guess that’d be trivial to add to Publ, at least, and that’d be sensible from an mf2 perspective. Although another mf2 use case would be having a list of songs in e.g. a playlist and the individual items in the playlist having a link to the album it came from.
#
[fluffy]
but for that I think `u-album` or `u-collection` or whatever is a reasonable choice
#
[fluffy]
I just don’t particularly like the asymmetry where there’s no further structured metadata for the album/collection/etc. itself
#
[fluffy]
like having it be `h-album` with the `p-name` `u-url` etc. attributes makes more sense to me, but then you run into this cyclic recursion instead, because should that `h-album` in turn include all the metadata of the other tracks on the album?
#
benpate
agreed. what about this, albums contain songs (or links to songs) but songs only contain a `u-collection` that points back to their container. An item shouldn't contain its container, but it *could* include a link to it.
#
benpate
And, I think Albums should probably be something generic, like `h-feed` as tantek recommended. But, then I'll still need some kind of metadata that says "this is an album" or "this is a playlist"
#
[fluffy]
I think it’d be better to just consider that the `h-album` doesn’t have to contain the other contents.
#
[fluffy]
(or whatever name is chosen for the collection)
#
[fluffy]
since it’d be useful to have a means of associating other metadata like title/artist/label/etc. to the thing, rather than it being *just* a URL.
#
[fluffy]
but at the same time it’s not a huge deal for something to fetch the URL and retrieve the metadata from it.
#
benpate
Okay. That works for me. We really just need a link, anyway. Chances are that an album page leaves out a lot of information about its individual songs, for example, song lyrics, etc.
#
[fluffy]
oh wait there’s no mf2 on that
#
[fluffy]
my album pages include all of the nested data about the songs, including their liner notes and lyrics. and the same is true for Bandcamp.
#
[fluffy]
I guess I could try putting in some proof-of-concept mf2 and see how folks like it
#
benpate
Still, it looks pretty good.
#
benpate
We'd just need a way to say "this item is a song". An MP3 attachment would be nice, but there could be lots of reasons you have a song page without the actual song included. We'll still need to label it as a song, somehow.
#
benpate
(ditto for the album, ahem.. playlist, that contains it)
#
[fluffy]
hm, I’m actually running into a thing where trying to do nesting also messes up my fancy CSS grid tricks
#
benpate
Gotta love MicroFormats + CSS 🙂
#
[fluffy]
Okay I just figured out a workaround, and now that pin13 URL should show all of the detailed nested data for the whole album.
#
benpate
Looks good!