monodeldiablo edited this page Sep 13, 2010 · 3 revisions
Clone this wiki locally

Welcome to the developer wiki for Hum, the low calorie music manager!

Hum aims to be simple, flexible, and easy to use. It should not be all things to all people (some people have some pretty odd fetishes about how they experience their music), nor should it serve a severely focused audience with specific tastes. Instead, Hum should serve as a sane and functional default, a clean and well-integrated piece of software that takes no time to learn to use and gets out of the way quickly.


The guiding philosophy for the design and development of Hum can be summarized as:

  • Keep it simple
  • Keep it lightweight
  • Reuse existing technologies
  • Minimize dependencies
  • Do things the Right Way™

To achieve these goals, we rely on an excellent platform (GStreamer, Tracker, DBus, GTK+, Vala) that does most of the difficult stuff for us. Wherever possible, please try to keep this philosophy and the capability of these tools in mind as we push Hum toward perfection.


Hum makes use of the MVC pattern to separate data management, business logic, and presentation logic into distinct layers. Furthermore, Hum defers entirely to Tracker for the effective management of data. This means that, effectively, the management, storage, and indexing of audio data is a black box to Hum, and we’ve devoted less and less code to it as Tracker’s functionalities have increased.

Because Hum doesn’t concern itself much with data management, it’s further simplified into only two functionally distinct layers: playback and playlist management (hum-player), and GUI presentation and user interaction (hum-gtk).

To learn more about hum-player, take a look at Backend Design.