Project roadmap?

Hello! This is a really great question. I would love to work on a roadmap of some sort—we have never really done one of these, and I think it would be awesome to put some longer-term, strategic thought into what we want to accomplish.

For some project management context, I have for some time been looking for volunteers to help form a “core team” of contributors to guide the direction of the project:

I got a few bites, but not quite enough momentum to really set up the structure for such a team. Maybe it would be good to revisit that effort in the context of a roadmap definition problem.

As far as what should actually go on that roadmap, IMO the most immediate thing we should do is drop Python 2 support. We should release a version (1.5.0) that will be the last version to support both Python 2 & 3. Then we should ship a new version with lots of hacks removed in fairly short order.

Then there are more ambitious projects to think about. I have had three big things on my mind:

  1. AURA. I have been excited about the potential of finishing this API for some time. I think it’s especially urgent in the time of monolithic streaming services like Spotify. There are many good self-hosted music streaming projects out there, but they are all one-offs. They would be stronger if they shared a common infrastructure. Imagine being able to use beets for your library management but wire that up to a separately developed Web-based streamer, another app for desktop streaming on a Mac, and other apps just for mobile streaming on your phone. I have many more thoughts on the potential here, but the key is polishing off the AURA spec, blessing a v1.0, and implementing a full server as an official beets plugin.

  2. Antisocial music recommendation. Also on the topic of the modern era of streaming services: one of the things that everyone seems to love about them is their recommendations—i.e., the help they give the user in deciding what to listen to. Personally, however, I don’t usually like the algorithmic recommendations I get from most services. In conjunction with AURA-based players and ListenBrainz, I would love to investigate less conventional approaches to recommending music to listen to—preferably privacy-preserving ones that don’t depend on aggregating lots of data about users’ listening habits. Things that are based mostly on your own listening, like these:

    • Resurface music I have listened to a lot but not recently. Or explore your music by seeing how your habits evolved over time (what were my top albums from last month, last year, last decade, etc.).
    • Let me enqueue an album to listen to later from my phone when I think of it—even if I’m not listening to music right now.
    • Synthesize a new playlist that lasts an exact number of minutes to help with timeboxing.
    • Even just random selections from my library would be better than alphabetical-by-artist the UI most services use, which makes me listen to the A and Z artists more than anyone else!

    We could create a framework for experimenting with this kind of privacy-preserving music recommendation technique.

  3. Alternative importer interfaces. Abstract out the current terminal interface to the importer so other interfaces can do the same stuff—a GUI interface in the browser, for example.

Anyway, I’m obviously still excited to explore potential paths for the future evolution of beets! I think we’ll want to choose exciting and ambitious new directions that are not currently part of beets’s “core competency” of importing unsorted music and querying it. I’d be really interested in exploring ambitious ideas along these lines.

3 Likes