I think we're losing most potential contributors before they make their first contribution

There are some advantages. But it’s complex to set up and maintain. It will always be more complex than “pay someone $15/month and go to an app and play what you want,” unfortunately. But we could take steps to document and promote how to do something comparable with beets as a foundation, and why the effort of doing it might be worth it.

I wrote the beets-ibroadcast plugin because then you get all the benefits of beets, but also streamability from the cloud. You control your collection, but it is also available from all your devices without needing to host any server-side components (e.g. beets-web or Beetle).

Something that might help prospective new users would be a guide highlighting real-world use cases. We could also combine this with testimonials linking into those guides. My personal testimonial is:

  • I can manage all my music including great searchability and playlist building, which includes some obscure music not available from popular services like Spotify and Amazon Music (this is the beets part);
  • I can play any/all of it from any device (the iBroadcast + beets-ibroadcast part);
  • I can track my listening habits by scrobbling to ListenBrainz (via web-scrobbler browser plugin), and gain access to metrics from that.

I could make a “how-to” guide walking people through how to set up this scheme.

Furthermore, this model doesn’t require iBroadcast specifically, just some kind of upload-my-music-files-to-the-cloud or host-my-own-thing service. I have considered generalizing beets-ibroadcast into a beets-sync base plugin with extensions for specific services, but I don’t know of any/many other good+free cloud services someone might want to sync their collection to. Maybe YouTube Music, but only if there is demand…

Maybe… but pragmatically, the most appealing benefits are out of reach even with development effort. I can’t (easily) add any of my beets tracks to e.g. Amazon Music, and I can’t (legally) download tracks from such streaming services to add to my beets collection, and there is no player (that I know of) capable of tapping into both sources and exposing a seamless combined collection. I’m either in beets/iBroadcast world, or Amazon Music world, and they cannot be combined. Sure, we could write a plugin that matches beets tracks to their corresponding Amazon Music or Spotify track IDs, and syncs playlists between them, but all the tracks in question need to exist on the target streaming service.

I would caution against making a GUI-based importer as a first priority. It would be substantial additional code to maintain, and the interest will keep shrinking over time, because:

But beets does not have to be about only local music files. What if we separated concerns a bit more, such that the beets DB could include entries for tracks in people’s cloud libraries? Imagine sucking your Amazon Music library into beets, and being able to perform queries on it. Imagine being able to use plugins like beets-goingrunning to build playlists for any supported backend, whether it’s your local collection or Spotify or Amazon Music or whatever? There are many beets plugins that ultimately do not care about files at all, only what’s in the database. Generalizing beets in this direction would broaden the appeal, and we might start netting contributions from folks who don’t even collect music files, but only curate cloud collections. Another benefit would be that users could switch cloud services much more easily, because they could sync down a cloud library to beets, then sync it up to a different cloud service, and only lose the songs that aren’t present on the new cloud.

How about some long-term requirements gathering? What do we wish we could do with our music? And how could improvements to beets help achieve those wishes—in a FOSS way, and uniquely compared to all the commercial stuff like Plex? Here is my personal wish list:

  1. Ultimate import i.e. metadata enrichment. For every track and album, know its ID on every metadata platform (MusicBrainz, Discogs, etc.) and every streaming service (Spotify et al.). Pull down all available metadata from all of those platforms and services, and put it in my beets DB, so I can do the most useful things with music I care about!

  2. Ultimate export i.e. sharing. From my beets DB, which is the central authority for music I care about, be able to export local playlists, as well as cloud libraries + playlists. Maybe (legal challenges aside) even upload metadata to a shared FOSS cloud resource (MusicBrainz, ideally—or would we need a beets DB online?), so that we don’t all have to repeat this effort in parallel forever.

  3. (1) and (2), but for all media I care about—movies, TV shows, podcasts, etc.—not only music.

I think beets can become more successful over time if we take steps toward this vision.

2 Likes