# How can we make beets easier to develop for?

**URL:** <https://discourse.beets.io/t/how-can-we-make-beets-easier-to-develop-for/2155>\
**Category:** Development\
**Created:** [September 10, 2022, 2:52pm UTC](https://discourse.beets.io/t/how-can-we-make-beets-easier-to-develop-for/2155 "2022-09-10T14:52:32Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![RollingStar](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.beets.io/rollingstar/32/728_2.png) [@RollingStar](https://discourse.beets.io/u/RollingStar)\
**Post date:** [September 10, 2022, 2:52pm UTC](https://discourse.beets.io/t/how-can-we-make-beets-easier-to-develop-for/2155/1 "2022-09-10T14:52:33Z")

</div>

See also:

> [@Request: Updated dev guide](https://discourse.beets.io/t/request-updated-dev-guide/1527):
>
> Seems there is some knowledge that isn’t in the dev guide itself. [https://beets.readthedocs.io/en/stable/dev/index.html](https://beets.readthedocs.io/en/stable/dev/index.html) The overall principle I would follow is document things unique to beets while give less/no detail on general development / Python development. If I get a handle on the content and formatting, I can put some of this information into the docs. How do I run tests? I got this [set up in VS Code](https://code.visualstudio.com/docs/python/testing) but I’m not clear on the relationship between tox and individual Python testing pack…

> [@I think we're losing most potential contributors before they make their first contribution](https://discourse.beets.io/t/i-think-were-losing-most-potential-contributors-before-they-make-their-first-contribution/2148/5):
>
> 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 i…

For me, my tricks of the python trade are debugging line by line (`pdb.set_trace()`) and lots of print / logging statements. In pdb, I also like inspecting the relevant objects.

iirc, all of these are a little tricky to do in beets. I can’t insert a pdb or print command if I can’t find the place that beets is doing something. Am I mistaken, or is it non trivial to get a log statement to actually print to the console, with the default beets logging handler? I think I ended up using print instead. How hard would it be to color code the logging?

Inspecting the objects works, iirc, but it’s information overload. there’s just tons of info in `Item` objects, and the docs could probably be better.

[https://beets.readthedocs.io/en/stable/dev/library.html#album](https://beets.readthedocs.io/en/stable/dev/library.html#album)

> An [`Album`](https://beets.readthedocs.io/en/stable/dev/library.html#beets.library.Album) object keeps track of album-level metadata, which is ( **mostly** ) a subset of the track-level metadata.

(Emphasis added). Skimming through this, I find myself wanting a table comparing items and albums. Which I think exists somewhere.

Another annoyance: conflicts between the stable/prod beets and a modified dev version. Going forward I will probably use a separate container with its own beets install.

> <https://github.com/beetbox/beets/blob/master/CONTRIBUTING.rst#getting-the-source>

I wonder if it’d make sense to throw together a container with latest github beets and a 5 album library to play around with.

Dunno how useful it would be, but here and there I’ve thought of something like a `dummy` plugin that makes empty files out of your real albums, to aid reproduction of bugs. this monster of a mozart box set is unwieldy to transfer but is a torture test for everything in beets, especially matching metadata and querying musicbrainz: [No time limit on candidate lookup · Issue #2446 · beetbox/beets · GitHub](https://github.com/beetbox/beets/issues/2446)

---

<div class="post-metadata">

**Author:** ![planetearth](https://avatars.discourse-cdn.com/v4/letter/p/82dd89/32.png) [@planetearth](https://discourse.beets.io/u/planetearth)\
**Post date:** [September 10, 2022, 3:05pm UTC](https://discourse.beets.io/t/how-can-we-make-beets-easier-to-develop-for/2155/2 "2022-09-10T15:05:31Z")

</div>

Please keep the discussion on the same thread…opening new threads is not going to help much.
