State of the Brainz: 2019 MetaBrainz Summit highlights

The 2019 MetaBrainz Summit took place on 27th–29th of September 2019 in Barcelona, Spain at the MetaBrainz HQ. The Summit is a chance for MetaBrainz staff and the community to gather and plan ahead for the next year. This report is a recap of what was discussed and what lies ahead for the community.

Continue reading “State of the Brainz: 2019 MetaBrainz Summit highlights”

Server update, 2018-12-18

This release features four new reports of data that might need fixing. Pages with the MBID of entities that have been merged are now redirected to use the MBID of the merged entity. This release also includes a significant amount of bug fixes and updates genres list and external link handler. Thanks to coders G30rg3, TheFaR8, PROTechThor (all GCI students!) and dominikh for their contributed patches, and thanks to issue reporters bgstewart, cyberskull, jesus2099, hibiscuskazeneko, michelv, paulakreuzer, salo.rock, suriv, and wcw1966 for their input. The git tag is v-2018-12-18.

Bug

  • [MBS-8311] – Annotation field in the release editor does not mention licenses
  • [MBS-9402] – Empty “Lyrics languages” column in “Merge works” edits
  • [MBS-9859] – Amazon cover art source stats don’t count https URLs
  • [MBS-9863] – License links are ignored if https
  • [MBS-9844] – Cannot cancel removing/revoking application’s access
  • [MBS-9872] – “Ended” flag change not shown in edit relationship page
  • [MBS-9889] – Release page “Found in N user collections” links to incorrect URL
  • [MBS-9892] – Unable to add Australian ASIN
  • [MBS-9895] – Regression: Approving link removals is now harder (auto editors)
  • [MBS-9896] – Release pages throw an internal server error when CritiqueBrainz is down
  • [MBS-9905] – Tipeee language subdomains are not recognised
  • [MBS-9906] – Link to profile when preferences have been saved is broken

New Feature

  • [MBS-3685] – New Report: Releases with label and artist of the same name
  • [MBS-6232] – New Report: Releases with cover art archive images but no front image
  • [MBS-8178] – New Report: Events with sequential numbering that are neither part of a series nor part of a larger event
  • [MBS-9907] – New report: Places without coordinates

Task

  • [MBS-9901] – Normalize Dailymotion URLs to HTTPS
  • [MBS-9930] – Disable CAA images on the homepage for Chrome-based browsers
  • [MBS-9934] – Update blog and JIRA links to metabrainz.org

Improvement

  • [MBS-7192] – Show work types in inline search
  • [MBS-9277] – Handle Mixcloud social network URLs
  • [MBS-9748] – Handle Ko-fi patronage URLs
  • [MBS-9765] – Do not display event dates twice in search results
  • [MBS-9827] – Redirect merged entity MBID pages to new MBID
  • [MBS-9831] – Handle Bandcamp lyrics URLs
  • [MBS-9847] – Show event collections in reverse chronological order by default
  • [MBS-9873] – Handle Discogs composition URLs
  • [MBS-9883] – Show Wikidata: QID rather than just QID on sidebar
  • [MBS-9900] – Add information on requesting instruments/genres to their lists
  • [MBS-9944] – Handle niconico video URLs
  • [MBS-9947] – Allow linking to podcast episode on Spotify and Deezer

MusicBrainz introducing: Genres!

One of the things various people have asked MusicBrainz for time and time again has been genres. However, genres are hard to do right and they’re very much subjective—with MusicBrainz dealing almost exclusively with objective data. It’s been a recurring discussion on almost all of our summits, but a couple years ago (with some help from our friend Alastair Porter and his research colleagues at UPF), we finally came to a path forward—and recently Nicolás Tamargo (reosarevok) finally turned that path forward into code… which has now been released! You can see it in action on e.g., Nine Inch Nails’ Year Zero release group.

How does it work?

For now genres are exactly the same as (folksonomy) tags behind the scenes; some tags simply have become the chosen ones and are listed and presented as genres. The list of which tags are considered as genres is currently hardcoded, and no doubt it is missing a lot of our users’ favourite genres. We plan to expand the genre list based on your requests, so if you find a genre that is missing from it, request it by adding a style ticket with the “Genres” component.

As we mentioned above, genres are very subjective, so just like with folksonomy tags, you can upvote and downvote genres you agree or disagree with on any given entity, and you can also submit genre(s) for the entity that no one has added yet.

What about the API?

A bunch of the people asking for genres in MusicBrainz have been application developers, and this type of people are usually more interested in how to actually extract the genres from our data.

The method to request genres mirrors that of tags: you can use inc=genres to get all the genres everyone has proposed for the entity, or inc=user-genres to get all the genres you have proposed yourself (or both!). For the same release group as before, you’d want https://musicbrainz.org/ws/2/release-group/3bd76d40-7f0e-36b7-9348-91a33afee20e?inc=genres+user-genres for the XML API and https://musicbrainz.org/ws/2/release-group/3bd76d40-7f0e-36b7-9348-91a33afee20e?inc=genres+user-genres&fmt=json for the JSON API.

Since genres are tags, all the genres will continue to be served with inc=tags as before as well. As such, you can always use the tag endpoint if you would rather filter the tags by your own genre list rather than follow the MusicBrainz one, or if you want to also get other non-genre tags (maybe you want moods, or maybe you’re really interested in finding artists who perform hip hop music and were murdered – we won’t stop you!).

I use the database directly, not the API

You can parse the taggenres from entities.json in the root of the “musicbrainz-server” repository which will give you a list of what we currently consider genres. Then you can simply compare any folksonomy tags from the %_tag tables.

Note about licensing

One thing to keep in mind for any data consumers out there is that, as per our data licensing, tags—and thus also genres—are not part of our “core (CC0-licensed) data”, but rather part of our “supplementary data” which is available under a Creative Commons Attribution-ShareAlike-NonCommercial license. Thus, if you wish to use our genre data for something commercial, you should get a commercial use license from the MetaBrainz Foundation. (Of course, if you’re going to provide a commercial product using data from MusicBrainz, you should always sign up as a supporter regardless. :)).

The future?

We are hoping to get a better coverage of genres (especially genres outside of the Western tradition, of which we have a very small amount right now) with your help! That applies both to expanding the genre list and actually applying genres to entities. For the latter, remember that everyone can downvote your genre suggestion if they don’t agree, so don’t think too much about “what genres does the world think apply to this artist/release/whatever”. Just add what you feel is right; if everyone does that we’ll get much better information. 🙂

In the near future we’re hoping to move the genre list from the code to the database (which shouldn’t mean too much for most of you, other than less waiting between a new genre being proposed for the list and it being added, but is much better for future development). Also planned is a way to indicate that several tags are the same genre (so that if you tag something as “hiphop”, “hip hop” or “hip-hop” the system will understand that’s really all the same). Further down the line, who knows! We might eventually make genres into limited entities of a sort, in order to allow linking to, say, the appropriate Wikidata/Wikipedia pages. We might do some fun stuff. Time will tell!

Server update, 2018-11-01

This release includes a first implementation of genres – expect more information as a blog post in the following days. The search results page has been converted to React for every type of search except the edit search, which is implemented separately. The homepage, the ISWC page and the sidebars have been converted too. Additionally, the password hashes have been strengthened, external URL handlers have been updated as usual, and ten bugs have been fixed. Thanks to issue reporters chirlu, darwinx0r, jesus2099, hibiscuskazeneko, ravenworks, spellew, yeeeargh, and zastai for their input.  The git tag is v-2018-11-01.

Sub-task

  • [MBS-9604] – Convert ISWC index page to React
  • [MBS-9813] – Convert the homepage to React
  • [MBS-9830] – Convert taglookup templates to React
  • [MBS-9850] – Convert sidebars to React
  • [MBS-9877] – Convert all search results pages to React

Bug

  • [MBS-8062] – Event indexed search doesn’t show artists/location/date
  • [MBS-9422] – Attach CD TOC page shows all tracks in tracklists as deleted
  • [MBS-9438] – Event dates and times display as “(Object object)” in drop-down search results
  • [MBS-9641] – Label-Series relationship does not show on series page
  • [MBS-9788] – Series edit history indicates wrong entity type
  • [MBS-9804] – Label dates do not appear on direct search
  • [MBS-9816] – Cannot change password if logged in with a different letter-cased username
  • [MBS-9817] – Regression: Client-side rendered components are not localized
  • [MBS-9846] – Beatport URL with numeric slug cannot be linked to
  • [MBS-9856] – Regression: Buggy formatting on some web search results

New Feature

  • [MBS-9492] – Add genres as a subset of tags

Task

  • [MBS-9208] – Increase bcrypt cost parameter
  • [MBS-9721] – Add GDPR links
  • [MBS-9763] – Normalize setlist.fm URLs to HTTPS
  • [MBS-9766] – Normalize worldcat.org URLs to HTTPS

Improvement

  • [MBS-9210] – Re-hash passwords on login
  • [MBS-9503] – Add a link to AcousticBrainz on the Details tab of recordings
  • [MBS-9764] – Allow adding events from places and artists