The last two weeks were pretty much dedicated to trying to make ends meet. Fortunately I managed to get some contract work that paid fairly well and was somewhat related to my spare time projects like MusicBrainz and XSPF. In the last two weeks I managed to earn 1/4 of what I earned all of last year. That speaks highly of the last two weeks and poorly on the last year.
The upshot is that I have time to get back to MusicBrainz hacking. That means I’m back on the project that won’t die: Advanced Relationships. Every time I think I am done, someone points out 2-3 new problems that set me back another week. Its been like this since the end of December, and its getting a bit frustrating. The positive thing about this is that I’m doing AR right — no ‘lets put this out there and we’ll make if work really well later‘. Besides, every-time I’ve half-assed a feature on the server, everyone has always let me know what they think, and its never pretty. 🙂
So, the last time I thought that the Advanced Relationships feature was done, we determined that using simple trees to describe the relationship hierarchy for each entity-entity (e.g. artist – track) would cause massive amounts of duplication in the relationship trees and they would be a nightmare to manage — if not flat out impossible.
And part of not half-assing things, is that I wanted to be able to pick up any random CD and be able to capture all the credits for the album. I want to capture every last ‘additional recording by‘ and ‘additional tenor vocals by‘! This means capturing all instruments performed on a work and wether or not this was a primary or additional function.
So, I’m implementing relationship attributes that will let us capture these things in a meaningful fashion. I’ll be going to work on it later on this evening, and I hope to have more results soon.