MusicBrainz Server update, 2019-06-30

Today’s release contains some new features/improvements to the web service, several entity index pages being rewritten in React, and tweaks to the edit expiration wording to make it less confusing. See the tickets below for more details.

Thanks to kepstin for helping test the new CORS / OPTION support in the web service.

We’ve also released a number of new changes to the beta server (which as a reminder uses the live, production database), particularly collaborative collections, if you’d like to help test those!

The git tag for today’s release is v-2019-06-30.

Sub-task

  • [MBS-9923] – Convert the URL public pages to React
  • [MBS-10105] – Convert the instrument index page to React
  • [MBS-10106] – Convert the place index page to React
  • [MBS-10122] – Convert the event index page to React

New Feature

  • [MBS-10124] – Allow to browse recordings linked to a given work through web service

Improvement

  • [MBS-6033] – Allow CORS preflights
  • [MBS-6072] – WS: Answer OPTION requests
  • [MBS-9732] – Change “expires in” wording/phrasing
  • [MBS-10197] – Remove unneeded data quality edit code

MusicBrainz Server update, 2019-06-03

This server release mostly fixes bugs and regressions. It also updates the URL cleanup code and continues the conversion of templates to React.

Thanks to CatQuest, cyberskull, hibiscuskazeneko, Jeluang, Lotheric, mfmeulenbelt, tungolcraft, yeeeargh, and everyone who tested the beta version, reported issues, or updated website translations.

The git tag is v-2019-06-03.

Bug

  • [MBS-8826] – /ws/ requests that 404 should not return HTML
  • [MBS-10141] – Labels from Trois-Rivières should appear 1 layer up in labels from Mauricie
  • [MBS-10147] – Reports break if an entity in them has been removed / merged
  • [MBS-10148] – Can’t change entity type of empty collection
  • [MBS-10153] – Database statistic tables’ headers’ icons are 404s
  • [MBS-10160] – YouTube channel link that uses the https://www.youtube.com/c/username format won’t have the username shown in the sidebar
  • [MBS-10163] – “Javanese” does not show in instrument Alias page
  • [MBS-10167] – “Existing medium” results give medium position, not number
  • [MBS-10171] – ISE when calling ws/js with a wrong ID
  • [MBS-10182] – Some artist /relationships tabs show an internal server error
  • [MBS-10183] – Regression: Display bug in the title of page crediting the artist (Release Group, Release, Recording)
  • [MBS-10184] – Regression: ISE on displaying some edits
  • [MBS-10196] – XSS vulnerability in Knockout for IE <= 7

Improvement

  • [MBS-9762] – Standardize Songkick URLs
  • [MBS-10095] – Provide a better error than an ISE if trying to admin edit non-existing user
  • [MBS-10108] – Allow linking individual tweets to recordings
  • [MBS-10142] – Update URL cleanup for Sina Weibo URLs + add them to the sidebar
  • [MBS-10151] – Update LiveFans URLs to use HTTPS
  • [MBS-10152] – Display artist areas on Artists tab of area entity

React Conversion Task

  • [MBS-9849] – Convert the release group public pages to React
  • [MBS-10104] – Convert the area index page to React
  • [MBS-10127] – Convert root/components/relationships-table.tt to React
  • [MBS-10189] – Convert the place performances page to React

MusicBrainz Schema change upgrade downtime: 17:00 UTC (10am PST, 1pm EST, 19:00CEST)

Hi!

At 17:00 UTC (10am PST, 1pm EST, 19:00CEST) we will start the process of our schema change release. The exact time that we plan to start the change will depend on how long it takes to finish our preparations, but we expect it to be shortly after 17:00UTC.

Once we start the process we will put a banner notification on musicbrainz.org and we will also post updates to the @MusicBrainz twitter account, so follow us there for more details.

After the release is complete, we will post instructions here on how to upgrade your replicated MusicBrainz instances.

Automating the voting system

MetaMetaData

For the last several years, one of the things our community has struggled with is a lack of active voters. We’ve tried to implement various measures to decrease the need for voters and load for the wonderful ones that actually do actively look through edits and help vote on them—e.g., making more edits auto‐edits and decreasing amount of time edits stay open. However, the edit queue is still quite unwieldy and as such we’ve kept trying to come up with other ways to decrease the load on our contributors.

Over the past few months since our last summit, we’ve been working on training AIs, both for recommendation engines and data analytics, and for helping out with spam, but it soon appeared that we had another valuable dataset: our history of 15,693,824 votes from 16,336 voters and 56,374,198 edits from 2,007,134 editors. It turns out that this is an unintended side-effects of the editing and voting system in that it creates a paper trail of our habits as a community and our collective mind.

A paper trail that you could, say, train a neural network on. And that’s just what we did.

By feeding data from our top voters, we’ve been able to train our network to replicate with 96.4% accuracy the personality when using the other half as test data. That figure is the average for 300 bots each based on our top 300 voters.
We were really impressed with the results but the story doesn’t stop there…

Meet BrainzVoter

The next logical step was to create our own Frankenstein’s monster. By training on 70% of our entire set of votes, we gave birth to a voting bot that represents the essence of our community. “BrainzVoter”, as we dubbed it, is precise and scores a staggering 98.9% accuracy on test data and comparing with the other 30% of our dataset.

To quote the late Terry Pratchet:

Ankh-Morpork had dallied with many forms of government and had ended up with that form of democracy known as One Man, One Vote. The Patrician was the Man; he had the Vote.

Edit filters

In view of the recent developments on net neutrality taken by the European Union with articles 11 & 13/17, MusicBrainz is taking measures to protect against copyright infringement: we’re implementing automatic edit filters. BrainzVoter will use the latest in NLP technology to understand what you, the editors, write in your edit notes, and use this understanding to vote on your edit. It will also inspect any URLs included in the edit note to cross-reference the data. The aggregate data will not be available to the public.

Edits with better and clearer notes will become more likely to pass. Consider this a good opportunity to (re‐)read How to Write Edit Notes!

How will this affect me as an editor?

Not much will change, and you can continue doing what you were doing before! We recommend that you take the time to make clear statements in your edit notes.
You will also be able to use a system of tags to express intent, using for example #typo #correction in the content of your edit text. Syntax highlighting and shortcuts will be available in the text editor.

In the end, by removing the need for humans to look over edits, the bot should give you, the editor, more time to add and edit and fix data in MusicBrainz, without having to spend time checking everyone else’s edits or worry about other editors disagreeing with yours!

After a brief trial period on MusicBrainz, this system will be adapted and also rolled out to BookBrainz.

We hope you will share our excitement for the benefits of automation and help us improve our training models over time. I, for one, welcome our AI overlords.

Picard 2.1.3 released

Picard Team is proud to announce MusicBrainz Picard 2.1.3 is now officially released.

It includes a lot of bug fixes, and few improvements, but no major feature.

Thanks to all developers, translators, testers and users who contributed to this version, and especially Philip Wolfer (phw/outsidecontext).
Here is the complete changelog:

Bug

  • [PICARD-323] – Only the discid of the first disc in a release is written to tags
  • [PICARD-455] – Picard setting cover art height, width and depth to 0 for FLAC files –> breaks libFLAC
  • [PICARD-729] – Tracks get stuck at “[loading track information]” on Bad Gateway errors
  • [PICARD-938] – Need two left-arrow key presses to go from track with file to album
  • [PICARD-1178] – Images tagged with extra types that the user has chosen to ignore should not be shown as ‘modified’
  • [PICARD-1288] – Folskonomy tags / genre fallback on album artists tags not working
  • [PICARD-1422] – Windows: Uninstall 32 bit Picard before upgrade
  • [PICARD-1447] – When releasing a new version, appdata should also be updated
  • [PICARD-1460] – Windows installer does not detect running instance
  • [PICARD-1461] – Crash when running with Spanish language
  • [PICARD-1463] – Picard crashes on startup on Windows
  • [PICARD-1469] – Force close when adding songs to larger albums
  • [PICARD-1471] – Artist searches do not show begin and end area
  • [PICARD-1473] – AcoustId lookup fails if fingerprint already in tags
  • [PICARD-1474] – Windows installer shows outdated version string in file properties
  • [PICARD-1475] – Cover art sources do not support HTTPS
  • [PICARD-1476] – Filled up thread pool prevents metadata box updates
  • [PICARD-1478] – Changing MB server requires a restart
  • [PICARD-1480] – Search line input clear button icon is too small

Task

  • [PICARD-1459] – Remove OptionsPage.info method
  • [PICARD-1472] – macOS code signing on Travis CI fails for xcode7.3 image

Improvement

  • [PICARD-1242] – Consider the number of AcoustID sources for linked recordings
  • [PICARD-1457] – “Check for Update” should be in the Picard menu
  • [PICARD-1458] – “Check for Update” should have an ellipsis at the end
  • [PICARD-1470] – Make warning about Qt locale loading less prominent

As usual, packages will be available from Picard website and from GitHub release pages

Bugs can be reported on Picard bug tracker.

Picard 2.1.2 released

Picard 2.1.2 includes just few changes over Picard 2.1.0, but fixes some annoying bugs, so it is recommended to upgrade:

Bug

  • [PICARD-1382] – macOS packaging script ignores all errors
  • [PICARD-1451] – Redirects of authenticated requests fail with 401 error
  • [PICARD-1454] – Crashes when adding action to toolbar in options

Task

Improvement

  • [PICARD-1450] – Fix language label for zh_CN and zh_TW

As usual, packages will be available from Picard website and from GitHub release pages

Bugs can be reported on Picard bug tracker.

Picard 2.1 release

MusicBrainz Picard 2.1 is finally here. This version includes a lot of fixes and improvements over previous stable version (2.0.4). It is recommended to upgrade of course.

Most notably, it includes following changes:

  • support for MusicBrainz genres
  • new convenient script functions: $title and $delete
  • new command line option (-P, --no-plugins) allowing to skip plugin loading, which may help when a plugin is crashing Picard at start and to identify if an issue is due to a plugin or the main program
  • improve tags support, better compatibility with other applications, wider range of audio files supported
  • better stability and performance

I’d like to thank all developers, translators, testers and users who contributed to this version, kudos to Philip Wolfer (phw).

Binary packages from OSx and Windows are available from Picard Github releases page and from Picard website.

Here is the complete change log:

  • [PICARD-105] – Picard won’t load non-album tracks from fingerprints
  • [PICARD-421] – Releases in private collections are not shown as being in them
  • [PICARD-518] – Sliders without labels in “Options – Metadata – Preferred Releases”
  • [PICARD-637] – $matchedtracks is broken
  • [PICARD-875] – AIFF does not support any of the compatid3 tags
  • [PICARD-949] – Track can be placed in the incorrect spot on the release after using Scan
  • [PICARD-1013] – False file save error in specific circumstances
  • [PICARD-1060] – Collections menu not displayed correctly anymore
  • [PICARD-1112] – Cannot save tags that were previously deleted from file
  • [PICARD-1133] – Plugins list doesn’t load automatically after setting proxy
  • [PICARD-1162] – Solo vocals are tagged wrong
  • [PICARD-1219] – Picard creating empty ID3 TIPL / TMCL / IPLS frames
  • [PICARD-1245] – Set field “Grouping” doesn’t work as expected
  • [PICARD-1275] – After uninstalling a plugin Picard needs to be restarted for it to be reinstalled
  • [PICARD-1281] – Picard has wrong version string on macOS
  • [PICARD-1320] – Black text on a dark theme
  • [PICARD-1332] – Deleted tags for matched files stay deleted
  • [PICARD-1336] – MP4 reports “bpm” as unsupported tag
  • [PICARD-1339] – Removing unclustered files can be very slow
  • [PICARD-1340] – File info doesn’t display Mono / Stereo in Channels field anymore
  • [PICARD-1341] – Cluster track order misinterprets disc/track numbers
  • [PICARD-1346] – Move additional files fails if multiple patterns match
  • [PICARD-1348] – Keyboard shortcuts broken due to localization
  • [PICARD-1350] – Drag and drop on cover image box does not always work as expected
  • [PICARD-1355] – Setting or unsetting album for non-album tracks does not work
  • [PICARD-1359] – Crash with tagger integration when using DuckDuckGo Privacy Essentials
  • [PICARD-1364] – picard.exe has no version tag
  • [PICARD-1368] – Info messages are not shown on logging level Info
  • [PICARD-1369] – Crash on Python 3.7.0 opening URLs
  • [PICARD-1370] – Windows installer to add “Quick Launch” icon no longer supported on Win10
  • [PICARD-1371] – Windows installer does not warn when installing on 32 bit system
  • [PICARD-1373] – Source distributions are unusable
  • [PICARD-1374] – Picard crashes while typing a regular expression in some cases
  • [PICARD-1375] – Metadata sanitation before move-script execution fails
  • [PICARD-1376] – Error saving Ape files with tag marked for deletion that does not exist
  • [PICARD-1381] – Test results depend on execution order of tests
  • [PICARD-1397] – Do not save tags marked as unsupported
  • [PICARD-1398] – Snap package is missing locale files
  • [PICARD-1405] – Pasting formatted text into scripting window shows formatting
  • [PICARD-1410] – Loading Vorbis file with invalid rating value fails
  • [PICARD-1412] – Deleting tag counts not as important metadata change
  • [PICARD-1414] – Image errors lead to crash in info dialog
  • [PICARD-1415] – Open Containing Folder and Open with MusicPlayer does nothing for UNC paths
  • [PICARD-1418] – Display localized default dialogs and keyboard shortcut hints
  • [PICARD-1420] – Can not save wma file. TypeError: sequence item 0
  • [PICARD-1428] – Removing tags which are only in original file metadata not possible
  • [PICARD-1430] – “Authentication required” dialog does not trigger authentication
  • [PICARD-1431] – Some ID3 frames gets deleted even if the corresponding tags are shown as unchanged
  • [PICARD-1434] – Tag acoustid_id can not be removed or deleted in script
  • [PICARD-1436] – Text extraction of “title” and “label” for translation.
  • [PICARD-1437] – After reload file is being shown as changed
  • [PICARD-1438] – Message box buttons Yes/No aren’t translated
  • [PICARD-1439] – Newline character in cover art naming script causes exception on saving

New Feature

  • [PICARD-490] – Allow tagging AAC/ADTS files with APEv2 tags
  • [PICARD-1043] – Support reading & writing iTunes Classical tags
  • [PICARD-1045] – Check for new version
  • [PICARD-1268] – Support concertmaster recording relationships as performer:concertmaster
  • [PICARD-1273] – Add an option to exclude new cover art type “Raw / Unedited”
  • [PICARD-1319] – Provide cover art metadata to cover image naming script
  • [PICARD-1344] – Add $delete function
  • [PICARD-1352] – Add a command-line option to skip plugin loading
  • [PICARD-1354] – Allow using vocals and instruments as credited
  • [PICARD-1367] – Allow opening searches in browser when using search dialogs
  • [PICARD-1384] – Add AppStream data
  • [PICARD-1386] – Add $title function
  • [PICARD-1395] – Support genres from MusicBrainz
  • [PICARD-1440] – Support loading and renaming Standard MIDI Files (SMF)

Task

  • [PICARD-1333] – Run CI tests agaist oldest supported mutagen
  • [PICARD-1347] – Refactor script.py to avoid code duplication
  • [PICARD-1365] – Allow building with PyQt 5.11 or later
  • [PICARD-1442] – Support new Audio Play secondary type

Sub-task

  • [PICARD-1407] – Save originalalbum / originalartist to ASF/WMA
  • [PICARD-1408] – Save originalalbum / originalartist to APE

Improvement

  • [PICARD-664] – When dragging a recording, show the actual file name instead of the path
  • [PICARD-792] – Package a start menu tile for Windows 10 on the windows version
  • [PICARD-1039] – Use forward delete instead of delete button on macOS
  • [PICARD-1049] – Picard should use TXXX:WORK rather than TXXX:Work
  • [PICARD-1068] – Picard should use MP4 ©wrk for Work rather than generic text field
  • [PICARD-1244] – Refresh list of plugins after uninstalling or installing a local plugin
  • [PICARD-1285] – There is no Close menu item in Picard 2.0 on macOS
  • [PICARD-1313] – Refactor plugin UI
  • [PICARD-1325] – Allow disabling new version update checking for packagers
  • [PICARD-1338] – Picard should be more resilient if it gets invalid responses from servers
  • [PICARD-1358] – Use macOS style widgets in the user interface of the macOS version of Picard
  • [PICARD-1363] – AcoustId submission for matched files is impossible when musicbrainz_recordingid is unset
  • [PICARD-1366] – Show Python version in about
  • [PICARD-1379] – Port astrcmp to new Python C Unicode API
  • [PICARD-1383] – Use MCN / barcode read from disc to improve DiscId lookup
  • [PICARD-1393] – Change the application ID
  • [PICARD-1416] – Should store ID3 Artists field as TXXX:ARTISTS not TXXX:Artists
  • [PICARD-1417] – Only show plugins with compatible API version
  • [PICARD-1424] – Translate AppStream data
  • [PICARD-1425] – Support all movement tags for APE, Vorbis and MP3
  • [PICARD-1426] – Map musicbrainz_originalalbumid and musicbrainz_originalartistid to MP4 and WMA
  • [PICARD-1443] – Sort secondary release types in UI alphabetically