Beets as a use case for (master) thesis

Hi, I’m in the process of choosing a project for my masters thesis (computer science + engineering). I have been using beets for a while and now I’m playing with the idea of beets as a use case for my thesis. The motivation being to contribute to beets in some way.

I have some ideas as to what I could do. However, before I get too carried away, I would love to get some feedback from those involved:

  • do you find beets as a suitable use case (research-able)? With the open nature of the project, the process might be delicate? Or not?
  • what can be considered to be a “contribution” to the beets project? Analysis, prototyping, testing, changes, development.
  • what questions am I forgetting to ask myself/others in evaluating use cases?

Any thoughts or inputs are greatly appreciated! :slight_smile:

Edit: I have been playing with the thought of ent. architecture and modelling approach to identify improvements ++ (horisontal approach to produce research questions). For example semantic db (graph db), architectural optimizations etc.

Welcome @89qagGF7, and thank you for using “contributing to beets” as a motivating factor for your masters thesis!

This seems like an awesome idea, but I’m definitely not the best person to answer this, so hopefully someone else can come along and do a better job. What I can do, is perhaps clarify what you’d like to accomplish.

You’ll have to forgive my ignorance on the subjects presented, but would you mind putting this into more layman’s terms?

I think all of the above! We are grateful for any type of contribution. Were you looking to do more coding or more like an analysis of how beets is run?

1 Like

Correct me if I’m wrong, but I don’t think we have a good understanding of what beets components eat up performance. It’s probably the SQLite engine and the inefficient queries being created, but I don’t think it’s been measured.

Sounds great!

I’ll have to agree with the others here: I don’t quite follow all of your ideas here (I also lack formal training in CS, however). As @RollingStar mentioned, beets’ database backend does require some rework; search the github issues for: multi-valued tags, the attachment proposal, and various performance issues. Resolving these issues properly including benchmarking to make informed decisions and the eventual implementation is certainly a larger undertaking. Whether it suffices for a masters thesis, I cannot really judge. I imagine it could indeed qualify as research-able.
However, I’m not sure whether switching to an entirely new database engine is desirable and feasible (I suppose that is what you suggested with “graph db”):

  • We do need to remain backwards-compatible (which is not an insurmountable problem given appropriate database upgrade code).
  • the graph database paradigm might be overkill: It is not a goal for beets to replicate a subset of the musicbrainz database locally including all the relations. Rather, for simplicity, a flattened version is stored, where only tracks and albums are entities of their own. @adrian made a comment about this somewhere recently, but I can’t find it right now.
  • Any new database engine should be open-source and ubiquitous. SQLite is probably hard to beat here, so no switch should be done prematurely

If someone did the research, and it turned out that SQLite really cannot provide the performance for beets usecases, other engines could certainly be considered.

Aside from the database backend, there might be some project ideas in Project roadmap? thread.

Have you thought about supervision for your project? beets is run in the spare time of only a handful of people, some of which are self-taught programmers who did not study CS. I’m not sure anyone can guarantee (please correct me, @ all!) to be available for extensive mentoring. Is there someone from your institution who could step in? I’m sure we can be available to review code on github. Nevertheless, if you end up seriously considering beets as your masters project, I think it would be important to check back with beets’ core contributors how much time they expect to have during the period of your research.


Enterprise architecture and modelling is an approach/methodology that use various “views” to analyze an “enterprise” (and in this context beets = “enterprise”). Its a way to connect f. ex physical network analysis, software states, user interaction. It can be used for analysis or as a basis for improvement. ish.

I have to check if performance could be applied for the supervisor’s research in some way. Thanks for tips.

I can either use an external supervisor (not affiliated with my department, however, there are formal requirements) under the supervision of the department. -Or some supervisor at my department. Normally, we choose amongst projects that various researchers have suggested (internal + external). Due to unfortunate events (hospitalized) I did not get the chance to choose a project. I am now trying to find a project that motivates me and not loose a year of study.

I’m not expecting any mentoring per se from the contributing developers. My primary goal is to find a project that motivates me and to contribute in some way. In that context it would be ideal to focus on something that the developers find beneficial.

edit: If anyone has the formal requirements and need some research done that fits the context, I would be willing to discuss anything from supervising to ideas. Travel every other week or physical attendance for weeks/months is no issue (internationally). -if covid allows it that is.

It sounds interesting! I’m still not really able to understand what the analysis might entail:

I’m not familiar with the terms “physical network analysis” or “software states” or what might happen with user interaction. Maybe some concrete examples would be helpful?

It was a clumsy explanation, my apologies.

Its a technique, method and tool for modelling, finding and preparing potential improvements. Specifically its a computational representation of the structure, activities, process, information, resources, behavior, goals and constraints.

There are several proposals to how to do this, for example 4EM (one of several EM methods) use perspectives / views to achieve this. So in the context of beets it could be: software architecture as a view (modelling). The user interface could be another (modelling).

This is approach is just a suggestion of something I think can be an interesting way to compute changes. Its not a requirement at all. I’m majoring in information systems and tech management, so my contributions are best applied with that in mind.

I have sent an email with a report where I applied this whole approach. From modelling, computing potential improvements and suggestions of how to apply such suggestions. I dont know if the devs have some mailing list, but should someone be interested feel free to share it.

Hmm, I see! Maybe one way to get a little more clear about this might be: what would be the first few things you would do, if you were to do this project? Like, would it be interviewing people, reading code, writing code, or something else?

The first steps would be a prestudy (horisontal focus). Thesis is made up of 2 parts, each being half an academic year. So first steps for first part would be:

  • Producing 1-3 research questions
  • Project mandate (such as formalities, organisation and constraints)
  • Technologies (f. ex python, groupware, project organisation). In essence every technology used in the study + use case.
  • Domain (f. ex data, formats, tagging standards. Including where data is fetched from etc). All dependencies, informational architecture and patterns.
  • Code analysis (f. ex structure, patterns/anti-patterns, security, benchmarks)
  • Quantitative approach to answer the research questions (f. ex benchmarking, measurement or surveys). Development (can be code, modelling etc). Prototyping might be used to measure some hypothesis in relation to beets.
  • Discussion on the findings and some answer to the research questions

From there it would be a vertical focus / research based on the findings of the prestudy and the findings (part 2 of thesis)

Thats currently what I have come up with / what I think would be the first steps.