CINXE.COM
Breaking Changes – MetaBrainz Blog
<!DOCTYPE html> <html lang="en" class="no-js"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="profile" href="https://gmpg.org/xfn/11"> <script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script> <title>Breaking Changes – MetaBrainz Blog</title> <meta name='robots' content='max-image-preview:large' /> <meta name="google-site-verification" content="aHsalzSsjEz9L3kesh85sP49ooc2wS4HR-_8_wmoIJg" /> <meta name="msvalidate.01" content="9A2D04F4206FB5DA8B1A5DDDD8772245" /> <!-- Async WordPress.com Remote Login --> <script id="wpcom_remote_login_js"> var wpcom_remote_login_extra_auth = ''; function wpcom_remote_login_remove_dom_node_id( element_id ) { var dom_node = document.getElementById( element_id ); if ( dom_node ) { dom_node.parentNode.removeChild( dom_node ); } } function wpcom_remote_login_remove_dom_node_classes( class_name ) { var dom_nodes = document.querySelectorAll( '.' + class_name ); for ( var i = 0; i < dom_nodes.length; i++ ) { dom_nodes[ i ].parentNode.removeChild( dom_nodes[ i ] ); } } function wpcom_remote_login_final_cleanup() { wpcom_remote_login_remove_dom_node_classes( "wpcom_remote_login_msg" ); wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" ); wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_validate" ); wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_js" ); wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_iframe" ); wpcom_remote_login_remove_dom_node_id( "wpcom_request_access_styles" ); } // Watch for messages back from the remote login window.addEventListener( "message", function( e ) { if ( e.origin === "https://r-login.wordpress.com" ) { var data = {}; try { data = JSON.parse( e.data ); } catch( e ) { wpcom_remote_login_final_cleanup(); return; } if ( data.msg === 'LOGIN' ) { // Clean up the login check iframe wpcom_remote_login_remove_dom_node_id( "wpcom_remote_login_key" ); var id_regex = new RegExp( /^[0-9]+$/ ); var token_regex = new RegExp( /^.*|.*|.*$/ ); if ( token_regex.test( data.token ) && id_regex.test( data.wpcomid ) ) { // We have everything we need to ask for a login var script = document.createElement( "script" ); script.setAttribute( "id", "wpcom_remote_login_validate" ); script.src = '/remote-login.php?wpcom_remote_login=validate' + '&wpcomid=' + data.wpcomid + '&token=' + encodeURIComponent( data.token ) + '&host=' + window.location.protocol + '//' + window.location.hostname + '&postid=11676' + '&is_singular='; document.body.appendChild( script ); } return; } // Safari ITP, not logged in, so redirect if ( data.msg === 'LOGIN-REDIRECT' ) { window.location = 'https://wordpress.com/log-in?redirect_to=' + window.location.href; return; } // Safari ITP, storage access failed, remove the request if ( data.msg === 'LOGIN-REMOVE' ) { var css_zap = 'html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } @media screen and ( max-width: 782px ) { html { margin-top: 0 !important; } * html body { margin-top: 0 !important; } }'; var style_zap = document.createElement( 'style' ); style_zap.type = 'text/css'; style_zap.appendChild( document.createTextNode( css_zap ) ); document.body.appendChild( style_zap ); var e = document.getElementById( 'wpcom_request_access_iframe' ); e.parentNode.removeChild( e ); document.cookie = 'wordpress_com_login_access=denied; path=/; max-age=31536000'; return; } // Safari ITP if ( data.msg === 'REQUEST_ACCESS' ) { console.log( 'request access: safari' ); // Check ITP iframe enable/disable knob if ( wpcom_remote_login_extra_auth !== 'safari_itp_iframe' ) { return; } // If we are in a "private window" there is no ITP. var private_window = false; try { var opendb = window.openDatabase( null, null, null, null ); } catch( e ) { private_window = true; } if ( private_window ) { console.log( 'private window' ); return; } var iframe = document.createElement( 'iframe' ); iframe.id = 'wpcom_request_access_iframe'; iframe.setAttribute( 'scrolling', 'no' ); iframe.setAttribute( 'sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin allow-top-navigation-by-user-activation' ); iframe.src = 'https://r-login.wordpress.com/remote-login.php?wpcom_remote_login=request_access&origin=' + encodeURIComponent( data.origin ) + '&wpcomid=' + encodeURIComponent( data.wpcomid ); var css = 'html { -webkit-transition: margin-top 1s; transition: margin-top 1s; } /* 9001 */ html { margin-top: 46px !important; } * html body { margin-top: 46px !important; } @media screen and ( max-width: 660px ) { html { margin-top: 71px !important; } * html body { margin-top: 71px !important; } #wpcom_request_access_iframe { display: block; height: 71px !important; } } #wpcom_request_access_iframe { border: 0px; height: 46px; position: fixed; top: 0; left: 0; width: 100%; min-width: 100%; z-index: 99999; background: #23282d; } '; var style = document.createElement( 'style' ); style.type = 'text/css'; style.id = 'wpcom_request_access_styles'; style.appendChild( document.createTextNode( css ) ); document.body.appendChild( style ); document.body.appendChild( iframe ); } if ( data.msg === 'DONE' ) { wpcom_remote_login_final_cleanup(); } } }, false ); // Inject the remote login iframe after the page has had a chance to load // more critical resources window.addEventListener( "DOMContentLoaded", function( e ) { var iframe = document.createElement( "iframe" ); iframe.style.display = "none"; iframe.setAttribute( "scrolling", "no" ); iframe.setAttribute( "id", "wpcom_remote_login_key" ); iframe.src = "https://r-login.wordpress.com/remote-login.php" + "?wpcom_remote_login=key" + "&origin=aHR0cHM6Ly9ibG9nLm1ldGFicmFpbnoub3Jn" + "&wpcomid=1935472" + "&time=1732898357"; document.body.appendChild( iframe ); }, false ); </script> <link rel='dns-prefetch' href='//s1.wp.com' /> <link rel='dns-prefetch' href='//s2.wp.com' /> <link rel='dns-prefetch' href='//s0.wp.com' /> <link rel="alternate" type="application/rss+xml" title="MetaBrainz Blog » Feed" href="https://blog.metabrainz.org/feed/" /> <link rel="alternate" type="application/rss+xml" title="MetaBrainz Blog » Comments Feed" href="https://blog.metabrainz.org/comments/feed/" /> <link rel="alternate" type="application/rss+xml" title="MetaBrainz Blog » Breaking Changes Category Feed" href="https://blog.metabrainz.org/category/development/updates/breaking-changes/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function () { oldonload(); func(); } } } /* ]]> */ </script> <script> window._wpemojiSettings = {"baseUrl":"https:\/\/s0.wp.com\/wp-content\/mu-plugins\/wpcom-smileys\/twemoji\/2\/72x72\/","ext":".png","svgUrl":"https:\/\/s0.wp.com\/wp-content\/mu-plugins\/wpcom-smileys\/twemoji\/2\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/s2.wp.com\/wp-includes\/js\/wp-emoji-release.min.js?m=1719498190i&ver=6.8-alpha-59438"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); </script> <link crossorigin='anonymous' rel='stylesheet' id='all-css-0-1' href='https://s0.wp.com/_static/??-eJyVjFsKwkAMAC/kGhap1A/xLCXGujWPxWRpe3st1AP4MzAfMzDXhKZBGiAtVW5jUYeJog742h3EbMO9MTnEk4RSmLEDmtQhIOZvv3pZgkiP6H6A/79FH0VLUHJ8G/PP1+13k2s+910+5f7STR/VsEQ6&cssminify=yes' type='text/css' media='all' /> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-2-1' href='https://s1.wp.com/_static/??-eJyljssOwiAQRX/IMrY+0IXxW4BOkEqBzAwa/t7qxsRVE5c3J+fkwrN0LifBJFBi9SEx+LpMi+QXQgiP/qy02oKtIY5gY3b3LgZLhhqwtIjKMW/gv5DccF4T+lgME0oxb920XKXzFMbVX34SZCQkz1/9Ol96vRsOen86DtMLiD1qaA==&cssminify=yes' type='text/css' media='all' /> <style id='wp-block-library-inline-css'> .has-text-align-justify { text-align:justify; } .has-text-align-justify{text-align:justify;} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-4-1' href='https://s2.wp.com/_static/??-eJzTLy/QzcxLzilNSS3WzyrWz01NyUxMzUnNTc0rQeEU5CRWphbp5qSmJyZX6uVm5uklFxfr6OPTDpRD5sM02efaGpoZmFkYGRuZGmQBAHPvL0Y=&cssminify=yes' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-6-1' href='https://s2.wp.com/wp-content/plugins/coblocks/2.18.1-simple-rev.4/dist/coblocks-style.css?m=1681832297i&cssminify=yes' type='text/css' media='all' /> <style id='classic-theme-styles-inline-css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-8-1' href='https://s1.wp.com/_static/??/wp-content/mu-plugins/core-compat/wp-mediaelement.css,/wp-content/mu-plugins/wpcom-bbpress-premium-themes.css?m=1432920480j&cssminify=yes' type='text/css' media='all' /> <style id='global-styles-inline-css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #fff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--dark-gray: #1a1a1a;--wp--preset--color--medium-gray: #686868;--wp--preset--color--light-gray: #e5e5e5;--wp--preset--color--blue-gray: #4d545c;--wp--preset--color--bright-blue: #007acc;--wp--preset--color--light-blue: #9adffd;--wp--preset--color--dark-brown: #402b30;--wp--preset--color--medium-brown: #774e24;--wp--preset--color--dark-red: #640c1f;--wp--preset--color--bright-red: #ff675f;--wp--preset--color--yellow: #ffef8e;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-family--albert-sans: 'Albert Sans', sans-serif;--wp--preset--font-family--alegreya: Alegreya, serif;--wp--preset--font-family--arvo: Arvo, serif;--wp--preset--font-family--bodoni-moda: 'Bodoni Moda', serif;--wp--preset--font-family--bricolage-grotesque: 'Bricolage Grotesque', sans-serif;--wp--preset--font-family--cabin: Cabin, sans-serif;--wp--preset--font-family--chivo: Chivo, sans-serif;--wp--preset--font-family--commissioner: Commissioner, sans-serif;--wp--preset--font-family--cormorant: Cormorant, serif;--wp--preset--font-family--courier-prime: 'Courier Prime', monospace;--wp--preset--font-family--crimson-pro: 'Crimson Pro', serif;--wp--preset--font-family--dm-mono: 'DM Mono', monospace;--wp--preset--font-family--dm-sans: 'DM Sans', sans-serif;--wp--preset--font-family--dm-serif-display: 'DM Serif Display', serif;--wp--preset--font-family--domine: Domine, serif;--wp--preset--font-family--eb-garamond: 'EB Garamond', serif;--wp--preset--font-family--epilogue: Epilogue, sans-serif;--wp--preset--font-family--fahkwang: Fahkwang, sans-serif;--wp--preset--font-family--figtree: Figtree, sans-serif;--wp--preset--font-family--fira-sans: 'Fira Sans', sans-serif;--wp--preset--font-family--fjalla-one: 'Fjalla One', sans-serif;--wp--preset--font-family--fraunces: Fraunces, serif;--wp--preset--font-family--gabarito: Gabarito, system-ui;--wp--preset--font-family--ibm-plex-mono: 'IBM Plex Mono', monospace;--wp--preset--font-family--ibm-plex-sans: 'IBM Plex Sans', sans-serif;--wp--preset--font-family--ibarra-real-nova: 'Ibarra Real Nova', serif;--wp--preset--font-family--instrument-serif: 'Instrument Serif', serif;--wp--preset--font-family--inter: Inter, sans-serif;--wp--preset--font-family--josefin-sans: 'Josefin Sans', sans-serif;--wp--preset--font-family--jost: Jost, sans-serif;--wp--preset--font-family--libre-baskerville: 'Libre Baskerville', serif;--wp--preset--font-family--libre-franklin: 'Libre Franklin', sans-serif;--wp--preset--font-family--literata: Literata, serif;--wp--preset--font-family--lora: Lora, serif;--wp--preset--font-family--merriweather: Merriweather, serif;--wp--preset--font-family--montserrat: Montserrat, sans-serif;--wp--preset--font-family--newsreader: Newsreader, serif;--wp--preset--font-family--noto-sans-mono: 'Noto Sans Mono', sans-serif;--wp--preset--font-family--nunito: Nunito, sans-serif;--wp--preset--font-family--open-sans: 'Open Sans', sans-serif;--wp--preset--font-family--overpass: Overpass, sans-serif;--wp--preset--font-family--pt-serif: 'PT Serif', serif;--wp--preset--font-family--petrona: Petrona, serif;--wp--preset--font-family--piazzolla: Piazzolla, serif;--wp--preset--font-family--playfair-display: 'Playfair Display', serif;--wp--preset--font-family--plus-jakarta-sans: 'Plus Jakarta Sans', sans-serif;--wp--preset--font-family--poppins: Poppins, sans-serif;--wp--preset--font-family--raleway: Raleway, sans-serif;--wp--preset--font-family--roboto: Roboto, sans-serif;--wp--preset--font-family--roboto-slab: 'Roboto Slab', serif;--wp--preset--font-family--rubik: Rubik, sans-serif;--wp--preset--font-family--rufina: Rufina, serif;--wp--preset--font-family--sora: Sora, sans-serif;--wp--preset--font-family--source-sans-3: 'Source Sans 3', sans-serif;--wp--preset--font-family--source-serif-4: 'Source Serif 4', serif;--wp--preset--font-family--space-mono: 'Space Mono', monospace;--wp--preset--font-family--syne: Syne, sans-serif;--wp--preset--font-family--texturina: Texturina, serif;--wp--preset--font-family--urbanist: Urbanist, sans-serif;--wp--preset--font-family--work-sans: 'Work Sans', sans-serif;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-albert-sans-font-family{font-family: var(--wp--preset--font-family--albert-sans) !important;}.has-alegreya-font-family{font-family: var(--wp--preset--font-family--alegreya) !important;}.has-arvo-font-family{font-family: var(--wp--preset--font-family--arvo) !important;}.has-bodoni-moda-font-family{font-family: var(--wp--preset--font-family--bodoni-moda) !important;}.has-bricolage-grotesque-font-family{font-family: var(--wp--preset--font-family--bricolage-grotesque) !important;}.has-cabin-font-family{font-family: var(--wp--preset--font-family--cabin) !important;}.has-chivo-font-family{font-family: var(--wp--preset--font-family--chivo) !important;}.has-commissioner-font-family{font-family: var(--wp--preset--font-family--commissioner) !important;}.has-cormorant-font-family{font-family: var(--wp--preset--font-family--cormorant) !important;}.has-courier-prime-font-family{font-family: var(--wp--preset--font-family--courier-prime) !important;}.has-crimson-pro-font-family{font-family: var(--wp--preset--font-family--crimson-pro) !important;}.has-dm-mono-font-family{font-family: var(--wp--preset--font-family--dm-mono) !important;}.has-dm-sans-font-family{font-family: var(--wp--preset--font-family--dm-sans) !important;}.has-dm-serif-display-font-family{font-family: var(--wp--preset--font-family--dm-serif-display) !important;}.has-domine-font-family{font-family: var(--wp--preset--font-family--domine) !important;}.has-eb-garamond-font-family{font-family: var(--wp--preset--font-family--eb-garamond) !important;}.has-epilogue-font-family{font-family: var(--wp--preset--font-family--epilogue) !important;}.has-fahkwang-font-family{font-family: var(--wp--preset--font-family--fahkwang) !important;}.has-figtree-font-family{font-family: var(--wp--preset--font-family--figtree) !important;}.has-fira-sans-font-family{font-family: var(--wp--preset--font-family--fira-sans) !important;}.has-fjalla-one-font-family{font-family: var(--wp--preset--font-family--fjalla-one) !important;}.has-fraunces-font-family{font-family: var(--wp--preset--font-family--fraunces) !important;}.has-gabarito-font-family{font-family: var(--wp--preset--font-family--gabarito) !important;}.has-ibm-plex-mono-font-family{font-family: var(--wp--preset--font-family--ibm-plex-mono) !important;}.has-ibm-plex-sans-font-family{font-family: var(--wp--preset--font-family--ibm-plex-sans) !important;}.has-ibarra-real-nova-font-family{font-family: var(--wp--preset--font-family--ibarra-real-nova) !important;}.has-instrument-serif-font-family{font-family: var(--wp--preset--font-family--instrument-serif) !important;}.has-inter-font-family{font-family: var(--wp--preset--font-family--inter) !important;}.has-josefin-sans-font-family{font-family: var(--wp--preset--font-family--josefin-sans) !important;}.has-jost-font-family{font-family: var(--wp--preset--font-family--jost) !important;}.has-libre-baskerville-font-family{font-family: var(--wp--preset--font-family--libre-baskerville) !important;}.has-libre-franklin-font-family{font-family: var(--wp--preset--font-family--libre-franklin) !important;}.has-literata-font-family{font-family: var(--wp--preset--font-family--literata) !important;}.has-lora-font-family{font-family: var(--wp--preset--font-family--lora) !important;}.has-merriweather-font-family{font-family: var(--wp--preset--font-family--merriweather) !important;}.has-montserrat-font-family{font-family: var(--wp--preset--font-family--montserrat) !important;}.has-newsreader-font-family{font-family: var(--wp--preset--font-family--newsreader) !important;}.has-noto-sans-mono-font-family{font-family: var(--wp--preset--font-family--noto-sans-mono) !important;}.has-nunito-font-family{font-family: var(--wp--preset--font-family--nunito) !important;}.has-open-sans-font-family{font-family: var(--wp--preset--font-family--open-sans) !important;}.has-overpass-font-family{font-family: var(--wp--preset--font-family--overpass) !important;}.has-pt-serif-font-family{font-family: var(--wp--preset--font-family--pt-serif) !important;}.has-petrona-font-family{font-family: var(--wp--preset--font-family--petrona) !important;}.has-piazzolla-font-family{font-family: var(--wp--preset--font-family--piazzolla) !important;}.has-playfair-display-font-family{font-family: var(--wp--preset--font-family--playfair-display) !important;}.has-plus-jakarta-sans-font-family{font-family: var(--wp--preset--font-family--plus-jakarta-sans) !important;}.has-poppins-font-family{font-family: var(--wp--preset--font-family--poppins) !important;}.has-raleway-font-family{font-family: var(--wp--preset--font-family--raleway) !important;}.has-roboto-font-family{font-family: var(--wp--preset--font-family--roboto) !important;}.has-roboto-slab-font-family{font-family: var(--wp--preset--font-family--roboto-slab) !important;}.has-rubik-font-family{font-family: var(--wp--preset--font-family--rubik) !important;}.has-rufina-font-family{font-family: var(--wp--preset--font-family--rufina) !important;}.has-sora-font-family{font-family: var(--wp--preset--font-family--sora) !important;}.has-source-sans-3-font-family{font-family: var(--wp--preset--font-family--source-sans-3) !important;}.has-source-serif-4-font-family{font-family: var(--wp--preset--font-family--source-serif-4) !important;}.has-space-mono-font-family{font-family: var(--wp--preset--font-family--space-mono) !important;}.has-syne-font-family{font-family: var(--wp--preset--font-family--syne) !important;}.has-texturina-font-family{font-family: var(--wp--preset--font-family--texturina) !important;}.has-urbanist-font-family{font-family: var(--wp--preset--font-family--urbanist) !important;}.has-work-sans-font-family{font-family: var(--wp--preset--font-family--work-sans) !important;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-10-1' href='https://s0.wp.com/_static/??-eJyNjtEKwjAMRX/IGSZV9EH8FOlKnN3atDQZc39vqj4IKviWezk5Ccy5cYkESUCuGJEhTx3IrMXC/iaIBBcFGCKW4me0ipUmh4mbWHttrTyzJ1VxClbs2jGv4E0ep8r0nhgGlGzd+MoQUyI46y70SFh8dXwfP6Q/P2ZZAv6PKwhdSG58nDjFY7vbb9vNwRgz3AE9cm7a&cssminify=yes' type='text/css' media='all' /> <!--[if lt IE 10]> <link rel='stylesheet' id='twentysixteen-ie-css' href='https://s2.wp.com/wp-content/themes/pub/twentysixteen/css/ie.css?m=1448353951i&ver=20170530' media='all' /> <![endif]--> <!--[if lt IE 9]> <link rel='stylesheet' id='twentysixteen-ie8-css' href='https://s2.wp.com/wp-content/themes/pub/twentysixteen/css/ie8.css?m=1493067000i&ver=20170530' media='all' /> <![endif]--> <!--[if lt IE 8]> <link rel='stylesheet' id='twentysixteen-ie7-css' href='https://s2.wp.com/wp-content/themes/pub/twentysixteen/css/ie7.css?m=1448353951i&ver=20170530' media='all' /> <![endif]--> <link crossorigin='anonymous' rel='stylesheet' id='all-css-16-1' href='https://s0.wp.com/_static/??-eJx9j1EKwjAMQC9kDUMm80M8y9ZltTNtypIyd3s7UXQ/+wl5gRd4MCdjOSpGBb1jQIGUO9C5HBbxT0WMYEVAdCE0c7IcjoUP8CeGbBJl56PAhB2xK6t7Wz/ckxyyIbateo4bMAO1ftpTR9TU2seHITCvo89UQnwcfPSKRuzERN++Tdv6+xau1bmpq1PVXOrxBWc3Z4k=&cssminify=yes' type='text/css' media='all' /> <style id='jetpack-global-styles-frontend-style-inline-css'> :root { --font-headings: unset; --font-base: unset; --font-headings-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; --font-base-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;} </style> <link crossorigin='anonymous' rel='stylesheet' id='all-css-18-1' href='https://s2.wp.com/wp-content/themes/h4/global.css?m=1420737423i&cssminify=yes' type='text/css' media='all' /> <script id="wpcom-actionbar-placeholder-js-extra"> var actionbardata = {"siteID":"1935472","postID":"0","siteURL":"https:\/\/blog.metabrainz.org","xhrURL":"https:\/\/blog.metabrainz.org\/wp-admin\/admin-ajax.php","nonce":"ccf9f61fa5","isLoggedIn":"","statusMessage":"","subsEmailDefault":"instantly","proxyScriptUrl":"https:\/\/s0.wp.com\/wp-content\/js\/wpcom-proxy-request.js?ver=20211021","i18n":{"followedText":"New posts from this site will now appear in your <a href=\"https:\/\/wordpress.com\/read\">Reader<\/a>","foldBar":"Collapse this bar","unfoldBar":"Expand this bar"}}; </script> <script id="jetpack-mu-wpcom-settings-js-before"> var JETPACK_MU_WPCOM_SETTINGS = {"assetsUrl":"https:\/\/s1.wp.com\/wp-content\/mu-plugins\/jetpack-mu-wpcom-plugin\/moon\/vendor\/automattic\/jetpack-mu-wpcom\/src\/build\/"}; </script> <script crossorigin='anonymous' type='text/javascript' src='https://s0.wp.com/_static/??/wp-content/js/rlt-proxy.js,/wp-content/themes/pub/twentysixteen/js/html5.js?m=1720530689j'></script> <script id="rlt-proxy-js-after"> rltInitialize( {"token":null,"iframeOrigins":["https:\/\/widgets.wp.com"]} ); </script> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://musicbrainz.wordpress.com/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress.com" /> <!-- Jetpack Open Graph Tags --> <meta property="og:type" content="website" /> <meta property="og:title" content="Breaking Changes – MetaBrainz Blog" /> <meta property="og:url" content="https://blog.metabrainz.org/category/development/updates/breaking-changes/" /> <meta property="og:site_name" content="MetaBrainz Blog" /> <meta property="og:image" content="https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=150" /> <meta property="og:image:width" content="200" /> <meta property="og:image:height" content="200" /> <meta property="og:image:alt" content="" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:creator" content="@MusicBrainz" /> <meta name="twitter:site" content="@MusicBrainz" /> <!-- End Jetpack Open Graph Tags --> <link rel='openid.server' href='https://blog.metabrainz.org/?openidserver=1' /> <link rel='openid.delegate' href='https://blog.metabrainz.org/' /> <link rel="search" type="application/opensearchdescription+xml" href="https://blog.metabrainz.org/osd.xml" title="MetaBrainz Blog" /> <link rel="search" type="application/opensearchdescription+xml" href="https://s1.wp.com/opensearch.xml" title="WordPress.com" /> <style>.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style> <style type="text/css"> .recentcomments a { display: inline !important; padding: 0 !important; margin: 0 !important; } table.recentcommentsavatartop img.avatar, table.recentcommentsavatarend img.avatar { border: 0px; margin: 0; } table.recentcommentsavatartop a, table.recentcommentsavatarend a { border: 0px !important; background-color: transparent !important; } td.recentcommentsavatarend, td.recentcommentsavatartop { padding: 0px 0px 1px 0px; margin: 0px; } td.recentcommentstextend { border: none !important; padding: 0px 0px 2px 10px; } .rtl td.recentcommentstextend { padding: 0px 10px 2px 0px; } td.recentcommentstexttop { border: none; padding: 0px 0px 0px 10px; } .rtl td.recentcommentstexttop { padding: 0px 10px 0px 0px; } </style> <meta name="application-name" content="MetaBrainz Blog" /><meta name="msapplication-window" content="width=device-width;height=device-height" /><meta name="msapplication-tooltip" content="MetaBrainz Foundation community blog" /><meta name="description" content="Posts about Breaking Changes written by yvanzo, reosarevok, and mwiencek" /> <link rel="icon" href="https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=32" sizes="32x32" /> <link rel="icon" href="https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=150" sizes="192x192" /> <link rel="apple-touch-icon" href="https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=150" /> <meta name="msapplication-TileImage" content="https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=150" /> </head> <body class="archive category category-breaking-changes category-19867758 wp-embed-responsive customizer-styles-applied group-blog hfeed jetpack-reblog-enabled"> <div id="page" class="site"> <div class="site-inner"> <a class="skip-link screen-reader-text" href="#content"> Skip to content </a> <header id="masthead" class="site-header"> <div class="site-header-main"> <div class="site-branding"> <a href="https://blog.metabrainz.org/" class="site-logo-link" rel="home" itemprop="url"></a> <p class="site-title"><a href="https://blog.metabrainz.org/" rel="home">MetaBrainz Blog</a></p> <p class="site-description">MetaBrainz Foundation community blog</p> </div><!-- .site-branding --> <button id="menu-toggle" class="menu-toggle">Menu</button> <div id="site-header-menu" class="site-header-menu"> <nav id="site-navigation" class="main-navigation" aria-label="Primary Menu"> </nav><!-- .main-navigation --> </div><!-- .site-header-menu --> </div><!-- .site-header-main --> <div class="header-image"> <a href="https://blog.metabrainz.org/" rel="home"> <img src="https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-twitter-banner-1500x500.jpg" srcset="" sizes="" width="1200" height="186" alt="MetaBrainz Blog"> </a> </div><!-- .header-image --> </header><!-- .site-header --> <div id="content" class="site-content"> <div id="primary" class="content-area"> <main id="main" class="site-main"> <header class="page-header"> <h1 class="page-title">Category: <span>Breaking Changes</span></h1> </header><!-- .page-header --> <article id="post-11676" class="post-11676 post type-post status-publish format-standard hentry category-breaking-changes category-development category-musicbrainz category-search-server category-server category-updates tag-musicbrainz tag-musicbrainz-server tag-schema-change tag-search-server tag-solr"> <header class="entry-header"> <h2 class="entry-title"><a href="https://blog.metabrainz.org/2024/09/27/major-upgrade-for-mirrors-november-25-2024/" rel="bookmark">Major upgrade for mirrors: November 25, 2024</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p>MusicBrainz is announcing a major mirror upgrade for November 25, 2024. The minimum required version of Docker Compose will change from v1.21.1 to v2. Search will be upgraded from Solr 7 to Solr 9. Mirrors will likely require a reinstall from scratch, we will provide instructions by release day.</p> <p>This upgrade is not going to break replication for existing mirrors, even mirrors that have enabled live search. However, Solr 7 dumps will no longer be available.</p> <a href="https://blog.metabrainz.org/2024/09/27/major-upgrade-for-mirrors-november-25-2024/#more-11676" class="more-link">Continue reading<span class="screen-reader-text"> “Major upgrade for mirrors: November 25, 2024”</span></a> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://blog.metabrainz.org/author/yvanzo/">yvanzo</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://blog.metabrainz.org/2024/09/27/major-upgrade-for-mirrors-november-25-2024/" rel="bookmark"><time class="entry-date published" datetime="2024-09-27T13:17:23+00:00">September 27, 2024</time><time class="updated" datetime="2024-09-27T14:25:01+00:00">September 27, 2024</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/" rel="category tag">Breaking Changes</a>, <a href="https://blog.metabrainz.org/category/development/" rel="category tag">Development</a>, <a href="https://blog.metabrainz.org/category/musicbrainz/" rel="category tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/category/development/search-server/" rel="category tag">Search Server</a>, <a href="https://blog.metabrainz.org/category/development/server/" rel="category tag">Server</a>, <a href="https://blog.metabrainz.org/category/development/updates/" rel="category tag">Updates</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://blog.metabrainz.org/tag/musicbrainz/" rel="tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/tag/musicbrainz-server/" rel="tag">MusicBrainz Server</a>, <a href="https://blog.metabrainz.org/tag/schema-change/" rel="tag">schema change</a>, <a href="https://blog.metabrainz.org/tag/search-server/" rel="tag">Search Server</a>, <a href="https://blog.metabrainz.org/tag/solr/" rel="tag">solr</a></span><span class="comments-link"><a href="https://blog.metabrainz.org/2024/09/27/major-upgrade-for-mirrors-november-25-2024/#respond">Leave a comment<span class="screen-reader-text"> on Major upgrade for mirrors: November 25, 2024</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-11676 --> <article id="post-11388" class="post-11388 post type-post status-publish format-standard hentry category-breaking-changes category-development category-musicbrainz category-schema-change-release category-server category-updates category-virtual-machine tag-changelog tag-instructions tag-musicbrainz tag-schema-change"> <header class="entry-header"> <h2 class="entry-title"><a href="https://blog.metabrainz.org/2024/05/13/musicbrainz-schema-change-release-2024-05-13-with-upgrade-instructions/" rel="bookmark">MusicBrainz schema change release, 2024-05-13 (with upgrade instructions)</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p>We’re happy to announce the release of our <a href="https://blog.metabrainz.org/2024/03/12/schema-change-release-may-13-2024/">May 2024 schema change</a> now! Thanks to all who were patient during yesterday’s downtime as we released everything to our production servers. Final testing for the mirrors also took some more time. Note that the initially announced upgrades for MusicBrainz search engine are just about to reach our beta website, and thus are postponed for mirrors too but can be expected for the few next releases.</p> <p>This is a fairly small schema change release which mostly removes unused code and improves things behind the scenes. Of the schema change tickets, there are only two that will directly affect users as they browse and edit in MusicBrainz. The first (<a href="https://tickets.metabrainz.org/browse/MBS-13421">MBS-13421</a>) adds genre collections, so that editors can for example make a list of their favorite genres. The second (<a href="https://tickets.metabrainz.org/browse/MBS-13514">MBS-13514</a>) allows entering 6-digit label codes.</p> <p>Additionally, derat gratified us with making aliases more visible in the website, and some other improvements, while yellowhatpro polished cover art priority.</p> <p>Thanks to chaban, cyberskull, thomasegger, Toad King, and wileyfoxyx for having reported bugs and suggested improvements. Thanks to 0x1026, Anonymous, “ApeKattQuest, MonkeyPython”, AshPigeon, Autom, brtc, chaban, claybiockiller, danBLOO, darlingz, eigenric, Evergarden, GABG, hashflu, hesheng, julian45, kellnerd, LiarOnce, Philipp Wolfer, salo.rock, suming, Vac31., wileyfoxyx, x1ao4, xiaole_0714223, yangmouren, yyb987, and zemeles for updating the translations. And thanks to all others who tested the <a href="https://beta.musicbrainz.org/">beta version</a>!</p> <p>A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the <a href="https://github.com/metabrainz/musicbrainz-docker/releases/tag/v-2024-05-13-mbdb29-pg16">release notes</a> for update instructions.</p> <a href="https://blog.metabrainz.org/2024/05/13/musicbrainz-schema-change-release-2024-05-13-with-upgrade-instructions/#more-11388" class="more-link">Continue reading<span class="screen-reader-text"> “MusicBrainz schema change release, 2024-05-13 (with upgrade instructions)”</span></a> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://blog.metabrainz.org/author/reosarevok/">reosarevok</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://blog.metabrainz.org/2024/05/13/musicbrainz-schema-change-release-2024-05-13-with-upgrade-instructions/" rel="bookmark"><time class="entry-date published" datetime="2024-05-13T21:44:28+00:00">May 13, 2024</time><time class="updated" datetime="2024-05-14T16:20:15+00:00">May 14, 2024</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/" rel="category tag">Breaking Changes</a>, <a href="https://blog.metabrainz.org/category/development/" rel="category tag">Development</a>, <a href="https://blog.metabrainz.org/category/musicbrainz/" rel="category tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/schema-change-release/" rel="category tag">Schema Change Release</a>, <a href="https://blog.metabrainz.org/category/development/server/" rel="category tag">Server</a>, <a href="https://blog.metabrainz.org/category/development/updates/" rel="category tag">Updates</a>, <a href="https://blog.metabrainz.org/category/development/virtual-machine/" rel="category tag">Virtual Machine</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://blog.metabrainz.org/tag/changelog/" rel="tag">changelog</a>, <a href="https://blog.metabrainz.org/tag/instructions/" rel="tag">instructions</a>, <a href="https://blog.metabrainz.org/tag/musicbrainz/" rel="tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/tag/schema-change/" rel="tag">schema change</a></span><span class="comments-link"><a href="https://blog.metabrainz.org/2024/05/13/musicbrainz-schema-change-release-2024-05-13-with-upgrade-instructions/#comments">2 Comments<span class="screen-reader-text"> on MusicBrainz schema change release, 2024-05-13 (with upgrade instructions)</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-11388 --> <article id="post-11280" class="post-11280 post type-post status-publish format-standard hentry category-breaking-changes category-development category-musicbrainz category-schema-change-release category-search-server category-server category-updates tag-musicbrainz tag-musicbrainz-server tag-schema-change tag-search-server tag-solr"> <header class="entry-header"> <h2 class="entry-title"><a href="https://blog.metabrainz.org/2024/03/12/schema-change-release-may-13-2024/" rel="bookmark">Schema change release: May 13, 2024</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p>MusicBrainz is announcing a new database schema change release for May 13, 2024. The main change will be to upgrade from PostgreSQL 12 to 16. Even though it isn’t database-related, Perl will also be upgraded from 5.30 to 5.38. Those will become the minimum required versions. Other changes are mostly clean-up and refactoring, with the exception of support for genre collections and (addendum) 6-digit label codes.</p> <p>A few weeks after, the search engine will also be upgraded from Solr 7 to 9. Search indexes will have to be rebuilt on mirrors, which takes some time. Gladsomely, it will allow us to implement search improvements again.</p> <a href="https://blog.metabrainz.org/2024/03/12/schema-change-release-may-13-2024/#more-11280" class="more-link">Continue reading<span class="screen-reader-text"> “Schema change release: May 13, 2024”</span></a> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://blog.metabrainz.org/author/reosarevok/">reosarevok</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://blog.metabrainz.org/2024/03/12/schema-change-release-may-13-2024/" rel="bookmark"><time class="entry-date published" datetime="2024-03-12T20:03:39+00:00">March 12, 2024</time><time class="updated" datetime="2024-05-13T11:47:51+00:00">May 13, 2024</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/" rel="category tag">Breaking Changes</a>, <a href="https://blog.metabrainz.org/category/development/" rel="category tag">Development</a>, <a href="https://blog.metabrainz.org/category/musicbrainz/" rel="category tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/schema-change-release/" rel="category tag">Schema Change Release</a>, <a href="https://blog.metabrainz.org/category/development/search-server/" rel="category tag">Search Server</a>, <a href="https://blog.metabrainz.org/category/development/server/" rel="category tag">Server</a>, <a href="https://blog.metabrainz.org/category/development/updates/" rel="category tag">Updates</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://blog.metabrainz.org/tag/musicbrainz/" rel="tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/tag/musicbrainz-server/" rel="tag">MusicBrainz Server</a>, <a href="https://blog.metabrainz.org/tag/schema-change/" rel="tag">schema change</a>, <a href="https://blog.metabrainz.org/tag/search-server/" rel="tag">Search Server</a>, <a href="https://blog.metabrainz.org/tag/solr/" rel="tag">solr</a></span><span class="comments-link"><a href="https://blog.metabrainz.org/2024/03/12/schema-change-release-may-13-2024/#respond">Leave a comment<span class="screen-reader-text"> on Schema change release: May 13, 2024</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-11280 --> <article id="post-10270" class="post-10270 post type-post status-publish format-standard hentry category-breaking-changes category-development category-musicbrainz category-schema-change-release category-server category-updates category-virtual-machine tag-changelog tag-instructions tag-musicbrainz tag-schema-change"> <header class="entry-header"> <h2 class="entry-title"><a href="https://blog.metabrainz.org/2023/05/15/musicbrainz-schema-change-release-2023-05-15-with-upgrade-instructions/" rel="bookmark">MusicBrainz schema change release, 2023-05-15 (with upgrade instructions)</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p>We’re happy to announce the release of our <a href="https://blog.metabrainz.org/2023/03/15/schema-change-release-may-15-2023/">May 2023 schema change</a> today! Thanks to all who were patient during today’s downtime as we released everything to our production servers, and thanks to CatQuest, jesus2099, and yindesu for creating tickets.</p> <p>This is a fairly small schema change release which mostly removes unused code and improves things behind the scenes. Of the schema change tickets, there are only two that will directly affect users as they browse and edit in MusicBrainz. </p> <p>The first (<a href="https://tickets.metabrainz.org/browse/MBS-12800">MBS-12800</a>) makes it so that cancelled releases are ignored when calculating the first release dates for recordings and release groups; since something that was cancelled was by definition not released, it should not be used as a first release date.</p> <p>The second (<a href="https://tickets.metabrainz.org/browse/MBS-11312">MBS-11312</a>) lays the foundation for a new feature (<a href="https://tickets.metabrainz.org/browse/MBS-4685">MBS-4685</a>) that will allow users to edit or delete their edit notes, as long as a set of conditions are met (see <a href="https://wiki.musicbrainz.org/Edit_Note#Changing_or_deleting_notes">the edit note docs</a> for details). Admins will be able to edit or delete any edit notes at any time (<a href="https://tickets.metabrainz.org/browse/MBS-13084">MBS-13084</a>), mostly to get rid of spam or offensive content, but also to help any editor who cannot change their note anymore but has an important reason why they need to do so. This feature will be available for testing in our beta server on Tuesday and we expect to release it next week, assuming our beta testers don’t find any too big issue with it by then.</p> <p>A new release of MusicBrainz Docker is also available that matches this update of MusicBrainz Server. See the <a href="https://github.com/metabrainz/musicbrainz-docker/releases/tag/v-2023-05-16-mbdb28">release notes</a> for update instructions.</p> <a href="https://blog.metabrainz.org/2023/05/15/musicbrainz-schema-change-release-2023-05-15-with-upgrade-instructions/#more-10270" class="more-link">Continue reading<span class="screen-reader-text"> “MusicBrainz schema change release, 2023-05-15 (with upgrade instructions)”</span></a> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://blog.metabrainz.org/author/yvanzo/">yvanzo</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://blog.metabrainz.org/2023/05/15/musicbrainz-schema-change-release-2023-05-15-with-upgrade-instructions/" rel="bookmark"><time class="entry-date published" datetime="2023-05-15T21:43:46+00:00">May 15, 2023</time><time class="updated" datetime="2023-05-16T08:51:38+00:00">May 16, 2023</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/" rel="category tag">Breaking Changes</a>, <a href="https://blog.metabrainz.org/category/development/" rel="category tag">Development</a>, <a href="https://blog.metabrainz.org/category/musicbrainz/" rel="category tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/schema-change-release/" rel="category tag">Schema Change Release</a>, <a href="https://blog.metabrainz.org/category/development/server/" rel="category tag">Server</a>, <a href="https://blog.metabrainz.org/category/development/updates/" rel="category tag">Updates</a>, <a href="https://blog.metabrainz.org/category/development/virtual-machine/" rel="category tag">Virtual Machine</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://blog.metabrainz.org/tag/changelog/" rel="tag">changelog</a>, <a href="https://blog.metabrainz.org/tag/instructions/" rel="tag">instructions</a>, <a href="https://blog.metabrainz.org/tag/musicbrainz/" rel="tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/tag/schema-change/" rel="tag">schema change</a></span><span class="comments-link"><a href="https://blog.metabrainz.org/2023/05/15/musicbrainz-schema-change-release-2023-05-15-with-upgrade-instructions/#comments">4 Comments<span class="screen-reader-text"> on MusicBrainz schema change release, 2023-05-15 (with upgrade instructions)</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-10270 --> <article id="post-10163" class="post-10163 post type-post status-publish format-standard hentry category-musicbrainz category-schema-change-release tag-schema-change"> <header class="entry-header"> <h2 class="entry-title"><a href="https://blog.metabrainz.org/2023/03/15/schema-change-release-may-15-2023/" rel="bookmark">Schema change release: May 15, 2023</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p>MusicBrainz is announcing a new schema change release for May 15, 2023. The actual schema (database) changes we’ve detailed below shouldn’t have much perceivable impact on mirror servers, especially if you only use the web service; most are to remove unused tables/columns or tweak how certain tables are materialized.</p> <a href="https://blog.metabrainz.org/2023/03/15/schema-change-release-may-15-2023/#more-10163" class="more-link">Continue reading<span class="screen-reader-text"> “Schema change release: May 15, 2023”</span></a> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://blog.metabrainz.org/author/mwiencek/">mwiencek</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://blog.metabrainz.org/2023/03/15/schema-change-release-may-15-2023/" rel="bookmark"><time class="entry-date published" datetime="2023-03-15T20:00:00+00:00">March 15, 2023</time><time class="updated" datetime="2023-09-07T03:58:59+00:00">September 7, 2023</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://blog.metabrainz.org/category/musicbrainz/" rel="category tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/schema-change-release/" rel="category tag">Schema Change Release</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://blog.metabrainz.org/tag/schema-change/" rel="tag">schema change</a></span><span class="comments-link"><a href="https://blog.metabrainz.org/2023/03/15/schema-change-release-may-15-2023/#comments">1 Comment<span class="screen-reader-text"> on Schema change release: May 15, 2023</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-10163 --> <article id="post-9879" class="post-9879 post type-post status-publish format-standard hentry category-breaking-changes category-musicbrainz category-search-server category-updates tag-musicbrainz tag-search-server"> <header class="entry-header"> <h2 class="entry-title"><a href="https://blog.metabrainz.org/2022/11/24/end-of-life-for-external-access-to-musicbrainz-search-server/" rel="bookmark">End-of-life for external access to MusicBrainz search server</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p>For MusicBrainz mirrors, MusicBrainz server development, and custom applications, there used to be a direct access to <code>search.musicbrainz.org</code> which was actually inherited from the previous search infrastructure until 2018.</p> <p>Keeping it available in the current infrastructure uses a compatibility layer which has been unintentionally broken last year. This issue has been reported only once. The alternative and much more sensible solution which is to <a href="https://github.com/metabrainz/musicbrainz-docker">install a local search server</a> has improved in reliability and simplicity in the meantime. <a href="https://community.metabrainz.org/t/relevance-of-maintaining-search-musicbrainz-org/609645?u=yvanzo">Polling the community</a> shown that only one person would be interested which isn’t enough to justify the maintenance overhead for this replaceable service.</p> <p>Therefore it has been decided to close this access for good.</p> <p>Thanks to everyone who made this transitioning service to work and handle about 40k requests a day on average!</p> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://blog.metabrainz.org/author/yvanzo/">yvanzo</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://blog.metabrainz.org/2022/11/24/end-of-life-for-external-access-to-musicbrainz-search-server/" rel="bookmark"><time class="entry-date published updated" datetime="2022-11-24T16:55:50+00:00">November 24, 2022</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/" rel="category tag">Breaking Changes</a>, <a href="https://blog.metabrainz.org/category/musicbrainz/" rel="category tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/category/development/search-server/" rel="category tag">Search Server</a>, <a href="https://blog.metabrainz.org/category/development/updates/" rel="category tag">Updates</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://blog.metabrainz.org/tag/musicbrainz/" rel="tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/tag/search-server/" rel="tag">Search Server</a></span><span class="comments-link"><a href="https://blog.metabrainz.org/2022/11/24/end-of-life-for-external-access-to-musicbrainz-search-server/#respond">Leave a comment<span class="screen-reader-text"> on End-of-life for external access to MusicBrainz search server</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-9879 --> <article id="post-9589" class="post-9589 post type-post status-publish format-standard hentry category-development category-musicbrainz category-schema-change-release category-server category-updates tag-musicbrainz tag-schema-change"> <header class="entry-header"> <h2 class="entry-title"><a href="https://blog.metabrainz.org/2022/08/08/steps-to-fix-missing-genre-and-tag-data-on-musicbrainz-mirror-servers/" rel="bookmark">Steps to fix missing genre and tag data on MusicBrainz mirror servers</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p>If you recently updated your mirror server to the <a rel="noreferrer noopener" href="https://blog.metabrainz.org/2022/05/16/musicbrainz-schema-change-release-2022-05-16-with-upgrade-instructions/" target="_blank">2022-05-16 schema change release</a>, we’re sorry to say that a bug in our upgrade script caused aggregate genre and tag data (if you had imported any) to be deleted. If you need this data, it can be re-imported from a recent dump, and we’ve written a script to help automate that.</p> <p>You can safely ignore this post if</p> <ul class="wp-block-list"><li>you’re not running a <a rel="noreferrer noopener" href="https://musicbrainz.org/doc/Live_Data_Feed" target="_blank">mirror server</a>;</li><li>you’ve never imported the <a rel="noreferrer noopener" href="https://musicbrainz.org/doc/MusicBrainz_Database/Download#mbdump-derived.tar.bz2" target="_blank">derived data dump</a> or don’t make use of <a rel="noreferrer noopener" href="https://musicbrainz.org/tags" target="_blank">genre or tag data</a>;</li><li>you’ve already done a full re-import of your database after the schema change release.</li></ul> <p>To restore the genre and tag data, follow these steps:</p> <ol class="wp-block-list"><li>Ensure you’ve replicated up to the most recent replication packet available. If you’re not sure, run <code>./admin/replication/LoadReplicationChanges</code>. If you’re up-to-date, it should log “Replication packet … is not available.”</li><li>Run <code>git checkout production && git pull origin production</code>.</li><li>Turn off any cron jobs that update the database, including for replication.</li><li>Run <code>./admin/sql/updates/20220720-mbs-12508.sh</code>.</li><li>Restart any cron jobs that you disabled.</li></ol> <p>You can verify that this process worked by checking the number of tags in the database: <code>echo 'SELECT count(*) FROM tag' | ./admin/psql READWRITE</code>. It should be over 200,000.</p> <p>Sorry for the inconvenience, and let us know if you encounter any further issues.</p> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://blog.metabrainz.org/author/mwiencek/">mwiencek</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://blog.metabrainz.org/2022/08/08/steps-to-fix-missing-genre-and-tag-data-on-musicbrainz-mirror-servers/" rel="bookmark"><time class="entry-date published" datetime="2022-08-08T09:14:50+00:00">August 8, 2022</time><time class="updated" datetime="2022-08-25T18:53:58+00:00">August 25, 2022</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://blog.metabrainz.org/category/development/" rel="category tag">Development</a>, <a href="https://blog.metabrainz.org/category/musicbrainz/" rel="category tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/schema-change-release/" rel="category tag">Schema Change Release</a>, <a href="https://blog.metabrainz.org/category/development/server/" rel="category tag">Server</a>, <a href="https://blog.metabrainz.org/category/development/updates/" rel="category tag">Updates</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://blog.metabrainz.org/tag/musicbrainz/" rel="tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/tag/schema-change/" rel="tag">schema change</a></span><span class="comments-link"><a href="https://blog.metabrainz.org/2022/08/08/steps-to-fix-missing-genre-and-tag-data-on-musicbrainz-mirror-servers/#respond">Leave a comment<span class="screen-reader-text"> on Steps to fix missing genre and tag data on MusicBrainz mirror servers</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-9589 --> <article id="post-9463" class="post-9463 post type-post status-publish format-standard hentry category-musicbrainz category-schema-change-release category-search-server category-server category-updates tag-changelog tag-instructions tag-schema-change"> <header class="entry-header"> <h2 class="entry-title"><a href="https://blog.metabrainz.org/2022/05/16/musicbrainz-schema-change-release-2022-05-16-with-upgrade-instructions/" rel="bookmark">MusicBrainz schema change release, 2022-05-16 (with upgrade instructions)</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p>We’re happy to announce the release of our <a href="https://blog.metabrainz.org/2022/03/15/schema-change-release-may-16-2022/">May 2022 schema change</a> today! Thanks to all who were patient during today’s downtime as we released everything to our production servers, and thanks to ikerm2003, mfmeulenbelt rinmon and salo.rock for updating the translations.</p> <p>This is once again a fairly minor release as far as schema changes go, but please do report any issues that you come across, especially related to the propagation of ratings and tags.</p> <a href="https://blog.metabrainz.org/2022/05/16/musicbrainz-schema-change-release-2022-05-16-with-upgrade-instructions/#more-9463" class="more-link">Continue reading<span class="screen-reader-text"> “MusicBrainz schema change release, 2022-05-16 (with upgrade instructions)”</span></a> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://blog.metabrainz.org/author/reosarevok/">reosarevok</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://blog.metabrainz.org/2022/05/16/musicbrainz-schema-change-release-2022-05-16-with-upgrade-instructions/" rel="bookmark"><time class="entry-date published" datetime="2022-05-16T21:48:53+00:00">May 16, 2022</time><time class="updated" datetime="2023-09-07T04:22:21+00:00">September 7, 2023</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://blog.metabrainz.org/category/musicbrainz/" rel="category tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/schema-change-release/" rel="category tag">Schema Change Release</a>, <a href="https://blog.metabrainz.org/category/development/search-server/" rel="category tag">Search Server</a>, <a href="https://blog.metabrainz.org/category/development/server/" rel="category tag">Server</a>, <a href="https://blog.metabrainz.org/category/development/updates/" rel="category tag">Updates</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://blog.metabrainz.org/tag/changelog/" rel="tag">changelog</a>, <a href="https://blog.metabrainz.org/tag/instructions/" rel="tag">instructions</a>, <a href="https://blog.metabrainz.org/tag/schema-change/" rel="tag">schema change</a></span><span class="comments-link"><a href="https://blog.metabrainz.org/2022/05/16/musicbrainz-schema-change-release-2022-05-16-with-upgrade-instructions/#comments">10 Comments<span class="screen-reader-text"> on MusicBrainz schema change release, 2022-05-16 (with upgrade instructions)</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-9463 --> <article id="post-9422" class="post-9422 post type-post status-publish format-standard hentry category-musicbrainz category-schema-change-release tag-schema-change"> <header class="entry-header"> <h2 class="entry-title"><a href="https://blog.metabrainz.org/2022/03/15/schema-change-release-may-16-2022/" rel="bookmark">Schema change release: May 16, 2022</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p>Today we’re announcing a MusicBrainz database schema change release planned for May 16, 2022. The majority of these changes follow the theme of improving data integrity and consistency, performance, or just cleaning up old cruft. Others relate to new features for genres and artist credits. We’re also introducing a new entity based on tags, like genres that came before it: Mood. See below for more details, including information on how these changes affect the schema or existing data. We expect people will encounter zero breaking changes, but it doesn’t hurt to double check, especially if you have a specific or non-standard use of the database!</p> <p>Here’s our list of tickets for the <a href="https://tickets.metabrainz.org/projects/MBS/versions/12016">Spring 2022 schema change</a>:</p> <a href="https://blog.metabrainz.org/2022/03/15/schema-change-release-may-16-2022/#more-9422" class="more-link">Continue reading<span class="screen-reader-text"> “Schema change release: May 16, 2022”</span></a> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://blog.metabrainz.org/author/mwiencek/">mwiencek</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://blog.metabrainz.org/2022/03/15/schema-change-release-may-16-2022/" rel="bookmark"><time class="entry-date published" datetime="2022-03-15T18:55:31+00:00">March 15, 2022</time><time class="updated" datetime="2023-09-07T04:23:30+00:00">September 7, 2023</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://blog.metabrainz.org/category/musicbrainz/" rel="category tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/schema-change-release/" rel="category tag">Schema Change Release</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://blog.metabrainz.org/tag/schema-change/" rel="tag">schema change</a></span><span class="comments-link"><a href="https://blog.metabrainz.org/2022/03/15/schema-change-release-may-16-2022/#comments">2 Comments<span class="screen-reader-text"> on Schema change release: May 16, 2022</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-9422 --> <article id="post-8835" class="post-8835 post type-post status-publish format-standard hentry category-musicbrainz category-schema-change-release category-server category-updates tag-changelog tag-instructions tag-schema-change"> <header class="entry-header"> <h2 class="entry-title"><a href="https://blog.metabrainz.org/2021/05/18/musicbrainz-schema-change-release-2021-05-17-with-upgrade-instructions/" rel="bookmark">MusicBrainz schema change release, 2021-05-17 (with upgrade instructions)</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p>We’re happy to announce the release of our <a href="https://blog.metabrainz.org/2021/03/17/schema-change-release-may-17-2021/">May 2021 schema change</a> today! Thanks to all who were patient during today’s downtime as we released everything to our production servers.</p> <p>This is a fairly minor release as far as schema changes go, but please do report any issues that you come across, especially related to the display of recordings, releases and release groups on artist and release group pages.</p> <p>New, user-facing changes with this release are limited to the new ability to merge collections (<a href="https://tickets.metabrainz.org/browse/MBS-10208">MBS-10208</a>) and the addition of ratings for places (<a href="https://tickets.metabrainz.org/browse/MBS-11451">MBS-11451</a>). Additionally, <a href="https://tickets.metabrainz.org/browse/MBS-11463">MBS-11463</a> adds a new view that is used to fix a couple small requests related to disc IDs (<a href="https://tickets.metabrainz.org/browse/MBS-11268">MBS-11268</a>) and release length calculation (<a href="https://tickets.metabrainz.org/browse/MBS-11349">MBS-11349</a>). Two other changes – adding a first-release-date field to recordings (<a href="https://tickets.metabrainz.org/browse/MBS-1424">MBS-1424</a>) and support for PKCE in OAuth (<a href="https://tickets.metabrainz.org/browse/MBS-11097">MBS-11097</a>) are more or less end-user affecting but were already released on the main MusicBrainz servers a while ago. All other changes are under the hood only.</p> <p>We ran into a few complications while working on this schema change update, so we decided to postpone two changes to our October schema change to ensure only stuff we are more confident on is released. Those are <a href="https://tickets.metabrainz.org/browse/MBS-11457">MBS-11457</a>, which involves dropping the <em><code>ordering_attribute</code></em> column for series and would have had no direct effect on user experience, and <a href="https://tickets.metabrainz.org/browse/MBS-11456">MBS-11456</a>, which would have added MBIDs for artist credits. </p> <p>A few of the released new features and improvements — namely the first-release-date field for recordings, and the performance improvements to artist pages — make use of new materialized tables. These tables aren’t dumped, nor are they replicated, since they’re derived entirely from primary table data. Rather, we’ve added a new script to build them (admin/BuildMaterializedTables, included in the upgrade instructions below), and triggers to keep them up-to-date once they’re built. These triggers are created on replicated servers, too. If you use the web interface or web service at all, just note the extra step of running BuildMaterializedTables after upgrade.sh below!</p> <p>A new release of MusicBrainz Docker is also available that solves an issue for live indexing and matches this update of MusicBrainz Server. See the <a href="https://github.com/metabrainz/musicbrainz-docker/releases/tag/v-2021-05-19">release notes</a> for update instructions.</p> <p>Now, on to the instructions.</p> <h2 class="wp-block-heading">Schema Change Upgrade Instructions</h2> <p>Note: Importing the latest data dump is always a valid alternative to running <code>./upgrade.sh</code> on an existing database, if you’d prefer to also get new data in one go. Just follow the relevant instructions in INSTALL.md. The git tag is <a href="https://github.com/metabrainz/musicbrainz-server/tree/v-2021-05-19-hotfixes">v-2021-05-19-hotfixes</a>. The rest of the instructions here assume an in-place upgrade.</p> <ol class="wp-block-list"><li>Make sure <code>DB_SCHEMA_SEQUENCE</code> is set to 25 in <code>lib/DBDefs.pm</code>.</li><li>If you’re using the live data feed (your <code>REPLICATION_TYPE</code> is set to <code>RT_SLAVE</code>), ensure you’ve replicated up to the most recent replication packet available with the old schema. If you’re not sure, run <code>./admin/replication/LoadReplicationChanges</code> and see what it tells you; if you’re ready to upgrade, it should say “This replication packet matches schema sequence #26, but the database is currently at #25.”</li><li>Take down the web server running MusicBrainz, if you’re running a web server.</li><li>Turn off cron jobs if you’re automatically updating the database via cron jobs.</li><li>If you’re using the live search indexing, stop it and, assuming <code>sir</code> is under the same directory as <code>musicbrainz-server</code>, run <code>cd ../sir && python2.7 -m sir triggers && cd - && ./admin/psql < ../sir/sql/DropTriggers.sql && ./admin/psql < ../sir/sql/DropFunctions.sql</code></li><li>Switch to the new code with <code>git fetch origin</code> followed by <code>git checkout v-2021-05-19-hotfixes</code>.</li><li>Install newer dependencies Perl 5.30 or later and NodeJS 16 according to <a href="https://github.com/metabrainz/musicbrainz-server/blob/v-2021-05-17-schema-change/INSTALL.md#prerequisites">install prerequisites</a>.</li><li>Run <code>cpanm --installdeps --notest .</code> (note the dot at the end) to ensure your perl-based dependencies are up to date.</li><li>Run <code>./upgrade.sh</code> (it may take a while to vacuum at the end).</li><li>Set <code>DB_SCHEMA_SEQUENCE</code> to 26 in <code>lib/DBDefs.pm</code> as instructed by the output of <code>./upgrade.sh</code>.</li><li>If you’re using the web interface or web service, run <code>./admin/BuildMaterializedTables --database=MAINTENANCE all</code> to build new materialized tables. These will take several additional gigabytes of spaces and be kept up-to-date automatically via triggers. For more information, see INSTALL.md.</li><li>If you’re using the live search indexing, assuming <code>sir</code> is under the same directory as <code>musicbrainz-server</code>, run <code>cd ../sir && git fetch origin && git checkout v2.1.0 && python2.7 -m sir triggers && cd - && ./admin/psql < ../sir/sql/CreateFunctions.sql && ./admin/psql < ../sir/sql/CreateTriggers.sql</code> and rebuild indexes (by running <code>cd ../sir && python2.7 -m sir reindex && cd -</code>) then start it in watch mode (with <code>cd ../sir && git fetch origin && git checkout v2.1.0 && python2.7 -m sir amqp_watch</code>)</li><li>Turn cron jobs back on, if applicable.</li><li>Restart the MusicBrainz web server, if applicable. It’s also recommended you restart Redis. If you’re accessing your MusicBrainz server in a web browser, run <code>./script/compile_resources.sh</code>.</li></ol> <p>Here’s the list of resolved tickets:</p> <h2 class="wp-block-heading">New Feature</h2> <ul class="wp-block-list"><li>[<a href="https://tickets.metabrainz.org/browse/MBS-10208">MBS-10208</a>] – Allow merging collections</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11451">MBS-11451</a>] – Support ratings for places</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11463">MBS-11463</a>] – Add view to easily access medium track lengths</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11652">MBS-11652</a>] – Add support for artist series (hotfixed)</li></ul> <h2 class="wp-block-heading">Improvement</h2> <ul class="wp-block-list"><li>[<a href="https://tickets.metabrainz.org/browse/MBS-10962">MBS-10962</a>] – Speed up listing artist’s releases</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11268">MBS-11268</a>] – Show “Set track durations” on release/discids page</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11460">MBS-11460</a>] – Add materialized tables to fetch release groups by artist or track artist</li></ul> <h2 class="wp-block-heading">Database Schema Change Task</h2> <ul class="wp-block-list"><li>[<a href="https://tickets.metabrainz.org/browse/MBS-10647">MBS-10647</a>] – Add [no label] to b_del_label_special trigger for labels</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11453">MBS-11453</a>] – Change entity0_cardinality, entity1_cardinality to SMALLINT</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11459">MBS-11459</a>] – Create the edit_data_type_info function on mirrors</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11464">MBS-11464</a>] – Drop table statistics.log_statistic</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11466">MBS-11466</a>] – Change language.frequency and script.frequency to SMALLINT</li></ul> <h2 class="wp-block-heading">Previously Released Changes</h2> <ul class="wp-block-list" id="block-470c562c-21ba-4d8c-8cec-6dbd50a1b39d"><li>[<a href="https://tickets.metabrainz.org/browse/MBS-1424">MBS-1424</a>] – Add a ‘First release date’ field to recordings</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-10821">MBS-10821</a>] – Edit changing medium tracklist and format is stuck</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11097">MBS-11097</a>] – Support PKCE (Proof Key for Code Exchange) by OAuth clients</li><li>[<a href="https://tickets.metabrainz.org/browse/MBS-11431">MBS-11431</a>] – Speed up /ws/js/check_duplicates</li></ul> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://blog.metabrainz.org/author/reosarevok/">reosarevok</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://blog.metabrainz.org/2021/05/18/musicbrainz-schema-change-release-2021-05-17-with-upgrade-instructions/" rel="bookmark"><time class="entry-date published" datetime="2021-05-18T03:18:02+00:00">May 18, 2021</time><time class="updated" datetime="2021-05-20T00:05:46+00:00">May 20, 2021</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://blog.metabrainz.org/category/musicbrainz/" rel="category tag">MusicBrainz</a>, <a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/schema-change-release/" rel="category tag">Schema Change Release</a>, <a href="https://blog.metabrainz.org/category/development/server/" rel="category tag">Server</a>, <a href="https://blog.metabrainz.org/category/development/updates/" rel="category tag">Updates</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://blog.metabrainz.org/tag/changelog/" rel="tag">changelog</a>, <a href="https://blog.metabrainz.org/tag/instructions/" rel="tag">instructions</a>, <a href="https://blog.metabrainz.org/tag/schema-change/" rel="tag">schema change</a></span><span class="comments-link"><a href="https://blog.metabrainz.org/2021/05/18/musicbrainz-schema-change-release-2021-05-17-with-upgrade-instructions/#respond">Leave a comment<span class="screen-reader-text"> on MusicBrainz schema change release, 2021-05-17 (with upgrade instructions)</span></a></span> </footer><!-- .entry-footer --> </article><!-- #post-8835 --> <nav class="navigation pagination" aria-label="Posts pagination"> <h2 class="screen-reader-text">Posts pagination</h2> <div class="nav-links"><span aria-current="page" class="page-numbers current"><span class="meta-nav screen-reader-text">Page </span>1</span> <a class="page-numbers" href="https://blog.metabrainz.org/category/development/updates/breaking-changes/page/2/"><span class="meta-nav screen-reader-text">Page </span>2</a> <span class="page-numbers dots">…</span> <a class="page-numbers" href="https://blog.metabrainz.org/category/development/updates/breaking-changes/page/7/"><span class="meta-nav screen-reader-text">Page </span>7</a> <a class="next page-numbers" href="https://blog.metabrainz.org/category/development/updates/breaking-changes/page/2/">Next page</a></div> </nav> </main><!-- .site-main --> </div><!-- .content-area --> <aside id="secondary" class="sidebar widget-area"> <section id="block-7" class="widget widget_block"><h2 class="widget-title">Links</h2><div class="wp-widget-group__inner-blocks"> <ul class="wp-block-list"> <li><a href="https://metabrainz.org/">MetaBrainz Foundation</a></li> <li><a href="https://community.metabrainz.org/">MetaBrainz Forums</a></li> <li><a href="https://bsky.app/profile/metabrainz.org">Bluesky</a> / <a href="https://mastodon.social/@metabrainz">Mastodon</a> / <a href="https://twitter.com/MetaBrainz">Twitter/X</a></li> </ul> <ul class="wp-block-list"> <li><a href="https://musicbrainz.org/">MusicBrainz</a></li> <li><a href="https://listenbrainz.org/">ListenBrainz</a></li> <li><a href="https://bookbrainz.org/">BookBrainz</a></li> </ul> </div></section><section id="search-2" class="widget widget_search"><h2 class="widget-title">Search</h2> <form role="search" method="get" class="search-form" action="https://blog.metabrainz.org/"> <label> <span class="screen-reader-text"> Search for: </span> <input type="search" class="search-field" placeholder="Search …" value="" name="s" /> </label> <button type="submit" class="search-submit"><span class="screen-reader-text"> Search </span></button> </form> </section><section id="recent-comments-2" class="widget widget_recent_comments"><h2 class="widget-title">Recent Comments</h2> <table class="recentcommentsavatar" cellspacing="0" cellpadding="0" border="0"> <tr><td title="aerozol" class="recentcommentsavatartop" style="height:32px; width:32px;"><a href="http://www.paperski.com" rel="nofollow"></a></td><td class="recentcommentstexttop" style=""><a href="http://www.paperski.com" rel="nofollow">aerozol</a> on <a href="https://blog.metabrainz.org/2024/11/18/musicbrainz-server-update-2024-11-18/#comment-366366">MusicBrainz Server update,…</a></td></tr><tr><td title="George" class="recentcommentsavatarend" style="height:32px; width:32px;"></td><td class="recentcommentstextend" style="">George on <a href="https://blog.metabrainz.org/2024/11/11/the-strangest-releases-in-musicbrainz-weird-and-wonderful/#comment-366364">The Strangest Releases in Musi…</a></td></tr><tr><td title="aerozol" class="recentcommentsavatarend" style="height:32px; width:32px;"><a href="http://www.paperski.com" rel="nofollow"></a></td><td class="recentcommentstextend" style=""><a href="http://www.paperski.com" rel="nofollow">aerozol</a> on <a href="https://blog.metabrainz.org/2024/11/13/welcome-julian45-and-atj/#comment-366362">Welcome Julian45 (and atj…</a></td></tr><tr><td title="aerozol" class="recentcommentsavatarend" style="height:32px; width:32px;"><a href="http://www.paperski.com" rel="nofollow"></a></td><td class="recentcommentstextend" style=""><a href="http://www.paperski.com" rel="nofollow">aerozol</a> on <a href="https://blog.metabrainz.org/2024/11/06/gsoc-2024-integrating-imports-into-bookbrainz/#comment-366361">GSoC 2024: Integrating imports…</a></td></tr><tr><td title="ApeKattQuest, MonkeyPython" class="recentcommentsavatarend" style="height:32px; width:32px;"></td><td class="recentcommentstextend" style="">ApeKattQuest, Monkey… on <a href="https://blog.metabrainz.org/2024/09/10/towards-fair-streaming-introducing-the-fairmuse-project/#comment-366360">Towards Fair Streaming: Introd…</a></td></tr> </table> </section><section id="categories-2" class="widget widget_categories"><h2 class="widget-title">Categories</h2><nav aria-label="Categories"> <ul> <li class="cat-item cat-item-304848241"><a href="https://blog.metabrainz.org/category/acousticbrainz/">AcousticBrainz</a> (17) </li> <li class="cat-item cat-item-12894481"><a href="https://blog.metabrainz.org/category/musicbrainz/android-app/">Android App</a> (9) </li> <li class="cat-item cat-item-494176"><a href="https://blog.metabrainz.org/category/metabrainz/annual-report/">Annual Report</a> (9) </li> <li class="cat-item cat-item-91682"><a href="https://blog.metabrainz.org/category/april-fools-day/">April Fools' Day</a> (7) </li> <li class="cat-item cat-item-143163948"><a href="https://blog.metabrainz.org/category/better-late-than-never-dept/">Better late than never dept.</a> (14) </li> <li class="cat-item cat-item-635784"><a href="https://blog.metabrainz.org/category/metabrainz/board-meeting-minutes/">Board Meeting Minutes</a> (2) </li> <li class="cat-item cat-item-462334187"><a href="https://blog.metabrainz.org/category/bookbrainz/">BookBrainz</a> (18) </li> <li class="cat-item cat-item-19867758 current-cat"><a aria-current="page" href="https://blog.metabrainz.org/category/development/updates/breaking-changes/">Breaking Changes</a> (7) </li> <li class="cat-item cat-item-772072676"><a href="https://blog.metabrainz.org/category/chatbrainz/">chatbrainz</a> (1) </li> <li class="cat-item cat-item-31409893"><a href="https://blog.metabrainz.org/category/community/cleanup-of-the-month/">Cleanup of the Month</a> (6) </li> <li class="cat-item cat-item-424687959"><a href="https://blog.metabrainz.org/category/google-programs/code%e2%80%90in/">Code‐in</a> (4) </li> <li class="cat-item cat-item-55382"><a href="https://blog.metabrainz.org/category/collaborations/">Collaborations</a> (4) </li> <li class="cat-item cat-item-2528"><a href="https://blog.metabrainz.org/category/community/">Community</a> (142) </li> <li class="cat-item cat-item-71159043"><a href="https://blog.metabrainz.org/category/community/community-recap/">Community Recap</a> (3) </li> <li class="cat-item cat-item-143163949"><a href="https://blog.metabrainz.org/category/musicbrainz/cover-art-archive/">Cover Art Archive</a> (5) </li> <li class="cat-item cat-item-225948242"><a href="https://blog.metabrainz.org/category/critiquebrainz/">CritiqueBrainz</a> (12) </li> <li class="cat-item cat-item-22379"><a href="https://blog.metabrainz.org/category/data/">Data</a> (30) </li> <li class="cat-item cat-item-780 current-cat-ancestor"><a href="https://blog.metabrainz.org/category/development/">Development</a> (251) </li> <li class="cat-item cat-item-772478166"><a href="https://blog.metabrainz.org/category/musicbrainz/event-art-archive/">Event Art Archive</a> (4) </li> <li class="cat-item cat-item-54"><a href="https://blog.metabrainz.org/category/general/">General</a> (134) </li> <li class="cat-item cat-item-23185871"><a href="https://blog.metabrainz.org/category/google-programs/">Google Programs</a> (18) </li> <li class="cat-item cat-item-79"><a href="https://blog.metabrainz.org/category/hardware/">Hardware</a> (24) </li> <li class="cat-item cat-item-149"><a href="https://blog.metabrainz.org/category/general/hosting/">Hosting</a> (69) </li> <li class="cat-item cat-item-6850"><a href="https://blog.metabrainz.org/category/musicbrainz/instruments/">Instruments</a> (10) </li> <li class="cat-item cat-item-47801351"><a href="https://blog.metabrainz.org/category/internet-pests/">Internet pests</a> (2) </li> <li class="cat-item cat-item-3558"><a href="https://blog.metabrainz.org/category/jobs/">Jobs</a> (1) </li> <li class="cat-item cat-item-2283"><a href="https://blog.metabrainz.org/category/legal/">Legal</a> (1) </li> <li class="cat-item cat-item-143163951"><a href="https://blog.metabrainz.org/category/libmusicbrainz/">libmusicbrainz</a> (15) </li> <li class="cat-item cat-item-7394916"><a href="https://blog.metabrainz.org/category/libtunepimp/">libtunepimp</a> (8) </li> <li class="cat-item cat-item-19606597"><a href="https://blog.metabrainz.org/category/data/linked-open-data/">Linked open data</a> (2) </li> <li class="cat-item cat-item-399253082"><a href="https://blog.metabrainz.org/category/listenbrainz/">ListenBrainz</a> (58) </li> <li class="cat-item cat-item-646467582"><a href="https://blog.metabrainz.org/category/messybrainz/">MessyBrainz</a> (1) </li> <li class="cat-item cat-item-122663067"><a href="https://blog.metabrainz.org/category/metabrainz/">MetaBrainz</a> (121) </li> <li class="cat-item cat-item-42827"><a href="https://blog.metabrainz.org/category/moderation/">Moderation</a> (8) </li> <li class="cat-item cat-item-170964"><a href="https://blog.metabrainz.org/category/musicbrainz/">MusicBrainz</a> (237) </li> <li class="cat-item cat-item-1511234"><a href="https://blog.metabrainz.org/category/musicbrainz/ngs/">NGS</a> (69) </li> <li class="cat-item cat-item-106116"><a href="https://blog.metabrainz.org/category/musicbrainz/picard/">Picard</a> (132) </li> <li class="cat-item cat-item-201310711"><a href="https://blog.metabrainz.org/category/development/updates/breaking-changes/schema-change-release/">Schema Change Release</a> (66) </li> <li class="cat-item cat-item-3079703"><a href="https://blog.metabrainz.org/category/development/search-server/">Search Server</a> (19) </li> <li class="cat-item cat-item-18568"><a href="https://blog.metabrainz.org/category/development/server/">Server</a> (455) </li> <li class="cat-item cat-item-646632085"><a href="https://blog.metabrainz.org/category/spambrainz/">SpamBrainz</a> (2) </li> <li class="cat-item cat-item-5959850"><a href="https://blog.metabrainz.org/category/style-guidelines/">Style Guidelines</a> (23) </li> <li class="cat-item cat-item-13930"><a href="https://blog.metabrainz.org/category/summaries/">Summaries</a> (6) </li> <li class="cat-item cat-item-176372"><a href="https://blog.metabrainz.org/category/google-programs/summer-of-code/">Summer of Code</a> (87) </li> <li class="cat-item cat-item-115537"><a href="https://blog.metabrainz.org/category/summit/">Summit</a> (25) </li> <li class="cat-item cat-item-143163953"><a href="https://blog.metabrainz.org/category/musicbrainz/tagger-affiliates/">Tagger Affiliates</a> (9) </li> <li class="cat-item cat-item-1"><a href="https://blog.metabrainz.org/category/uncategorized/">Uncategorized</a> (59) </li> <li class="cat-item cat-item-1171 current-cat-parent current-cat-ancestor"><a href="https://blog.metabrainz.org/category/development/updates/">Updates</a> (350) </li> <li class="cat-item cat-item-95007"><a href="https://blog.metabrainz.org/category/development/virtual-machine/">Virtual Machine</a> (88) </li> <li class="cat-item cat-item-1359"><a href="https://blog.metabrainz.org/category/wiki/">Wiki</a> (7) </li> <li class="cat-item cat-item-143163954"><a href="https://blog.metabrainz.org/category/musicbrainz/windowstagger/">WindowsTagger</a> (33) </li> </ul> </nav></section><section id="archives-2" class="widget widget_archive"><h2 class="widget-title">Archives</h2><nav aria-label="Archives"> <ul> <li><a href='https://blog.metabrainz.org/2024/11/'>November 2024</a> (6)</li> <li><a href='https://blog.metabrainz.org/2024/10/'>October 2024</a> (4)</li> <li><a href='https://blog.metabrainz.org/2024/09/'>September 2024</a> (7)</li> <li><a href='https://blog.metabrainz.org/2024/08/'>August 2024</a> (8)</li> <li><a href='https://blog.metabrainz.org/2024/07/'>July 2024</a> (3)</li> <li><a href='https://blog.metabrainz.org/2024/06/'>June 2024</a> (5)</li> <li><a href='https://blog.metabrainz.org/2024/05/'>May 2024</a> (6)</li> <li><a href='https://blog.metabrainz.org/2024/04/'>April 2024</a> (5)</li> <li><a href='https://blog.metabrainz.org/2024/03/'>March 2024</a> (5)</li> <li><a href='https://blog.metabrainz.org/2024/02/'>February 2024</a> (3)</li> <li><a href='https://blog.metabrainz.org/2024/01/'>January 2024</a> (5)</li> <li><a href='https://blog.metabrainz.org/2023/12/'>December 2023</a> (4)</li> <li><a href='https://blog.metabrainz.org/2023/11/'>November 2023</a> (5)</li> <li><a href='https://blog.metabrainz.org/2023/10/'>October 2023</a> (6)</li> <li><a href='https://blog.metabrainz.org/2023/09/'>September 2023</a> (8)</li> <li><a href='https://blog.metabrainz.org/2023/08/'>August 2023</a> (8)</li> <li><a href='https://blog.metabrainz.org/2023/07/'>July 2023</a> (6)</li> <li><a href='https://blog.metabrainz.org/2023/06/'>June 2023</a> (5)</li> <li><a href='https://blog.metabrainz.org/2023/05/'>May 2023</a> (9)</li> <li><a href='https://blog.metabrainz.org/2023/04/'>April 2023</a> (3)</li> <li><a href='https://blog.metabrainz.org/2023/03/'>March 2023</a> (3)</li> <li><a href='https://blog.metabrainz.org/2023/02/'>February 2023</a> (5)</li> <li><a href='https://blog.metabrainz.org/2023/01/'>January 2023</a> (4)</li> <li><a href='https://blog.metabrainz.org/2022/12/'>December 2022</a> (2)</li> <li><a href='https://blog.metabrainz.org/2022/11/'>November 2022</a> (5)</li> <li><a href='https://blog.metabrainz.org/2022/10/'>October 2022</a> (3)</li> <li><a href='https://blog.metabrainz.org/2022/09/'>September 2022</a> (6)</li> <li><a href='https://blog.metabrainz.org/2022/08/'>August 2022</a> (4)</li> <li><a href='https://blog.metabrainz.org/2022/07/'>July 2022</a> (3)</li> <li><a href='https://blog.metabrainz.org/2022/06/'>June 2022</a> (3)</li> <li><a href='https://blog.metabrainz.org/2022/05/'>May 2022</a> (6)</li> <li><a href='https://blog.metabrainz.org/2022/04/'>April 2022</a> (3)</li> <li><a href='https://blog.metabrainz.org/2022/03/'>March 2022</a> (5)</li> <li><a href='https://blog.metabrainz.org/2022/02/'>February 2022</a> (4)</li> <li><a href='https://blog.metabrainz.org/2022/01/'>January 2022</a> (3)</li> <li><a href='https://blog.metabrainz.org/2021/12/'>December 2021</a> (7)</li> <li><a href='https://blog.metabrainz.org/2021/11/'>November 2021</a> (3)</li> <li><a href='https://blog.metabrainz.org/2021/10/'>October 2021</a> (4)</li> <li><a href='https://blog.metabrainz.org/2021/09/'>September 2021</a> (3)</li> <li><a href='https://blog.metabrainz.org/2021/08/'>August 2021</a> (6)</li> <li><a href='https://blog.metabrainz.org/2021/07/'>July 2021</a> (2)</li> <li><a href='https://blog.metabrainz.org/2021/06/'>June 2021</a> (5)</li> <li><a href='https://blog.metabrainz.org/2021/05/'>May 2021</a> (5)</li> <li><a href='https://blog.metabrainz.org/2021/04/'>April 2021</a> (6)</li> <li><a href='https://blog.metabrainz.org/2021/03/'>March 2021</a> (6)</li> <li><a href='https://blog.metabrainz.org/2021/02/'>February 2021</a> (4)</li> <li><a href='https://blog.metabrainz.org/2021/01/'>January 2021</a> (2)</li> <li><a href='https://blog.metabrainz.org/2020/12/'>December 2020</a> (5)</li> <li><a href='https://blog.metabrainz.org/2020/11/'>November 2020</a> (3)</li> <li><a href='https://blog.metabrainz.org/2020/10/'>October 2020</a> (6)</li> <li><a href='https://blog.metabrainz.org/2020/09/'>September 2020</a> (4)</li> <li><a href='https://blog.metabrainz.org/2020/08/'>August 2020</a> (8)</li> <li><a href='https://blog.metabrainz.org/2020/07/'>July 2020</a> (4)</li> <li><a href='https://blog.metabrainz.org/2020/06/'>June 2020</a> (4)</li> <li><a href='https://blog.metabrainz.org/2020/05/'>May 2020</a> (5)</li> <li><a href='https://blog.metabrainz.org/2020/04/'>April 2020</a> (5)</li> <li><a href='https://blog.metabrainz.org/2020/03/'>March 2020</a> (3)</li> <li><a href='https://blog.metabrainz.org/2020/02/'>February 2020</a> (8)</li> <li><a href='https://blog.metabrainz.org/2020/01/'>January 2020</a> (3)</li> <li><a href='https://blog.metabrainz.org/2019/12/'>December 2019</a> (3)</li> <li><a href='https://blog.metabrainz.org/2019/11/'>November 2019</a> (4)</li> <li><a href='https://blog.metabrainz.org/2019/10/'>October 2019</a> (4)</li> <li><a href='https://blog.metabrainz.org/2019/09/'>September 2019</a> (4)</li> <li><a href='https://blog.metabrainz.org/2019/08/'>August 2019</a> (7)</li> <li><a href='https://blog.metabrainz.org/2019/06/'>June 2019</a> (3)</li> <li><a href='https://blog.metabrainz.org/2019/05/'>May 2019</a> (4)</li> <li><a href='https://blog.metabrainz.org/2019/04/'>April 2019</a> (3)</li> <li><a href='https://blog.metabrainz.org/2019/03/'>March 2019</a> (5)</li> <li><a href='https://blog.metabrainz.org/2019/02/'>February 2019</a> (2)</li> <li><a href='https://blog.metabrainz.org/2019/01/'>January 2019</a> (2)</li> <li><a href='https://blog.metabrainz.org/2018/12/'>December 2018</a> (3)</li> <li><a href='https://blog.metabrainz.org/2018/11/'>November 2018</a> (4)</li> <li><a href='https://blog.metabrainz.org/2018/10/'>October 2018</a> (3)</li> <li><a href='https://blog.metabrainz.org/2018/09/'>September 2018</a> (9)</li> <li><a href='https://blog.metabrainz.org/2018/08/'>August 2018</a> (7)</li> <li><a href='https://blog.metabrainz.org/2018/07/'>July 2018</a> (4)</li> <li><a href='https://blog.metabrainz.org/2018/06/'>June 2018</a> (3)</li> <li><a href='https://blog.metabrainz.org/2018/05/'>May 2018</a> (3)</li> <li><a href='https://blog.metabrainz.org/2018/04/'>April 2018</a> (2)</li> <li><a href='https://blog.metabrainz.org/2018/03/'>March 2018</a> (7)</li> <li><a href='https://blog.metabrainz.org/2018/02/'>February 2018</a> (3)</li> <li><a href='https://blog.metabrainz.org/2018/01/'>January 2018</a> (3)</li> <li><a href='https://blog.metabrainz.org/2017/12/'>December 2017</a> (2)</li> <li><a href='https://blog.metabrainz.org/2017/11/'>November 2017</a> (2)</li> <li><a href='https://blog.metabrainz.org/2017/10/'>October 2017</a> (2)</li> <li><a href='https://blog.metabrainz.org/2017/09/'>September 2017</a> (10)</li> <li><a href='https://blog.metabrainz.org/2017/08/'>August 2017</a> (7)</li> <li><a href='https://blog.metabrainz.org/2017/07/'>July 2017</a> (3)</li> <li><a href='https://blog.metabrainz.org/2017/06/'>June 2017</a> (5)</li> <li><a href='https://blog.metabrainz.org/2017/05/'>May 2017</a> (6)</li> <li><a href='https://blog.metabrainz.org/2017/04/'>April 2017</a> (3)</li> <li><a href='https://blog.metabrainz.org/2017/03/'>March 2017</a> (5)</li> <li><a href='https://blog.metabrainz.org/2017/02/'>February 2017</a> (5)</li> <li><a href='https://blog.metabrainz.org/2017/01/'>January 2017</a> (4)</li> <li><a href='https://blog.metabrainz.org/2016/12/'>December 2016</a> (5)</li> <li><a href='https://blog.metabrainz.org/2016/11/'>November 2016</a> (5)</li> <li><a href='https://blog.metabrainz.org/2016/10/'>October 2016</a> (2)</li> <li><a href='https://blog.metabrainz.org/2016/09/'>September 2016</a> (1)</li> <li><a href='https://blog.metabrainz.org/2016/08/'>August 2016</a> (7)</li> <li><a href='https://blog.metabrainz.org/2016/07/'>July 2016</a> (3)</li> <li><a href='https://blog.metabrainz.org/2016/06/'>June 2016</a> (3)</li> <li><a href='https://blog.metabrainz.org/2016/05/'>May 2016</a> (14)</li> <li><a href='https://blog.metabrainz.org/2016/04/'>April 2016</a> (4)</li> <li><a href='https://blog.metabrainz.org/2016/03/'>March 2016</a> (8)</li> <li><a href='https://blog.metabrainz.org/2016/02/'>February 2016</a> (6)</li> <li><a href='https://blog.metabrainz.org/2016/01/'>January 2016</a> (4)</li> <li><a href='https://blog.metabrainz.org/2015/12/'>December 2015</a> (4)</li> <li><a href='https://blog.metabrainz.org/2015/11/'>November 2015</a> (6)</li> <li><a href='https://blog.metabrainz.org/2015/10/'>October 2015</a> (2)</li> <li><a href='https://blog.metabrainz.org/2015/09/'>September 2015</a> (9)</li> <li><a href='https://blog.metabrainz.org/2015/08/'>August 2015</a> (5)</li> <li><a href='https://blog.metabrainz.org/2015/07/'>July 2015</a> (12)</li> <li><a href='https://blog.metabrainz.org/2015/06/'>June 2015</a> (4)</li> <li><a href='https://blog.metabrainz.org/2015/05/'>May 2015</a> (8)</li> <li><a href='https://blog.metabrainz.org/2015/04/'>April 2015</a> (5)</li> <li><a href='https://blog.metabrainz.org/2015/03/'>March 2015</a> (9)</li> <li><a href='https://blog.metabrainz.org/2015/02/'>February 2015</a> (5)</li> <li><a href='https://blog.metabrainz.org/2015/01/'>January 2015</a> (6)</li> <li><a href='https://blog.metabrainz.org/2014/12/'>December 2014</a> (6)</li> <li><a href='https://blog.metabrainz.org/2014/11/'>November 2014</a> (8)</li> <li><a href='https://blog.metabrainz.org/2014/10/'>October 2014</a> (6)</li> <li><a href='https://blog.metabrainz.org/2014/09/'>September 2014</a> (5)</li> <li><a href='https://blog.metabrainz.org/2014/08/'>August 2014</a> (2)</li> <li><a href='https://blog.metabrainz.org/2014/07/'>July 2014</a> (5)</li> <li><a href='https://blog.metabrainz.org/2014/06/'>June 2014</a> (3)</li> <li><a href='https://blog.metabrainz.org/2014/05/'>May 2014</a> (9)</li> <li><a href='https://blog.metabrainz.org/2014/04/'>April 2014</a> (5)</li> <li><a href='https://blog.metabrainz.org/2014/03/'>March 2014</a> (7)</li> <li><a href='https://blog.metabrainz.org/2014/02/'>February 2014</a> (4)</li> <li><a href='https://blog.metabrainz.org/2014/01/'>January 2014</a> (2)</li> <li><a href='https://blog.metabrainz.org/2013/12/'>December 2013</a> (10)</li> <li><a href='https://blog.metabrainz.org/2013/11/'>November 2013</a> (7)</li> <li><a href='https://blog.metabrainz.org/2013/10/'>October 2013</a> (9)</li> <li><a href='https://blog.metabrainz.org/2013/09/'>September 2013</a> (7)</li> <li><a href='https://blog.metabrainz.org/2013/08/'>August 2013</a> (7)</li> <li><a href='https://blog.metabrainz.org/2013/07/'>July 2013</a> (4)</li> <li><a href='https://blog.metabrainz.org/2013/06/'>June 2013</a> (11)</li> <li><a href='https://blog.metabrainz.org/2013/05/'>May 2013</a> (8)</li> <li><a href='https://blog.metabrainz.org/2013/04/'>April 2013</a> (6)</li> <li><a href='https://blog.metabrainz.org/2013/03/'>March 2013</a> (7)</li> <li><a href='https://blog.metabrainz.org/2013/02/'>February 2013</a> (8)</li> <li><a href='https://blog.metabrainz.org/2013/01/'>January 2013</a> (8)</li> <li><a href='https://blog.metabrainz.org/2012/12/'>December 2012</a> (4)</li> <li><a href='https://blog.metabrainz.org/2012/11/'>November 2012</a> (4)</li> <li><a href='https://blog.metabrainz.org/2012/10/'>October 2012</a> (11)</li> <li><a href='https://blog.metabrainz.org/2012/09/'>September 2012</a> (13)</li> <li><a href='https://blog.metabrainz.org/2012/08/'>August 2012</a> (5)</li> <li><a href='https://blog.metabrainz.org/2012/07/'>July 2012</a> (9)</li> <li><a href='https://blog.metabrainz.org/2012/06/'>June 2012</a> (7)</li> <li><a href='https://blog.metabrainz.org/2012/05/'>May 2012</a> (14)</li> <li><a href='https://blog.metabrainz.org/2012/04/'>April 2012</a> (6)</li> <li><a href='https://blog.metabrainz.org/2012/03/'>March 2012</a> (7)</li> <li><a href='https://blog.metabrainz.org/2012/02/'>February 2012</a> (5)</li> <li><a href='https://blog.metabrainz.org/2012/01/'>January 2012</a> (13)</li> <li><a href='https://blog.metabrainz.org/2011/12/'>December 2011</a> (8)</li> <li><a href='https://blog.metabrainz.org/2011/11/'>November 2011</a> (4)</li> <li><a href='https://blog.metabrainz.org/2011/10/'>October 2011</a> (9)</li> <li><a href='https://blog.metabrainz.org/2011/09/'>September 2011</a> (6)</li> <li><a href='https://blog.metabrainz.org/2011/08/'>August 2011</a> (7)</li> <li><a href='https://blog.metabrainz.org/2011/07/'>July 2011</a> (11)</li> <li><a href='https://blog.metabrainz.org/2011/06/'>June 2011</a> (9)</li> <li><a href='https://blog.metabrainz.org/2011/05/'>May 2011</a> (22)</li> <li><a href='https://blog.metabrainz.org/2011/04/'>April 2011</a> (4)</li> <li><a href='https://blog.metabrainz.org/2011/03/'>March 2011</a> (8)</li> <li><a href='https://blog.metabrainz.org/2011/02/'>February 2011</a> (6)</li> <li><a href='https://blog.metabrainz.org/2011/01/'>January 2011</a> (7)</li> <li><a href='https://blog.metabrainz.org/2010/12/'>December 2010</a> (1)</li> <li><a href='https://blog.metabrainz.org/2010/11/'>November 2010</a> (1)</li> <li><a href='https://blog.metabrainz.org/2010/10/'>October 2010</a> (4)</li> <li><a href='https://blog.metabrainz.org/2010/09/'>September 2010</a> (4)</li> <li><a href='https://blog.metabrainz.org/2010/08/'>August 2010</a> (5)</li> <li><a href='https://blog.metabrainz.org/2010/07/'>July 2010</a> (7)</li> <li><a href='https://blog.metabrainz.org/2010/06/'>June 2010</a> (9)</li> <li><a href='https://blog.metabrainz.org/2010/05/'>May 2010</a> (7)</li> <li><a href='https://blog.metabrainz.org/2010/04/'>April 2010</a> (1)</li> <li><a href='https://blog.metabrainz.org/2010/03/'>March 2010</a> (7)</li> <li><a href='https://blog.metabrainz.org/2010/02/'>February 2010</a> (4)</li> <li><a href='https://blog.metabrainz.org/2010/01/'>January 2010</a> (4)</li> <li><a href='https://blog.metabrainz.org/2009/12/'>December 2009</a> (3)</li> <li><a href='https://blog.metabrainz.org/2009/11/'>November 2009</a> (1)</li> <li><a href='https://blog.metabrainz.org/2009/10/'>October 2009</a> (5)</li> <li><a href='https://blog.metabrainz.org/2009/09/'>September 2009</a> (2)</li> <li><a href='https://blog.metabrainz.org/2009/08/'>August 2009</a> (4)</li> <li><a href='https://blog.metabrainz.org/2009/07/'>July 2009</a> (3)</li> <li><a href='https://blog.metabrainz.org/2009/06/'>June 2009</a> (3)</li> <li><a href='https://blog.metabrainz.org/2009/05/'>May 2009</a> (6)</li> <li><a href='https://blog.metabrainz.org/2009/04/'>April 2009</a> (2)</li> <li><a href='https://blog.metabrainz.org/2009/03/'>March 2009</a> (5)</li> <li><a href='https://blog.metabrainz.org/2009/02/'>February 2009</a> (7)</li> <li><a href='https://blog.metabrainz.org/2009/01/'>January 2009</a> (2)</li> <li><a href='https://blog.metabrainz.org/2008/12/'>December 2008</a> (3)</li> <li><a href='https://blog.metabrainz.org/2008/11/'>November 2008</a> (6)</li> <li><a href='https://blog.metabrainz.org/2008/10/'>October 2008</a> (8)</li> <li><a href='https://blog.metabrainz.org/2008/09/'>September 2008</a> (8)</li> <li><a href='https://blog.metabrainz.org/2008/08/'>August 2008</a> (5)</li> <li><a href='https://blog.metabrainz.org/2008/07/'>July 2008</a> (5)</li> <li><a href='https://blog.metabrainz.org/2008/06/'>June 2008</a> (7)</li> <li><a href='https://blog.metabrainz.org/2008/05/'>May 2008</a> (5)</li> <li><a href='https://blog.metabrainz.org/2008/04/'>April 2008</a> (4)</li> <li><a href='https://blog.metabrainz.org/2008/03/'>March 2008</a> (6)</li> <li><a href='https://blog.metabrainz.org/2008/02/'>February 2008</a> (8)</li> <li><a href='https://blog.metabrainz.org/2008/01/'>January 2008</a> (3)</li> <li><a href='https://blog.metabrainz.org/2007/11/'>November 2007</a> (7)</li> <li><a href='https://blog.metabrainz.org/2007/10/'>October 2007</a> (7)</li> <li><a href='https://blog.metabrainz.org/2007/09/'>September 2007</a> (2)</li> <li><a href='https://blog.metabrainz.org/2007/08/'>August 2007</a> (5)</li> <li><a href='https://blog.metabrainz.org/2007/07/'>July 2007</a> (3)</li> <li><a href='https://blog.metabrainz.org/2007/06/'>June 2007</a> (4)</li> <li><a href='https://blog.metabrainz.org/2007/05/'>May 2007</a> (8)</li> <li><a href='https://blog.metabrainz.org/2007/04/'>April 2007</a> (11)</li> <li><a href='https://blog.metabrainz.org/2007/03/'>March 2007</a> (9)</li> <li><a href='https://blog.metabrainz.org/2007/02/'>February 2007</a> (4)</li> <li><a href='https://blog.metabrainz.org/2007/01/'>January 2007</a> (8)</li> <li><a href='https://blog.metabrainz.org/2006/12/'>December 2006</a> (4)</li> <li><a href='https://blog.metabrainz.org/2006/11/'>November 2006</a> (6)</li> <li><a href='https://blog.metabrainz.org/2006/10/'>October 2006</a> (7)</li> <li><a href='https://blog.metabrainz.org/2006/09/'>September 2006</a> (10)</li> <li><a href='https://blog.metabrainz.org/2006/08/'>August 2006</a> (13)</li> <li><a href='https://blog.metabrainz.org/2006/07/'>July 2006</a> (11)</li> <li><a href='https://blog.metabrainz.org/2006/06/'>June 2006</a> (3)</li> <li><a href='https://blog.metabrainz.org/2006/05/'>May 2006</a> (9)</li> <li><a href='https://blog.metabrainz.org/2006/04/'>April 2006</a> (2)</li> <li><a href='https://blog.metabrainz.org/2006/03/'>March 2006</a> (7)</li> <li><a href='https://blog.metabrainz.org/2006/02/'>February 2006</a> (8)</li> <li><a href='https://blog.metabrainz.org/2006/01/'>January 2006</a> (13)</li> <li><a href='https://blog.metabrainz.org/2005/12/'>December 2005</a> (4)</li> <li><a href='https://blog.metabrainz.org/2005/11/'>November 2005</a> (6)</li> <li><a href='https://blog.metabrainz.org/2005/10/'>October 2005</a> (3)</li> <li><a href='https://blog.metabrainz.org/2005/09/'>September 2005</a> (4)</li> <li><a href='https://blog.metabrainz.org/2005/08/'>August 2005</a> (1)</li> <li><a href='https://blog.metabrainz.org/2005/07/'>July 2005</a> (4)</li> <li><a href='https://blog.metabrainz.org/2005/06/'>June 2005</a> (3)</li> <li><a href='https://blog.metabrainz.org/2005/05/'>May 2005</a> (9)</li> <li><a href='https://blog.metabrainz.org/2005/04/'>April 2005</a> (6)</li> <li><a href='https://blog.metabrainz.org/2005/03/'>March 2005</a> (4)</li> <li><a href='https://blog.metabrainz.org/2005/02/'>February 2005</a> (9)</li> <li><a href='https://blog.metabrainz.org/2005/01/'>January 2005</a> (6)</li> <li><a href='https://blog.metabrainz.org/2004/12/'>December 2004</a> (8)</li> <li><a href='https://blog.metabrainz.org/2004/11/'>November 2004</a> (11)</li> <li><a href='https://blog.metabrainz.org/2004/10/'>October 2004</a> (22)</li> <li><a href='https://blog.metabrainz.org/2004/08/'>August 2004</a> (1)</li> <li><a href='https://blog.metabrainz.org/2004/07/'>July 2004</a> (1)</li> <li><a href='https://blog.metabrainz.org/2004/05/'>May 2004</a> (2)</li> <li><a href='https://blog.metabrainz.org/2004/04/'>April 2004</a> (1)</li> <li><a href='https://blog.metabrainz.org/2004/03/'>March 2004</a> (4)</li> <li><a href='https://blog.metabrainz.org/2004/02/'>February 2004</a> (2)</li> <li><a href='https://blog.metabrainz.org/2004/01/'>January 2004</a> (2)</li> <li><a href='https://blog.metabrainz.org/2003/12/'>December 2003</a> (1)</li> <li><a href='https://blog.metabrainz.org/2003/11/'>November 2003</a> (2)</li> <li><a href='https://blog.metabrainz.org/2003/10/'>October 2003</a> (4)</li> <li><a href='https://blog.metabrainz.org/2003/09/'>September 2003</a> (1)</li> <li><a href='https://blog.metabrainz.org/2003/07/'>July 2003</a> (2)</li> <li><a href='https://blog.metabrainz.org/2003/06/'>June 2003</a> (6)</li> <li><a href='https://blog.metabrainz.org/2003/04/'>April 2003</a> (2)</li> <li><a href='https://blog.metabrainz.org/2003/03/'>March 2003</a> (2)</li> <li><a href='https://blog.metabrainz.org/2003/01/'>January 2003</a> (1)</li> </ul> </nav></section> </aside><!-- .sidebar .widget-area --> </div><!-- .site-content --> <footer id="colophon" class="site-footer"> <nav class="main-navigation" aria-label="Footer Primary Menu"> </nav><!-- .main-navigation --> <div class="site-info"> <span class="site-title"><a href="https://blog.metabrainz.org/" rel="home">MetaBrainz Blog</a></span> <a href="https://wordpress.com/?ref=footer_blog" rel="nofollow">Blog at WordPress.com.</a> </div><!-- .site-info --> </footer><!-- .site-footer --> </div><!-- .site-inner --> </div><!-- .site --> <script type="text/javascript"> var infiniteScroll = {"settings":{"id":"main","ajaxurl":"https:\/\/blog.metabrainz.org\/?infinity=scrolling","type":"scroll","wrapper":true,"wrapper_class":"infinite-wrap","footer":"content","click_handle":"1","text":"Older posts","totop":"Scroll back to top","currentday":"18.05.21","order":"DESC","scripts":[],"styles":[],"google_analytics":false,"offset":1,"history":{"host":"blog.metabrainz.org","path":"\/category\/development\/updates\/breaking-changes\/page\/%d\/","use_trailing_slashes":true,"parameters":""},"query_args":{"category_name":"breaking-changes","error":"","m":"","p":0,"post_parent":"","subpost":"","subpost_id":"","attachment":"","attachment_id":0,"name":"","pagename":"","page_id":0,"second":"","minute":"","hour":"","day":0,"monthnum":0,"year":0,"w":0,"tag":"","cat":19867758,"tag_id":"","author":"","author_name":"","feed":"","tb":"","paged":0,"meta_key":"","meta_value":"","preview":"","s":"","sentence":"","title":"","fields":"","menu_order":"","embed":"","category__in":[],"category__not_in":[],"category__and":[],"post__in":[],"post__not_in":[],"post_name__in":[],"tag__in":[],"tag__not_in":[],"tag__and":[],"tag_slug__in":[],"tag_slug__and":[],"post_parent__in":[],"post_parent__not_in":[],"author__in":[],"author__not_in":[],"search_columns":[],"lazy_load_term_meta":false,"posts_per_page":10,"ignore_sticky_posts":false,"suppress_filters":false,"cache_results":true,"update_post_term_cache":true,"update_menu_item_cache":false,"update_post_meta_cache":true,"post_type":"","nopaging":false,"comments_per_page":"0","no_found_rows":false,"order":"DESC"},"query_before":"2024-11-29 16:39:17","last_post_date":"2021-05-18 03:18:02","body_class":"infinite-scroll neverending","loading_text":"Loading new page","stats":"blog=1935472&v=wpcom&tz=0&user_id=0&subd=musicbrainz&x_pagetype=infinite"}}; </script> <!-- --> <div style="display:none"> </div> <div id="infinite-footer"> <div class="container"> <div class="blog-info"> <a id="infinity-blog-title" href="https://blog.metabrainz.org/" rel="home"> MetaBrainz Blog </a> </div> <div class="blog-credits"> <a href="https://wordpress.com/?ref=footer_blog" rel="nofollow">Blog at WordPress.com.</a> </div> </div> </div><!-- #infinite-footer --> <div id="actionbar" style="display: none;" class="actnbr-pub-twentysixteen actnbr-has-follow"> <ul> <li class="actnbr-btn actnbr-hidden"> <a class="actnbr-action actnbr-actn-follow " href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path clip-rule="evenodd" d="m4 4.5h12v6.5h1.5v-6.5-1.5h-1.5-12-1.5v1.5 10.5c0 1.1046.89543 2 2 2h7v-1.5h-7c-.27614 0-.5-.2239-.5-.5zm10.5 2h-9v1.5h9zm-5 3h-4v1.5h4zm3.5 1.5h-1v1h1zm-1-1.5h-1.5v1.5 1 1.5h1.5 1 1.5v-1.5-1-1.5h-1.5zm-2.5 2.5h-4v1.5h4zm6.5 1.25h1.5v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25z" fill-rule="evenodd"></path></svg> <span>Subscribe</span> </a> <a class="actnbr-action actnbr-actn-following no-display" href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.5H4V15C4 15.2761 4.22386 15.5 4.5 15.5H11.5V17H4.5C3.39543 17 2.5 16.1046 2.5 15V4.5V3H4H16H17.5V4.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H12H13H14.5V11V12V13.5H13H12H10.5V12V11V9.5ZM5.5 12H9.5V13.5H5.5V12Z" fill="#008A20"></path><path class="following-icon-tick" d="M13.5 16L15.5 18L19 14.5" stroke="#008A20" stroke-width="1.5"></path></svg> <span>Subscribed</span> </a> <div class="actnbr-popover tip tip-top-left actnbr-notice" id="follow-bubble"> <div class="tip-arrow"></div> <div class="tip-inner actnbr-follow-bubble"> <ul> <li class="actnbr-sitename"> <a href="https://blog.metabrainz.org"> <img loading='lazy' alt='' src='https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=50' srcset='https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=50 1x, https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=75 1.5x, https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=100 2x, https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=150 3x, https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=150 4x' class='avatar avatar-50' height='50' width='50' /> MetaBrainz Blog </a> </li> <div class="actnbr-message no-display"></div> <form method="post" action="https://subscribe.wordpress.com" accept-charset="utf-8" style="display: none;"> <div class="actnbr-follow-count">Join 355 other subscribers</div> <div> <input type="email" name="email" placeholder="Enter your email address" class="actnbr-email-field" aria-label="Enter your email address" /> </div> <input type="hidden" name="action" value="subscribe" /> <input type="hidden" name="blog_id" value="1935472" /> <input type="hidden" name="source" value="https://blog.metabrainz.org/category/development/updates/breaking-changes/" /> <input type="hidden" name="sub-type" value="actionbar-follow" /> <input type="hidden" id="_wpnonce" name="_wpnonce" value="fbb5911d9c" /> <div class="actnbr-button-wrap"> <button type="submit" value="Sign me up"> Sign me up </button> </div> </form> <li class="actnbr-login-nudge"> <div> Already have a WordPress.com account? <a href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fblog.metabrainz.org%252F2024%252F09%252F27%252Fmajor-upgrade-for-mirrors-november-25-2024%252F">Log in now.</a> </div> </li> </ul> </div> </div> </li> <li class="actnbr-ellipsis actnbr-hidden"> <svg class="gridicon gridicons-ellipsis" height="24" width="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M7 12c0 1.104-.896 2-2 2s-2-.896-2-2 .896-2 2-2 2 .896 2 2zm12-2c-1.104 0-2 .896-2 2s.896 2 2 2 2-.896 2-2-.896-2-2-2zm-7 0c-1.104 0-2 .896-2 2s.896 2 2 2 2-.896 2-2-.896-2-2-2z"/></g></svg> <div class="actnbr-popover tip tip-top-left actnbr-more"> <div class="tip-arrow"></div> <div class="tip-inner"> <ul> <li class="actnbr-sitename"> <a href="https://blog.metabrainz.org"> <img loading='lazy' alt='' src='https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=50' srcset='https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=50 1x, https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=75 1.5x, https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=100 2x, https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=150 3x, https://blog.metabrainz.org/wp-content/uploads/2018/11/cropped-metabrainz_logo.png?w=150 4x' class='avatar avatar-50' height='50' width='50' /> MetaBrainz Blog </a> </li> <li class="actnbr-folded-customize"> <a href="https://musicbrainz.wordpress.com/wp-admin/customize.php?url=https%3A%2F%2Fmusicbrainz.wordpress.com%2Fcategory%2Fdevelopment%2Fupdates%2Fbreaking-changes%2F"> <svg class="gridicon gridicons-customize" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M2 6c0-1.505.78-3.08 2-4 0 .845.69 2 2 2 1.657 0 3 1.343 3 3 0 .386-.08.752-.212 1.09.74.594 1.476 1.19 2.19 1.81L8.9 11.98c-.62-.716-1.214-1.454-1.807-2.192C6.753 9.92 6.387 10 6 10c-2.21 0-4-1.79-4-4zm12.152 6.848l1.34-1.34c.607.304 1.283.492 2.008.492 2.485 0 4.5-2.015 4.5-4.5 0-.725-.188-1.4-.493-2.007L18 9l-2-2 3.507-3.507C18.9 3.188 18.225 3 17.5 3 15.015 3 13 5.015 13 7.5c0 .725.188 1.4.493 2.007L3 20l2 2 6.848-6.848c1.885 1.928 3.874 3.753 5.977 5.45l1.425 1.148 1.5-1.5-1.15-1.425c-1.695-2.103-3.52-4.092-5.448-5.977z"/></g></svg> <span>Customize</span> </a> </li> <li class="actnbr-folded-follow"> <a class="actnbr-action actnbr-actn-follow " href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path clip-rule="evenodd" d="m4 4.5h12v6.5h1.5v-6.5-1.5h-1.5-12-1.5v1.5 10.5c0 1.1046.89543 2 2 2h7v-1.5h-7c-.27614 0-.5-.2239-.5-.5zm10.5 2h-9v1.5h9zm-5 3h-4v1.5h4zm3.5 1.5h-1v1h1zm-1-1.5h-1.5v1.5 1 1.5h1.5 1 1.5v-1.5-1-1.5h-1.5zm-2.5 2.5h-4v1.5h4zm6.5 1.25h1.5v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25z" fill-rule="evenodd"></path></svg> <span>Subscribe</span> </a> <a class="actnbr-action actnbr-actn-following no-display" href=""> <svg class="gridicon" height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill-rule="evenodd" clip-rule="evenodd" d="M16 4.5H4V15C4 15.2761 4.22386 15.5 4.5 15.5H11.5V17H4.5C3.39543 17 2.5 16.1046 2.5 15V4.5V3H4H16H17.5V4.5V12.5H16V4.5ZM5.5 6.5H14.5V8H5.5V6.5ZM5.5 9.5H9.5V11H5.5V9.5ZM12 11H13V12H12V11ZM10.5 9.5H12H13H14.5V11V12V13.5H13H12H10.5V12V11V9.5ZM5.5 12H9.5V13.5H5.5V12Z" fill="#008A20"></path><path class="following-icon-tick" d="M13.5 16L15.5 18L19 14.5" stroke="#008A20" stroke-width="1.5"></path></svg> <span>Subscribed</span> </a> </li> <li class="actnbr-signup"><a href="https://wordpress.com/start/">Sign up</a></li> <li class="actnbr-login"><a href="https://wordpress.com/log-in?redirect_to=https%3A%2F%2Fr-login.wordpress.com%2Fremote-login.php%3Faction%3Dlink%26back%3Dhttps%253A%252F%252Fblog.metabrainz.org%252F2024%252F09%252F27%252Fmajor-upgrade-for-mirrors-november-25-2024%252F">Log in</a></li> <li class="flb-report"> <a href="https://wordpress.com/abuse/?report_url=https://blog.metabrainz.org" target="_blank" rel="noopener noreferrer"> Report this content </a> </li> <li class="actnbr-reader"> <a href="https://wordpress.com/read/feeds/90752457"> View site in Reader </a> </li> <li class="actnbr-subs"> <a href="https://subscribe.wordpress.com/">Manage subscriptions</a> </li> <li class="actnbr-fold"><a href="">Collapse this bar</a></li> </ul> </div> </div> </li> </ul> </div> <script> window.addEventListener( "load", function( event ) { var link = document.createElement( "link" ); link.href = "https://s0.wp.com/wp-content/mu-plugins/actionbar/actionbar.css?v=20241015"; link.type = "text/css"; link.rel = "stylesheet"; document.head.appendChild( link ); var script = document.createElement( "script" ); script.src = "https://s0.wp.com/wp-content/mu-plugins/actionbar/actionbar.js?v=20231122"; script.defer = true; document.body.appendChild( script ); } ); </script> <div id="jp-carousel-loading-overlay"> <div id="jp-carousel-loading-wrapper"> <span id="jp-carousel-library-loading"> </span> </div> </div> <div class="jp-carousel-overlay" style="display: none;"> <div class="jp-carousel-container"> <!-- The Carousel Swiper --> <div class="jp-carousel-wrap swiper-container jp-carousel-swiper-container jp-carousel-transitions" itemscope itemtype="https://schema.org/ImageGallery"> <div class="jp-carousel swiper-wrapper"></div> <div class="jp-swiper-button-prev swiper-button-prev"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskPrev" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="9" height="12"> <path d="M16.2072 16.59L11.6496 12L16.2072 7.41L14.8041 6L8.8335 12L14.8041 18L16.2072 16.59Z" fill="white"/> </mask> <g mask="url(#maskPrev)"> <rect x="0.579102" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </div> <div class="jp-swiper-button-next swiper-button-next"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskNext" mask-type="alpha" maskUnits="userSpaceOnUse" x="8" y="6" width="8" height="12"> <path d="M8.59814 16.59L13.1557 12L8.59814 7.41L10.0012 6L15.9718 12L10.0012 18L8.59814 16.59Z" fill="white"/> </mask> <g mask="url(#maskNext)"> <rect x="0.34375" width="23.8822" height="24" fill="#FFFFFF"/> </g> </svg> </div> </div> <!-- The main close buton --> <div class="jp-carousel-close-hint"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskClose" mask-type="alpha" maskUnits="userSpaceOnUse" x="5" y="5" width="15" height="14"> <path d="M19.3166 6.41L17.9135 5L12.3509 10.59L6.78834 5L5.38525 6.41L10.9478 12L5.38525 17.59L6.78834 19L12.3509 13.41L17.9135 19L19.3166 17.59L13.754 12L19.3166 6.41Z" fill="white"/> </mask> <g mask="url(#maskClose)"> <rect x="0.409668" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </div> <!-- Image info, comments and meta --> <div class="jp-carousel-info"> <div class="jp-carousel-info-footer"> <div class="jp-carousel-pagination-container"> <div class="jp-swiper-pagination swiper-pagination"></div> <div class="jp-carousel-pagination"></div> </div> <div class="jp-carousel-photo-title-container"> <h2 class="jp-carousel-photo-caption"></h2> </div> <div class="jp-carousel-photo-icons-container"> <a href="#" class="jp-carousel-icon-btn jp-carousel-icon-info" aria-label="Toggle photo metadata visibility"> <span class="jp-carousel-icon"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskInfo" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12.7537 2C7.26076 2 2.80273 6.48 2.80273 12C2.80273 17.52 7.26076 22 12.7537 22C18.2466 22 22.7046 17.52 22.7046 12C22.7046 6.48 18.2466 2 12.7537 2ZM11.7586 7V9H13.7488V7H11.7586ZM11.7586 11V17H13.7488V11H11.7586ZM4.79292 12C4.79292 16.41 8.36531 20 12.7537 20C17.142 20 20.7144 16.41 20.7144 12C20.7144 7.59 17.142 4 12.7537 4C8.36531 4 4.79292 7.59 4.79292 12Z" fill="white"/> </mask> <g mask="url(#maskInfo)"> <rect x="0.8125" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> </span> </a> <a href="#" class="jp-carousel-icon-btn jp-carousel-icon-comments" aria-label="Toggle photo comments visibility"> <span class="jp-carousel-icon"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="maskComments" mask-type="alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4.3271 2H20.2486C21.3432 2 22.2388 2.9 22.2388 4V16C22.2388 17.1 21.3432 18 20.2486 18H6.31729L2.33691 22V4C2.33691 2.9 3.2325 2 4.3271 2ZM6.31729 16H20.2486V4H4.3271V18L6.31729 16Z" fill="white"/> </mask> <g mask="url(#maskComments)"> <rect x="0.34668" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> <span class="jp-carousel-has-comments-indicator" aria-label="This image has comments."></span> </span> </a> </div> </div> <div class="jp-carousel-info-extra"> <div class="jp-carousel-info-content-wrapper"> <div class="jp-carousel-photo-title-container"> <h2 class="jp-carousel-photo-title"></h2> </div> <div class="jp-carousel-comments-wrapper"> <div id="jp-carousel-comments-loading"> <span>Loading Comments...</span> </div> <div class="jp-carousel-comments"></div> <div id="jp-carousel-comment-form-container"> <span id="jp-carousel-comment-form-spinner"> </span> <div id="jp-carousel-comment-post-results"></div> <form id="jp-carousel-comment-form"> <label for="jp-carousel-comment-form-comment-field" class="screen-reader-text">Write a Comment...</label> <textarea name="comment" class="jp-carousel-comment-form-field jp-carousel-comment-form-textarea" id="jp-carousel-comment-form-comment-field" placeholder="Write a Comment..." ></textarea> <div id="jp-carousel-comment-form-submit-and-info-wrapper"> <div id="jp-carousel-comment-form-commenting-as"> <fieldset> <label for="jp-carousel-comment-form-email-field">Email (Required)</label> <input type="text" name="email" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-email-field" /> </fieldset> <fieldset> <label for="jp-carousel-comment-form-author-field">Name (Required)</label> <input type="text" name="author" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-author-field" /> </fieldset> <fieldset> <label for="jp-carousel-comment-form-url-field">Website</label> <input type="text" name="url" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-url-field" /> </fieldset> </div> <input type="submit" name="submit" class="jp-carousel-comment-form-button" id="jp-carousel-comment-form-button-submit" value="Post Comment" /> </div> </form> </div> </div> <div class="jp-carousel-image-meta"> <div class="jp-carousel-title-and-caption"> <div class="jp-carousel-photo-info"> <h3 class="jp-carousel-caption" itemprop="caption description"></h3> </div> <div class="jp-carousel-photo-description"></div> </div> <ul class="jp-carousel-image-exif" style="display: none;"></ul> <a class="jp-carousel-image-download" href="#" target="_blank" style="display: none;"> <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="3" y="3" width="19" height="18"> <path fill-rule="evenodd" clip-rule="evenodd" d="M5.84615 5V19H19.7775V12H21.7677V19C21.7677 20.1 20.8721 21 19.7775 21H5.84615C4.74159 21 3.85596 20.1 3.85596 19V5C3.85596 3.9 4.74159 3 5.84615 3H12.8118V5H5.84615ZM14.802 5V3H21.7677V10H19.7775V6.41L9.99569 16.24L8.59261 14.83L18.3744 5H14.802Z" fill="white"/> </mask> <g mask="url(#mask0)"> <rect x="0.870605" width="23.8823" height="24" fill="#FFFFFF"/> </g> </svg> <span class="jp-carousel-download-text"></span> </a> <div class="jp-carousel-image-map" style="display: none;"></div> </div> </div> </div> </div> </div> </div> <link crossorigin='anonymous' rel='stylesheet' id='all-css-0-2' href='https://s2.wp.com/_static/??-eJyljUsKhDAQRC80mXZGDLiQOUsmaSTa+ZBOI95eBN260E3BK4pXsGRlU6wYKwRRmWT0kWHCmo2dD4aQ0h5OCBmsKUkYCXjxGYv6S3SEb8v8gge2c3QWd4XVEzo1GiIs6xXtB78wfHT/7Zu203raAHg3ZXE=&cssminify=yes' type='text/css' media='all' /> <script id="twentysixteen-script-js-extra"> var screenReaderText = {"expand":"expand child menu","collapse":"collapse child menu"}; </script> <script id="jetpack-carousel-js-extra"> var jetpackSwiperLibraryPath = {"url":"https:\/\/s2.wp.com\/wp-content\/mu-plugins\/jetpack-plugin\/moon\/_inc\/build\/carousel\/swiper-bundle.min.js"}; var jetpackCarouselStrings = {"widths":[370,700,1000,1200,1400,2000],"is_logged_in":"","lang":"en","ajaxurl":"https:\/\/blog.metabrainz.org\/wp-admin\/admin-ajax.php","nonce":"1f9ca57389","display_exif":"1","display_comments":"1","single_image_gallery":"1","single_image_gallery_media_file":"","background_color":"black","comment":"Comment","post_comment":"Post Comment","write_comment":"Write a Comment...","loading_comments":"Loading Comments...","image_label":"Open image in full-screen.","download_original":"View full size <span class=\"photo-size\">{0}<span class=\"photo-size-times\">\u00d7<\/span>{1}<\/span>","no_comment_text":"Please be sure to submit some text with your comment.","no_comment_email":"Please provide an email address to comment.","no_comment_author":"Please provide your name to comment.","comment_post_error":"Sorry, but there was an error posting your comment. Please try again later.","comment_approved":"Your comment was approved.","comment_unapproved":"Your comment is in moderation.","camera":"Camera","aperture":"Aperture","shutter_speed":"Shutter Speed","focal_length":"Focal Length","copyright":"Copyright","comment_registration":"0","require_name_email":"1","login_url":"https:\/\/musicbrainz.wordpress.com\/wp-login.php?redirect_to=https%3A%2F%2Fblog.metabrainz.org%2F2021%2F05%2F18%2Fmusicbrainz-schema-change-release-2021-05-17-with-upgrade-instructions%2F","blog_id":"1935472","meta_data":["camera","aperture","shutter_speed","focal_length","copyright"],"stats_query_args":"blog=1935472&v=wpcom&tz=0&user_id=0&subd=musicbrainz","is_public":"1"}; </script> <script crossorigin='anonymous' type='text/javascript' src='https://s2.wp.com/_static/??-eJydUNFuwkAM+6GFwPaAeED7lKk90pI2lzs1OZX+/W7SOk0IAdujLduJjXOGkNRJHQfDmFoWgmI0NX3lgLVLm8Fe8JcuFshSelbDgTw3YfzG1Z4UP1gDtoXlhNXNyk5gYUoiK142kfU61c8UyTCXFn2uxGJ8cSL9estGziCsI3QpFIOOL3+xd0WDc1L7f5PQTKmuIj+6lbhV5flYr2ufoG9EaFruoQdn1m9gziHFK1h97/G4279td6/bw/4wfAL+S7z8'></script> <script type="text/javascript"> (function () { var wpcom_reblog = { source: 'toolbar', toggle_reblog_box_flair: function (obj_id, post_id) { // Go to site selector. This will redirect to their blog if they only have one. const postEndpoint = `https://wordpress.com/post`; // Ideally we would use the permalink here, but fortunately this will be replaced with the // post permalink in the editor. const originalURL = `${ document.location.href }?page_id=${ post_id }`; const url = postEndpoint + '?url=' + encodeURIComponent( originalURL ) + '&is_post_share=true' + '&v=5'; const redirect = function () { if ( ! window.open( url, '_blank' ) ) { location.href = url; } }; if ( /Firefox/.test( navigator.userAgent ) ) { setTimeout( redirect, 0 ); } else { redirect(); } }, }; window.wpcom_reblog = wpcom_reblog; })(); </script> <script type="text/javascript"> // <![CDATA[ (function() { try{ if ( window.external &&'msIsSiteMode' in window.external) { if (window.external.msIsSiteMode()) { var jl = document.createElement('script'); jl.type='text/javascript'; jl.async=true; jl.src='/wp-content/plugins/ie-sitemode/custom-jumplist.php'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(jl, s); } } }catch(e){} })(); // ]]> </script> <script type="text/javascript"> (function() { var extend = function(out) { out = out || {}; for (var i = 1; i < arguments.length; i++) { if (!arguments[i]) continue; for (var key in arguments[i]) { if (arguments[i].hasOwnProperty(key)) out[key] = arguments[i][key]; } } return out; }; extend( window.infiniteScroll.settings.scripts, ["jetpack-mu-wpcom-settings","rlt-proxy","twentysixteen-html5","wpcom-actionbar-placeholder","mobile-useragent-info","the-neverending-homepage","twentysixteen-skip-link-focus-fix","twentysixteen-script","jetpack-carousel","tiled-gallery","carousel-wpcom"] ); extend( window.infiniteScroll.settings.styles, ["twentysixteen-jetpack","the-neverending-homepage","wp-block-library","wp-block-library-theme","jetpack-layout-grid","jetpack-ratings","mediaelement","wp-mediaelement","coblocks-frontend","wpcom-core-compat-playlist-styles","wpcom-bbpress2-staff-css","twentysixteen-fonts","genericons","twentysixteen-style","twentysixteen-block-style","twentysixteen-wpcom-style","reblogging","geo-location-flair","infinity-twentysixteen","h4-global","wp-emoji-styles","videopress-video-style","jetpack-sharing-buttons-style","classic-theme-styles","global-styles","twentysixteen-ie","twentysixteen-ie8","twentysixteen-ie7","jetpack-global-styles-frontend-style","jetpack-carousel-swiper-css","jetpack-carousel","tiled-gallery","core-block-supports-duotone"] ); })(); </script> <span id="infinite-aria" aria-live="polite"></span> <script src="//stats.wp.com/w.js?67" defer></script> <script type="text/javascript"> _tkq = window._tkq || []; _stq = window._stq || []; _tkq.push(['storeContext', {'blog_id':'1935472','blog_tz':'0','user_lang':'en','blog_lang':'en','user_id':'0'}]); _stq.push(['view', {'blog':'1935472','v':'wpcom','tz':'0','user_id':'0','subd':'musicbrainz'}]); _stq.push(['extra', {'crypt':'UE40eW5QN0p8M2Y/RE1mNzc2NTVTamdsd0xoLz9RQkM2K298TXY9bERQMXc2MjhEaVZfb2wwakRoSj0mUkp1THptM1NdbkV1WjZIcU9mVWQmPUIvMlN6Jk8wW3NYVEJ3dWZOWExuWD9VNTEucGUwVDREUEpscXB+Y21XfHZTPUZ+WV0/Nnl8WzRRL0oreG1XYVpiaUVMdGs4NnxUbS9pRTZ4N2hMeE0lP35MYXVHeSYsbkk0a1Q1dVVuLixqODdyRkpRZnBlaVZTOTJodXQ4RUdHLkZUUE5OY0wrLVJdS04uVHF8cy9bRTV8Xy96WytKOFJdQWtiZjZhfnNJcUNnNXdxWlMzQlJ+d0hfTVp5Zzc9K3pMZm5pZTJOdz82SnJbLGltMHNFR0RYTFZyS2F2TjloRlNb'}]); _stq.push([ 'clickTrackerInit', '1935472', '0' ]); </script> <noscript><img src="https://pixel.wp.com/b.gif?v=noscript" style="height:1px;width:1px;overflow:hidden;position:absolute;bottom:1px;" alt="" /></noscript> <script> ( function() { function getMobileUserAgentInfo() { if ( typeof wpcom_mobile_user_agent_info === 'object' ) { wpcom_mobile_user_agent_info.init(); var mobileStatsQueryString = ''; if ( wpcom_mobile_user_agent_info.matchedPlatformName !== false ) { mobileStatsQueryString += '&x_' + 'mobile_platforms' + '=' + wpcom_mobile_user_agent_info.matchedPlatformName; } if ( wpcom_mobile_user_agent_info.matchedUserAgentName !== false ) { mobileStatsQueryString += '&x_' + 'mobile_devices' + '=' + wpcom_mobile_user_agent_info.matchedUserAgentName; } if ( wpcom_mobile_user_agent_info.isIPad() ) { mobileStatsQueryString += '&x_' + 'ipad_views' + '=' + 'views'; } if ( mobileStatsQueryString != '' ) { new Image().src = document.location.protocol + '//pixel.wp.com/g.gif?v=wpcom-no-pv' + mobileStatsQueryString + '&baba=' + Math.random(); } } } document.addEventListener( 'DOMContentLoaded', getMobileUserAgentInfo ); } )(); </script></body> </html>