MusicBrainz Server update, 2020-09-21

React conversion tasks are conspicuously absent from today’s release, but that’s just because we needed to take some time to get it all working with the recent refactoring. This new server update mainly brings strong security improvements for the OAuth service. It also comes with a fair amount of smaller bugfixes and improvements. The most noticeable of these probably are the added details to the merge recordings’ form and the statistics by entity type on editors’ profile pages.

Announcement for MusicBrainz API users: A small but breaking change will be deployed on October 19th (in one month from now), to fix the JSON formatting of release packaging in search results (SEARCH-579).

A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the release notes for update instructions.

Thanks to kellnerd and loujine for contributing code. Thanks to calculator.ftvb, chaban, hibiscuskazeneko, jesus2099, kellnerd, lalinksy, psychoadept, rdswift, and spitzwegerich for having reported bugs and suggested improvements. Thanks to jesus2099, kellnerd, mfmeulenbelt, outsidecontext, and salorock for updating the translations. And thanks to all others who tested the beta version!

The git tag is v-2020-09-21.


  • [MBS-10880] – Series automatic ordering (without numbers) fails for new release group
  • [MBS-11065] – Smart link blocks affecting legitimate links
  • [MBS-11069] – Diff highlighting not visible for certain display resolutions
  • [MBS-11098] – Big Cartel URLs are denied for labels
  • [MBS-11101] – Series relationships not showing for work series


  • [MBS-2768] – Display AcoustIDs, Annotation and any other useful info when merging recordings
  • [MBS-7473] – Adding a new discid: Allow to specify the target by its releaseid
  • [MBS-11017] – Normalize IMSLP URLs to HTTPS and add validation
  • [MBS-11058] – Tighten security of OAuth service
  • [MBS-11061] – Don’t allow MusicBrainz URLs in relationships
  • [MBS-11062] – Link basic how-tos from the front page
  • [MBS-11086] – Add icon for tabs with errors in release editor
  • [MBS-11109] – Block further more smart links
  • [MBS-11119] – Set a Content-Security-Policy header on account/admin related forms

New Feature

  • [MBS-7485] – OAuth token revokation through API
  • [MBS-9769] – Show entities added statistics on editor profile page
  • [MBS-10835] – Disallow creating new accounts with an e-mail already in use
  • [MBS-11097] – Support PKCE (Proof Key for Code Exchange) by OAuth clients


  • [MBS-10921] – Clear editing history of unrelated recording-of relationship edits

MusicBrainz Server update, 2020-09-07

Beyond the restless conversion to React of edits’ display, this new release of MusicBrainz Server features the sidebar display of recordings’ acoustic information automatically computed by AcousticBrainz, and brings a handful of more discreet improvements and fixed bugs.

A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the release notes for update instructions.

Thanks to loujine for contributing the code to display AcousticBrainz data. Thanks to chaban, draconx, hawke, scotia, and yindesu for having reported bugs and suggested improvements. Thanks to kellnerd, mfmeulenbelt, salorock, and speardog for updating the translations (de, el, fr, it, nl). And thanks to all others who tested the beta version!

The git tag is v-2020-09-09-hotfixes.


  • [MBS-11000] – ISE when trying to display “Edit release group” edit
  • [MBS-11039] – Entity present twice in a series with different numbers appears with the same number in the Series page
  • [MBS-11074] – JavaScript is broken in IE11
  • [MBS-11075] – core-js polyfills are included twice in JavaScript bundles
  • [MBS-11076] – Size of data-context attributes used for React hydration bloats page size
  • [MBS-11077] – CritiqueBrainz reviews have disappeared
  • [MBS-11078] – Internal Server Error: undef error – TypeError: Cannot read property ‘names’ of undefined (hotfixed)
  • [MBS-11081] – Pregap info not shown in Add medium edits (hotfixed)
  • [MBS-11085] – Cannot edit 8cm CD release with disc ID (hotfixed)
  • [MBS-11089] – Homepage and blog favicons gone from sidebar (hotfixed)


  • [MBS-7409] – Make “cannot attach discid” more obvious when format can’t have discID
  • [MBS-10916] – Show AcousticBrainz info in the Recording sidebar
  • [MBS-10941] – Rename XML Web Service into “MusicBrainz API” (JSON/XML)
  • [MBS-11014] – Provide context to “This relationship already exists” on relationship editor
  • [MBS-11041] – Make ModBot leave a note on autoremoval edits
  • [MBS-11073] – Drop lodash in favor of native JavaScript methods

React Conversion Task

  • [MBS-10972] – Convert Add Instrument edit to React
  • [MBS-10986] – Convert edit error templates to React
  • [MBS-11032] – Convert Add medium edit to React
  • [MBS-11034] – Convert Remove medium edit to React
  • [MBS-11048] – Convert Edit Area edit to React
  • [MBS-11050] – Convert Edit URL edit to React
  • [MBS-11051] – Convert Edit Artist Credit edit to React
  • [MBS-11052] – Convert Edit Relationship Attribute edit to React

Other Task

  • [MBS-11043] – Add to the otherdbs whitelist
  • [MBS-11044] – Drop any references to no longer existing TOBEDELETED edit status

Picard 2.4.4 released

This is another bugfix release for the 2.4 release series of Picard, fixing a couple of issues discovered since Picard 2.4.2 and updating the Spanish and Hebrew translations.

Due to a last minute fix we had both a 2.4.3 and 2.4.4 release today, below is the combined list of changes:


  • PICARD-1916 – Picard crashes on older releases of macOS due to theming exception
  • PICARD-1918 – Saving files fails if there is no front image and “Save only one front image as separate file” is enabled
  • PICARD-1921 – Windows 10: With dark theme inactive checkboxes cannot be distinguished from active ones
  • PICARD-1928 – After clustering fingerprint icon disappears
  • PICARD-1931 – Regression: “Unmatched Files” do not appear when release was deleted from MB



Picard 2.4 is available for download from the download page. For Windows 10 users installing from the Windows Store an update will come automatically as soon as the new release has been approved by Microsoft.

Thanks a lot to all contributors who made this release possible.

GSoC 2020: Spam detection with online learning


Hello Everyone!!

I am Rohit Dandamudi, more commonly known as diru1100 in IRC and all other sites. I am currently doing my final year in Computer Science and Engineering at Chaitanya Bharathi Institute of Technology, Hyderabad. This summer, I had the wonderful opportunity to work with MetaBrainz Foundation and it’s my first time participating in GSoC. I worked on the SpamBrainz project under the guidance of yvanzo to make a step forward on eliminating spam in MusicBrainz.

How it started

I started looking for some cool projects to apply for GSoC, eventually, after going through some which were involved in the web development side, I finally got to know about the MetaBrainz Foundation, and it was already pretty late (around 2½ weeks before the proposal deadline), most of my fellow GSoCers were already in good rapport with the community by then. After looking through the project ideas, I wanted to do my project on CritiqueBrainz, but later I found out that it’s not considered for this year. In the end, I liked the concept of SpamBrainz and how it involves a good combination (Deep Learning and Web Development) of technologies. After browsing through the project I understood what I could and tried to make some changes to the codebase and was successfully able to run the model and add some documentation. Finally, I submitted the proposal, which got accepted.

The proposal

My proposal was focused on extending the work done by Leo as part of GSoC 2018. It mainly involved the following:

  • Do the research and implement online learning to:
    • Update the model dynamically as new variations of editor spam accounts appear.
    • Make the model self-sufficient without depending on a particular file or a batch of data.
    • Explore different types of learnings that are applicable to enhance LodBrok and for better performance in production.
  • Complete SpamBrainz API to:
    • Use and update the model with API calls.
    • Connect LodBrok with MusicBrainz Server.
  • Do detailed documentation to make the project more public and involve more contributors


LodBrok model improvements

Research for model live update

SpamBrainz API

  • Incorporated the above research in SpamBrainz API, which consists of 2 endpoints, namely:
    • /predict to return classification results by LodBrok for the editor accounts
    • /train to retrain the model with incorrect results sent to SpamNinja respectively
  • After discussing with Leo, I decided to implement the API using Flask and Redis combination. Going with Redis over RabbitMQ for this API is feasible as the API is pretty lightweight and has at most 2 events.
  • Documented the entire API, with internal working, steps to replicate, and images to understand the results obtained.
  • Completed dockerization of SpamBrainz_API for easier integration and testing with MusicBrainz docker.
  • This diagram explains the current workflow of the implemented API:diagram explaining the current workflow of the implemented API

Challenges ahead and future of SpamBrainz

  • The API has to be integrated with MusicBrainz and should undergo more testing with real live data, currently, my focus is on this part.
    • Note: All the work done till now on the model was on dummy data generated by scripts that tend to replicate the real accounts as much as they can be, by taking into account the inputs from Freso, yvanzo, and the analysis done by Leo, without affecting the data privacy policy.
  • To extend online learning to other use cases in MetaBrainz through Transfer Learning and Online Transfer Learning.
  • Also looking forward to writing a research paper about the work done, and eventually publish it in IEEE transactions, as I plan on using SpamBrainz as my final year major project.

Special thanks to…

  • My mentor, YvanZo for being incredibly patient with me, helping me create quality commits, and overall making me a better programmer. Have always learned something new in every interaction with him.
  • LeoVerto, for helping me out whenever stuck and getting me up to date with the project.
  • MetaBrainz Foundation, for creating an open, inclusive, and productive environment to build some amazing stuff.