DESOSA 2022

Quod Libet: Product Vision & Problem Analysis

Introduction

The Quod Libet project aims to create an audio player that puts users in control of how their content is organized 1. The project is built in Python and based on the Mutagen music tagging library 2. It places a special focus on being feature-rich and customizable through plugins, and has an architecture which is designed to scale to extremely large music libraries.

Ex Falso is a related piece of software produced as part of the Quod Libet project. It contains a subset of the functionality of Quod Libet, providing tag editing facilities without the music playing features. This analysis focuses on the Quod Libet software only, but many points will also apply to Ex Falso.

Key Domain Concepts

To allow for a high degree of modularity, the music player models its domain in an abstract way. Its architecture divides the domain into the smallest possible number of high level concepts. Each of these has many specific implementations with their own behavior, some of which are provided as plugins.

One example of this is the way Quod Libet models music collections. Playlists, albums, directories, and even queues implement the same semantics, so that they can be treated interchangeably in the code.

Similarly, the user can choose from a range of browsers to navigate their music collection, ranging from a simple album view to a directory-like paned browser. These can have their own complex behavior on the user side, but they all implement the same semantics where they interact with other parts of the program.

Simpler concepts from Quod Libet’s domain model include types representing songs, play-orders, plugins, and the player itself.

Use Cases

Quod Libet is a large application with a diverse feature set 3, and its user base reflects that. The following are some typical uses cases of Quod Libet from the point of view of an average Quod Libet user.

Playing

Quod Libet allows the user to play a wide range of audio files such as MP3, Opus, FLAC, MPEG-4 and more 3. It provides standard functionality that is expected in a music player, such as the ability to go to the next song, go to the previous song, pause/start/stop and increase/decrease the volume of the music. It also provides additional functionality, such as support of multiple audio backends (JACK, Xine), a configurable play queue, multimedia key support, gap-less playback and real shuffle support (each song of an album is played before a song is repeated). Quod Libet’s capabilities are not limited to the user library:
integration with Soundcloud is possible, as well as listening to audio feeds and internet radio.

Organizing

Quod Libet also has a rich playlist construction toolkit, which supports manually building playlists, but also encourages automatic creation based on ratings, search terms, and metadata. A large collection of extra plugins exists to help the user manage, import, and export playlists and albums out or in the library, in addition to selective enhancements such as alternative research systems, alternative library organization systems, multi-device synchronization, and different tagging systems.

Searching

Quod Libet integrates all the features of a standard music player track search system, it however distinguishes from common music players by including an advanced search system. The search utility supports unicode-aware text searching and searching via regular expressions. It also provides the ability to search via boolean logic and arbitary python code. For example, the following filter will allow the user to listen to electro music but not rock.

&(electro, !rock)

This gives the user the power to perform more complex and specific queries, as well as the ability to save such queries in shortcuts.

Tagging

The Ex Falso subsystem gives the user to access a wide range of instruments for tagging, including tools that allow the user to define and recognize patterns in file and folder names to automatically import tags, independently of how the user to organizes its music files in the OS. Tags have full unicode support and Quod Libet has the ability to change tags for large collections of files at a time.

External Context

In the context of Open Source software, Quod Libet gives one of the most complete all-in-one solutions for audio-related entertainment needs, offering a wide range of features as a result of countless contributions. Quod Libet offers enthusiasts the chance to enhance their user experience with the functionalities they hold dearest in a media player, and to share their vision with the community.

Since its birth in 2004, the project has been shaped by users contribution in a solution worthy of competition with the most popular audio players when its completeness of functionalities its taken into account, appealing to both everyday users and audiophiles alike, while offering advanced instruments to professionally administer one’s personal audio library, all within the freedom and transparency that only an open source project could offer. Quod Libet appeals also to those seeking more choice in the customization of their user experience: the user is given complete control of its experience with options for personalization of the user interface, as well as a broader choice of features which can be added by enabling the extra plugins that come in the package.

Stakeholders

The stakeholders of Quod Libet can be divided into several group of interests, primarily to be identified in its everyday users. But the Quod Libet project also benefits those that are solely interested in the advanced tagging tools found in Ex Falso, in addition to the open source community in general as Quod Libet depends on and encourages contribution to a varied collection of packages.

Quod Libet music player users:

This type of user is primarily interested in using Quod Libet as a music playing system. They are generally interested in proper functioning of all functionality surrounding the music player itself.

This group can be further divided into casual users, and super-users. While casual users may care more about the default settings of the program, super-users value Quod Libet’s customizability and extensibility, making heavy use of plugins.

Ex Falso Users

Another group of users only depends on Ex Falso, or only interact with the subset of Quod Libet’s features related to tagging. Because Ex Falso’s code is a part of Quod Libet, these users can be treated as a single group.

This type of user is primarily interested in using Quod Libet to organize their music in their desired way. They are therefore more interested in the quality of all functions and plugins that support the organizing capabilities of Quod Libet. These type of functions can be thought of as displaying organized music in a clear way, proper functioning sorting tools etc.

Quod Libet’s authors and maintainers

The authors and maintainers of Quod Libet oversee the evolution of Quod Libet’s code. Quod Libet is open-source and open for customize plugins made by anyone. The maintainers and authors are in charge of allowing new contributions to merge in Quod Libet’s code. They benefit from proper written new contributions that improve the quality of Quod Libet for its music playing users and music organizing users. They guide the process of these contributions by having lists with good first issues for people who want to contribute and by offering a ‘help-wanted’ list with issues that could require some help. The Quod Libet team also has a Discord server, where users are able to discuss issues and suggestions directly with the team.

Linux package maintainers

Because Quod Libet is popular among the Linux community, it is important that the project uses relatively up to update libraries (for example GTK+ and Python), which make it easier to be supported as an official package on a number of popular Linux distributions. Package maintainers also generally benefit from a slower release cycle, though maintainers for different platforms will have their own values as well as be restricted by their own distribution guidelines. For example, the latest version of Ubuntu only offers Quod Libet 4.3 in it’s repositories 4, while Fedora 35 offers version 4.5 5. Such a discrepancy of versions can impact the user experience between platforms. Quod Libet also offers a Flatpak application 6, that allows the user to use the latest version of Quod Libet straight from the developers while bypassing traditional Linux package maintainers.

Free and Open Source Software Proponents

Quod Libet is highly popular within the Linux community as it’s a free and open source player that is an alternative to many proprietary music players on platforms such as Windows and Mac OS.

Quality Attributes

  • As a user-facing desktop program, Quod Libet naturally needs to put an emphasis on usability and performance. An extra emphasis on performance is necessary to create a product that scales to very large music libraries, as Quod Libet promises to do.

  • Quod Libet also markets itself as a multi-platform solution, something which requires special attention paid to portability.

  • Security is less central a concern for the Quod Libet project, because the program has little attack-able surface area.

Quad Libet also does not require an account or a connection to the internet to be usable.

Roadmap

Quod Libet names its releases semantic versioning (major.minor.patch), but doesn’t strictly adhere to the associated conventions for breaking changes.

4.6

Quod Libet’s point releases come infrequently, and can include significant changes to things like packaging requirements. Usually they involve batches of bug fixes, additional plugins, and updates to translations and documentation 7.

Generally, these releases contain all of the changes that were merged since the previous release. For example, the upcoming Quod Libet 4.6 is likely to feature additions to the player’s console integration, improvements to the queue’s UI, and a variety of small bug fixes.

Quod Libet may benefit from a more frequent release schedule, which would reduce how long bugs remain in the application. This may be made difficult by the process of packaging the program for multiple platforms.

5.0

Major releases come less frequently, and tend to include larger changes to the internal workings of the program. Unlike point releases, these also have milestones explicitly chosen ahead of time, and long-term goals which need to be reached before the release. For example, 5.0 will move to a newer version of Python, and change the way playlists are encoded 8.

GTK 4

A large number of Gtk based programs like Quod Libet have begun transitioning to Gtk 4 9, including the popular Linux desktop environment GNOME 10. In order for Quod Libet to provide the best experience possible to its users, it will eventually need to transition to the next generation of the popular graphical interface toolkit, however there are no official plans as of now.

Ethical Considerations

Quod Libet is a fully open source program written under the GNU General Public License v2.0 ( GPL-2.0 License)11. This means that anyone has the ability to use it (either commercially or privately), distribute it and modify the source code, as long as the license remains the same, the source is disclosed and changes are stated. This open source nature makes Quod Libet very appealing among the Open Source community who value the ethical considerations of the project, not only features. Within this community, if a program is not Free and Open Source (FOSS), then this is a bigger problem than for example, a missing feature. Since Quod Libet is a music player, digital piracy might be of concern to some. However given the free and open nature of the project, the Quod Libet team cannot and will not regulate what kind of music can be played since this is beyond the scope of the project. Quod Libet is just a music player, it’s up to the user to decide for themselves whether they will listen to pirated music or not.


  1. https://quodlibet.readthedocs.io/en/latest/index.html ↩︎

  2. https://github.com/quodlibet/mutagen ↩︎

  3. https://quodlibet.readthedocs.io/en/latest/features.html ↩︎

  4. https://packages.ubuntu.com/impish/quodlibet ↩︎

  5. https://src.fedoraproject.org/rpms/quodlibet ↩︎

  6. https://flathub.org/apps/details/io.github.quodlibet.QuodLibet ↩︎

  7. https://quodlibet.readthedocs.io/en/latest/changelog.html ↩︎

  8. https://github.com/quodlibet/quodlibet/issues/3465 ↩︎

  9. https://www.gtk.org/ ↩︎

  10. https://www.gnome.org/ ↩︎

  11. https://github.com/quodlibet/quodlibet/blob/master/COPYING ↩︎

Quodlibet
Authors
Richard Prihradský
Nienke Eijsvogel
Lorenzo Albani
Jackson Campolattaro