Django Music Publisher 19.7 Metanoia


Work editing in Django Music Publisher 19.7, a complete minimal example with society-assigned agreement number and ready for royalty statement processing

This article is about the development process and underlying reasons up to the current stable version, which is 19.7 Metanoia.

Previous Versions

18.7 to 18.11

When I started working on Django Music Publisher in July 2018, I made it only as a proof-of-concept for CWR-related API I had finished just a few weeks before. I released the next version just one month later, then another in the next month, then another two months after the third one … it pretty much seemed like a Fibonacci sequence…

19.1 Epiphany

With version 19.1, Django Music Publisher has become pretty complete and had all the main features I originally envisioned and it was no longer dependent on my API. It became truly free software. And it was also the first version I properly planned.

Between Versions

In January 2019, I started, a service that provided installation, simplified configuration, hosting, regular upgrades and technical maintenance for Django Music Publisher instances for a small monthly fee. This service accepts no new clients, as with the next version of DMP, the default deployment will be to Heroku.

Music Pub Cartoons

I started making promotional/educational cartoonish videos. Pretty geeky, I am told.

19.7 Metanoia

There are several reasons why it is July. I usually have a bit more time in July. Django, the web framework Django Music Publisher is built upon. And, well, to release it a year after the initial version also somehow feels right. But, what is new?

With the next version planned for January, once again as I have more time during the holiday season, the release cycle of 6 months between major versions is pretty well set now.

Cleaning up under the hood

Most of the time, developers just add more code. I am no exception here. After a while, however, things get messy. So, I reviewed pretty much everything and decided to completely rewrite JSON exports, CWR generation, and most of the tests.

Common Works Registration 3.0


CWR 3.0 with syntax highlighting

CWR 3.0 submissions and ISWC requests are included, now with basic syntax highlighting included in the open-source code. And they are downloaded zipped, in accordance with CWR 3.0 delivery specs.

Multiple Recordings per Work, Multiple Releases (Albums)


Library Release editing in Django Music Publisher

Multiple recordings per work can now be added. Each recording can now be included in multiple releases and there is a clear distinction between library and commercial releases. This will become extremely important in the future.

New JSON Export Formats

The data can now be exported in two JSON formats (normalized and denormalized), and they are quite verbose. And the data can be turned into CWR, DDEX, and many other formats. Actually, this is what Django Music Publisher does under the hood.

Interface Improvemens

The interface has also received many small improvements. Filters now automatically turn into pulldown menus when the number of options is four or more. Navigation between related objects is now faster and far more intuitive. Etc.

Better Documentation

The documentation is shorter but more precise. It also has examples of some not-so-obvious features. Below is a screenshot from the documentation explaining how to enter co-published works.


Co-publishing example in Django Music Publisher

Gone with the Wind

Several things are gone, most notably the support for multiple entities in US PROs. It was a hack, powerful but hard to explain. US publishers with multiple entities can use separate instances for each of the entities, and if it is too much work, well, then they need a bigger tool. As a result, installation and configuration are much simpler for everyone else, despite all the enhancements.