libmusicbrainz 2.1.3 released

libmusicbrainz 2.1.3 has just been released! Changes in this release:

  • New queries for selecting album artists:
    • MBS_SelectAlbumArtist
    • MBE_AlbumGetAlbumArtistName
    • MBE_AlbumGetAlbumArtistSortName
  • New query MBE_AlbumGetCdindexId
  • Using size_t instead of int in networking code
  • Little fixes in the API documentation
  • Python bindings:
    • Using the new ctypes 0.9.9.x API, with support to fallback to the old API if only an old ctypes version is installed
    • Removed dependency on ctypes in setup.py

You can also view the complete diff of this change. You can download the new release in the usual place. Big thanks to Lukas and Sander for working on this release!

Technorati Tags: , ,

libtunepimp 0.5.0 released

libtunepimp 0.5.0 was just released — the changes for this version are:

  • Versioned header files. tunepimp/tunepimp.h -> tunepimp-0.5/tunepimp.h
  • Removed track lookup parts of libtunepimp
  • WavPack, Speex and The True Audio metadata plugins
  • Correct handling of UNC paths on Windows
  • Fixed non-album tracks renaming/moving (#1408)
  • Trivial change to id3tag to read tags empty ID3 frames (#1568)

IMPORTANT: Please note that libtunepimp 0.5.0 is incompatible with previous versions of libtunepimp. We’re in the process of re-architecting libtunepimp and we’ve started removing the features that do file lookups, since Picard now does lookups with python-musicbrainz2. If you wish to use lookup features with libtunepimp, you will either need to use python-musicbrainz2 or call the XML Web service directly.

You can also view the complete diff of this change. You can download the new release in the usual place. Big thanks to Lukas for working on this release!

Technorati Tags: , ,

New Server Release

It has been rumoured for quite some time now, and I think that the new server release is ready for beta-testing. Please jump in, and help finding the remaining bugs. If you find any, file them to the XHTML 1.1 Milestone, and owner to yours truly. This is a significant update to the look and … Continue reading “New Server Release”

It has been rumoured for quite some time now, and I think that the new server release is ready for beta-testing. Please jump in, and help finding the remaining bugs. If you find any, file them to the XHTML 1.1 Milestone, and owner to yours truly.

This is a significant update to the look and feel of MusicBrainz — many pages and workflows have changed and there are bound to be a number of bugs. We’ll need people to jump in help testing if we want to get this release out soon.

See what has changed: Release Notes
Test Server (as usual): test.musicbrainz.org
Bug Tracker (as usual): bugs.musicbrainz.org

For right now, we’re not specifying a release date — we need to get more eyes looking at this new release before we can nail down a date. So, please jump in and help test!!

What's up with those pesky 502 errors?

There are two web servers running on the main web server machine. The first web server is light and handles all the content that is simple, such as static pages, images and the like. Anything that requires more intelligence, such as talking to the DB, gets passed to the second web server, which is designated … Continue reading “What's up with those pesky 502 errors?”

There are two web servers running on the main web server machine. The first web server is light and handles all the content that is simple, such as static pages, images and the like. Anything that requires more intelligence, such as talking to the DB, gets passed to the second web server, which is designated for these heavy requests.

The light server will wait for a specified time for the heavy server to finish its job — currently 120 seconds. If the heavy server hasn’t finished the job in that time, the light server gives up and and returns you the dreaded 502 error. The DB server will unfortunately continue to chug on the query and finish executing it as requested — cancelling an existing query is hard to do, and often times its better to let the server just run its course.

The gut reaction might be to say: “Why not stick around longer and wait for the results, if the DB is going to crank them out anyway?” Problem is that if we do this, the light web server is sitting idle doing nothing while waiting for the DB/heavy server to finish its job. The light server can give up and instead spend its time better doing things it can accomplish in a reasonable amount of time — like serving smaller requests for others. With this setup, the overall system favors the less intensive requests and thereby increasing the overall number of queries that were successfully handled. If we stopped and waited for the DB/heavy server to finish its stuff, we would pretty quickly clog up the web server with requests that are sitting idle, doing nothing. And that clog would then prevent any further connections to the web server and the whole site comes to a halt.

If you want a visual representation of what is going on, check the load graphs for dexter, our DB server. Any load greater than 4.0 and the DB server is no longer running optimally. We’re fine right this second, but in 10 minutes time?

So, what are we doing about this?

  1. Optimize the server code so that the user cannot make these intensive requests
  2. Spread the DB load across multiple replicated slave servers.
  3. Partition the database so that we can have multiple master servers. For instance, we could have one DB server that handles all the edits and one that handles the data. Maybe one that handles TRMs and PUIDs. This way each machine does less work, but this is a lot of work to code for mb-server devels.
  4. Find someone to give us a beefy database server with 12GB – 16GB of RAM

So, next time you’re aching for new mb-server features, please keep in mind that we’re spending a lot of time just keeping the service running smooth. Our income isn’t great enough yet that we can hire people to maintain the site AND hire people to hack on new features. In the meantime, Dave Evans and I will focus on keeping things running and hard working folks like Keschte are working on new features for the server. Overall we’re still moving forward, just a lot slower than we care for.

What can you do?

  1. Help us solve our DB issues if you’re a DB person.
  2. Help us write more mb-server code.
  3. Most important of all, make a donation!!
  4. Bug your rich friends to donate to MusicBrainz so we can buy a beefy database server. 🙂

Technorati Tags: , ,

Artists, labels and users

The previous blog post about Flagrant managed to raise a number of issues that we had never dealt with before here at MusicBrainz: When an artist comes to MB and asks that their data be removed, what should we do, if anything? Should an artist be more important than the users? How about music labels? … Continue reading “Artists, labels and users”

The previous blog post about Flagrant managed to raise a number of issues that we had never dealt with before here at MusicBrainz:

  • When an artist comes to MB and asks that their data be removed, what should we do, if anything?
  • Should an artist be more important than the users? How about music labels?
  • How can we tell that someone mailing us is in fact that artist or a valid representative of that artist?

These are very difficult questions to answer and given the feedback from the community to this issue, its clear that people feel strongly about this. Also the favor does not seem to be towards the artists, which intuitively I do not agree with. Rather than deal with these very sticky situations that involve recognizing one person or group of persons more than others, I would like to suggest the following much simpler course of action:

  • Every MusicBrainz user is treated the same inside of MusicBrainz.
  • Users may have different powers, depending on their past history inside of MusicBrainz. (MusicBrainz is a meritocracy)
  • All users start with the same level of power, regardless if they are an artist, a label, a representative of either, or a normal music lover.
  • Neither an artist, a label, nor any user can request data be removed from MusicBrainz, unless they have a clear legal argument. Given that MusicBrainz indexes only factual data at the moment, this is going to be very unlikely.

This policy is enforceable since it makes everyone equal. If an artist or a label wishes to enter/remove data to/from MusicBrainz, they must use the moderation system just like everyone else. Please post comments and let me know what you think of this proposal!

P.S. Thanks to our board of directors for chiming in on this important topic!

Technorati Tags: ,

Please do not add any albums/tracks for artist Flagrant (UPDATED!)

Apparently the person who contacted us was not actually authorized to speak on behalf of Flagrant. Now the real Flagrant wants this blog entry taken down because its incorrect, but we don’t censor our blog. So, this entry has the original body struck out so everyone can see what is going on. As for adding … Continue reading “Please do not add any albums/tracks for artist Flagrant (UPDATED!)”

Apparently the person who contacted us was not actually authorized to speak on behalf of Flagrant. Now the real Flagrant wants this blog entry taken down because its incorrect, but we don’t censor our blog. So, this entry has the original body struck out so everyone can see what is going on. As for adding information back to Flagrant, please feel free if you feel motivated. And stay tuned for how we plan to handle this case in the future.

It was bound to happen… Today the artist Flagrant asked us to not index any of their music. I’ll leave the artist in place with an annotation so that other brainerz can see the note in the future.

Even though I attempted to appeal to them to reconsider their decision, they did not. Nor did they provide any reason for this. So be it…

Technorati Tags:

Guess case for classical music

Keschte (g0llum) says: This concerns mostly the classical editors. I’ve finally taken my time to develop the requested guess case mode for the classical style guidelines. These are mostly regular expressions which cover most of the cases that require tedious manual editing. You’ll find some of the examples I’ve worked with in the header of, … Continue reading “Guess case for classical music”

Keschte (g0llum) says:

This concerns mostly the classical editors. I’ve finally taken my time to develop the requested guess case mode for the classical style guidelines. These are mostly regular expressions which cover most of the cases that require tedious manual editing. You’ll find some of the examples I’ve worked with in the header of, please go to the sandbox and try out your titles. Feel free to enter any issues you find into the bug tracker.

Cheers, and have fun testing!

–keschte

Technorati Tags: ,

Wanted: Documentation writer for MusicBrainz' MMD XML Schema

Matthias Friedrich just declared the MMD XML Schema to be stable. Hooray, and thanks for your hard work on creating this schema! The MusicBrainzXMLMetaData wiki page describes this new schema, but it does not provide complete documentation for the new schema. We’re looking for a volunteer to take this page and: Describe the entire schema … Continue reading “Wanted: Documentation writer for MusicBrainz' MMD XML Schema”

Matthias Friedrich just declared the MMD XML Schema to be stable. Hooray, and thanks for your hard work on creating this schema!

The MusicBrainzXMLMetaData wiki page describes this new schema, but it does not provide complete documentation for the new schema. We’re looking for a volunteer to take this page and:

  1. Describe the entire schema in english, with as little geeky talk as possible.
  2. Flesh out the existing examples and add more examples to describe the various aspects of the schema.
  3. Receive community feedback and revise the documentation

The person who decides to take this on needs to understand XML and preferably the Relax NG XML Schema language. The latter is not a must — we can help the documentation writer understand the schema, but knowledge of XML is crucial for this task.

If you are interested in helping out, please post a comment to this entry.

Thanks!

Technorati Tags:

Future directions for MusicBrainz

I’ve returned from my much needed vacation in Iceland and now I am ready to get back to working on MusicBrainz. While I was gone, a few shouting matches and arguments over what MusicBrainz should be in the future erupted, so its clear that its high time to give a general update on how MusicBrainz … Continue reading “Future directions for MusicBrainz”

I’ve returned from my much needed vacation in Iceland and now I am ready to get back to working on MusicBrainz. While I was gone, a few shouting matches and arguments over what MusicBrainz should be in the future erupted, so its clear that its high time to give a general update on how MusicBrainz is doing and where we’re headed in the future.

First, lets review what we’ve accomplished in the past 4 months: 1) we have more server capacity in a new home with better bandwidth 2) A new fingerprinting system with a new partner 3) A new search engine 4) A new web service. If you would’ve asked me how long all these would take to turn into a reality 4 months ago, I would’ve told you 6 – 8 months time. So, we’ve made great strides this year alone!

Now that we’ve knocked off a number of serious problems and improved the overall service, the community looks towards the next set of problems that we need to tackle. At first glance, it may seem that all we have are problems and that there are tons of people who are constantly complaining that MusicBrainz is not this or that. Personally, I think this is interesting and not alarming — these “problems” show that people care about the project. None of these problems put MusicBrainz in danger of vanishing tomorrow. I think the biggest problem right now is that the future for the project is not clear now that we’ve implemented many large improvements over the last few months. This blog post and more to follow next week should hopefully address these questions from a high level perspective:

Q: Is MusicBrainz a service aimed at people who wish to clean up (tag) their music collection or is the goal to create a music encyclopedia?

A: Yes! The long term goal of MusicBrainz is to capture all relevant knowledge about music and create a comprehensive music encyclopedia. The goal is also to create killer tagging applications that take this wealth of knowledge and let users apply it to their own music collections.

Thus, when people edit the database, the focus should be to capture the information as accurately as possible, respecting artist intent and trying to work with our guidelines when artist intent is not clear. The focus should not be to capture information such that music collections can get tagged cleanly with the data!

That is not to say that we don’t care about tagger users — on the contrary! Tagger users who make an occasional $10 donation are the people who pay our bills — they keep the servers on and allow the foundation to have an official place of business!

To make both the encyclopedia minded users and tagger users happy in one giant sandbox, I’d like to present a rough road-map where MusicBrainz will be headed in the near future:

Next server update

Server update with UI improvements, nomenclature (album -> release, moderate -> edit) fixes, album editor, XHTML support and more. This is likely to happen mid to end of May and driven by the hard efforts of Keschte.

Picard user interface improvements

Picard users currently fall into two categories — those who hate it and those who love it. If you don’t like drag and drop and you focus mainly on tracks, you are not likely to enjoy Picard. The user interface improvements presented here will be implemented so that the UI can be used without drag and drop and either in a track or album oriented mode. Which exact model we’ll pursue is unclear at this point, but it will likely be one of the variants proposed there. The overall goal is to make the old MusicBrainz Tagger irrelevant as we prepare to put TRM out to pasture — all tagger users should be happy with Picard.

TaggerScript in Picard

TaggerScript is the nick name we’ve given a much discussed, but not yet specified feature that will allow tagger users more control over how their music collection gets organized. The idea is that with TaggerScript, users will be able to extract information from AdvancedRelationships as well as the usual pieces of release data and then shove that data into the tags/filenames of their collection with a lot more flexibility and control that we currently allow. TaggerScript will allow tagger oriented users to extract the data they care about from the encyclopedia oriented database.

Next generation schema

This is the much discussed and much anticipated major upgrade to the MusicBrainz database. The idea behind this is to allow us to handle releases, classical music and many other facets of music metadata much better than we can today. At Summit #7 we worked for 14 hours to create this new schema and its a great start for defining the goal for a more powerful version of MusicBrainz. However, simply because this new schema exists, it does not mean that we will implement this as it currently stands on the wiki page. We need to spend a lot more time thinking about this — but this first version serves as a great stepping stone for eventually getting to our goal.

The most serious problem with this schema is that it will take a huge amount of effort for us implement it. Essentially, it amounts to rewriting most of MusicBrainz. Think one person working on it full time for 12 months — maybe even 24 months. There are a number of problems with this:

  1. If the dev team went away for 12 – 24 months to work on the next version of MusicBrainz, the current users would lose interest in MB due to the lack of progress. If the end-users cannot witness progress being made, they lose interest. So, devs cannot just work on the next gen schema, they also have to go back and fix other issues that arise. That pushes things out even further. 36 months? Ugh.
  2. MusicBrainz is still being coded by volunteers, and volunteers work on personal motivation. If a person is not motivated to work on a huge project for months on end without pay, they will lose interest. Moving from our current schema to the next schema is going to be rough work and a lot of it. I’m sure we don’t have enough volunteers to make this happen!
  3. For large projects like these, when you finally get done with the project it may no longer be what you need when its finished. It will be what you needed 12 – 24 months ago, not what you need today.

So, then how to we proceed with this mess? There are a number of options on how to proceed — we should attempt to work on all of these approaches at the same time:

  1. Work to sell more data licenses. This non-trivial income will then allow us to hire developers to work on the MB server. Paid people can be properly motivated to work on longer projects.
  2. Work to figure out how to break the schema upgrade into 3-4 smaller upgrades, each taking a 2-3 months to complete, thus making visible progress on a continual basis. [ insert wild hand waving here — I have no clue how to accomplish this ]
  3. Possibly create more tools, abstraction layers or a new moderation system that will overall reduce the total amount work needed to move to a new schema. Here too, we’re brainstorming about how to proceed — nothing concrete has emerged yet.

As you may have guessed, we’re not certain on how to proceed with this new schema — we have a lot to think about and a lot of discussions to hold. Certain is that we will not see this next generation schema come to fruition this year. If you’re holding your breath on the new schema and you cannot deal with MusicBrainz’ shortcomings for at least another year, you may want to find another approach to satisfy your music metadata cravings.

One thing I do know for sure is that I am excited to continue working on MusicBrainz. We’ve accomplished a lot in the last few months and we’re not about to stop working hard on this project.

Onward ho!

Technorati Tags: , ,