Project roadmap?

This is my uneducated take on a roadmap.

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 have no idea what drives people to contribute to open source projects. My model is: some number of users are drawn to the project, and some percentage of them have the desire / expertise to contribute. There are probably additional variables like how constructive the community is when a new user makes a suggestion. But, this is getting complicated.

If I’m right, then evangelizing beets, and tweaking features to make them more useful to novices, would lead to more developers on the project. I understand beets more now, but when I started, I was just making documentation suggestions or finding obscure parts of the source code that didn’t make sense. Those suggestions didn’t take much knowledge of beets.

There’s definitely a balancing act here. Beets probably shouldn’t be a kitchen sink, nor should our limited time be wasted on features nobody wants.

I’ll return to my idea of a novice-friendly beets later.


For anyone curious about AURA, here’s its Github page:

“AURA is a design for simple, REST API for music libraries. It’s the glue between music players and libraries of music.”


I would love to help on getting music recommendations and data visualization in beets. I know my contributions have been rare in the past, but I have a lot of background in statistics so I think this project would keep my attention. Some learning and discussion opportunities for me would be how these recommendations are sent to the user. Beets is a command line interface. Should it be a command like beet recs? Should there be a web UI?

I’ll throw in the idea of using Last.FM for listen totals. I see there’s a plugin in beets already, or users could be encouraged to import their data into ListenBrainz.

I wasn’t aware, but MusicBrainz added genre support in the last 2-4 years. Users vote on them, because they are subjective.

https://wiki.musicbrainz.org/Genre


Now, back to the idea of a novice user using beets. Up to this point, I have recommended beets to very few people, and always with the caveat that it has a steep learning curve. The question is: are there big improvements that could be made to the beets user experience with minimal effort? What might a novice user get out of beets? Or is beets just too complicated for a casual music listener, and we shouldn’t even bother?

My pitch, very much welcome to criticism, is this:

“Beets can organize your music library easily and safely. When you want more advanced control, you can fine-tune it to your liking, including:”

(the list from https://beets.io/ )

What does “easily and safely” mean?

Easily

  • The manual importer prompts should be completely avoided for new users.
  • The current beets philosophy is to “do it right, once and for all”. This would be more “do it half right, while still providing value to the user”.
  • More frequent usage of “asis” imports
  • Is it possible to import at the “release group” level rather than needing an exact release? It’s a crapshoot determining which release you have for popular artists.
  • Better autotagger matching
    – enable fromfilename and acoustID by default, and adjust those plugins as needed to accomodate
    – Luckily, a casual user is likely to have more mainstream music tastes, so hopefully Musicbrainz and the acoustID system would have greater success than you would get with some obscure 1980s vinyl.
  • smarter beets importer? Right now an easy way to get beets to choke is an unexpected folder format. Like /music/album1/disc1 and /disc2.
    – instead of going album-by-album, should beets go artist-by-artist? Once it’s through my whole library, it could look at all the Beatles albums and see that I have one called “Past Masters (Disc 1)” and another for “Past Masters (Disc 2)” and then decide to merge them.
  • As the autotagger improves, the user can go back and “autoimport” remaining albums again. Over time they might have few or no albums that the autotagger couldn’t handle. Of course, the manual import process would remain for those who want it.

Safely

  • No files left behind (using either extrafiles or copyartifacts (newer fork)). I haven’t used either of these extensively, but I know the original copyartifacts would hard-crash beets if it tried to manage an album cover that beets itself was already moving.
    – Beets should get everything on import, and pare it down later upon user request.
  • No data left behind. I couldn’t find whether or not beets preserves the original filename and folder path on import. To me this is a free lunch - not a lot of data, but an obvious feature a user might want. It builds confidence in the program knowing I could theoretically roll back anything that happens.
  • No files moved? Once a user’s library and config are perfect, they might want to move their library to one folder. But off the bat, maybe don’t move their files?
  • No freak accidents where files or data get deleted. I have no clue if this is a realistic goal, but some things that might help:
    – more backups of the files beets is working with
    – trash folder rather than insta-deleting files. There’s an existing issue for this.
    – cover autodownload should gracefully interact with existing cover.jpg files the user might have. Perhaps rename the original file to original-cover.jpg. I believe that right now fetchart is eager to overwrite local files with web sourced files.
    – should any plugin have the ability to overwrite a file?
    — Should this be a permission they explicitly invoke? Imagine a config option called delete with options ask and true. This ties into the base beets functionality too. Maybe it makes sense for beets as a whole to follow some kind of rules on deletes as well. Could there be a false option too? What would happen when the program tries to delete but gets false in return? Stop processing that track and move on to the next one?

Last suggestion (this post got really long!). Going along with getting more casual users to use beets, what’s the reward for them? There are some great bullet points on beets.io, but they are geeky (that’s the audience for beets after all!). Maybe it’s worth mentioning surface-level features?

  • Download cover art and lyrics
  • Import your local music files to Spotify playlists. (I took a quick look at doing this within Spotify, but there doesn’t seem to be an option?)
  • Visualize your music habits and get recommendations. (None of this functionality is in beets yet :stuck_out_tongue: )
  • (The rest of the existing list goes here.)