Django Music Publisher 20 “Twenty”


Work editing since 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.

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?

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.

JSON Export

The data can now be exported in JSON format. It is quite verbose and self-explanatory.

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.

20 Twenty

20-Twenty required more work than any of the previous versions, bar the initial one. Yet, for the end-user, little changed. But so many things changed under the hood.

Flat Settings

In previous versions, the settings were a complex dictionary. That made deployment to containers problematic. They were replaced with “flat” settings, with several completely gone. I doubt anyone will notice that the interface is not as configurable as it used to be.

Publishing Agreement Template

On the other hand, the publishing agreement template is no longer hardcoded to 50%/100%/100%, it can now be configured. As a consequence, writers’ affiliations with mechanical societies can be added when required.

CWR 2.1 Revision 8

New publishers, the target for DMP, are now being given 10-digit IPI name numbers. CWR 2.1 was not compatible, but a new revision came out with a solution. DMP was updated to comply with it. List of societies now includes almost all CISAC members.

Acknowledgement Files

Probably the largest change is that CWR acknowledgement files can now be viewed with syntax highlighting. While this may seem like an unimportant feature, when there are issues with registrations, it becomes the most important one.

Even shorter documentation

Once again, documentation became shorter and more precise. With a simplified installation procedure, much of it became obsolete. It is now targeting primarily music publishers.

Quality Insurance

The process of rewriting tests continued, most of the functional tests were rewritten. Also, tests received complete docstring coverage, as well as many comments.