Category Archives: Better late than never dept.

Picard 1.3 released

Version 1.3 of Picard has been released today, with some notable features and bug fixes.

This release has few visible changes, but overall performance and stability were much improved. A lot of minor annoying issues were fixed. Cover art code was reworked, and notably one can now enable fallback on release group cover art if no cover art exists for a specific release.

Logging was improved, user can now enable debug mode from About →View Error/Debug Log, it may help to see what is going on if needed, passwords and sensible information were hidden from the log, so user can now safely post his log to get help.

To report any issue concerning this release, please use our bug tracker. As usual you can also get help on forum or on IRC (freenode, #musicbrainz).

Special thanks to Sophist, Wieland Hoffmann, Michael Wiencek, Johannes Dewender, Lukáš Lalinský, Frederik “Freso” S. Olesen, and the whole MusicBrainz Team.
Many thanks to all users, developers, bug reporters and translators. Code contributions since 1.2 are visible on Github Contributors graph.

Unfortunately the OAuth support patch (PICARD-305) didn’t make it in this release.

Picard 1.3 can be downloaded on the Picard’s website.

Be aware that downgrading from 1.3 to 1.2 may lead to configuration compatibility issues, better save your configuration before installing 1.3 if you intent to go back to 1.2.

Among changes since 1.2:

  • The “About” window now displays the versions of libraries used by Picard
  • Picard now correctly handles matching of MP3 files saved in ID3v2.3 tags (which is the version that Microsoft Windows and iTunes both use).
    Note: You may need to re-save your tags once to get them to match in future.
  • A sort tags plugin is now provided as tag data is no longer displayed sorted by default.
  • A new tag, musicbrainz_releasetrackid, containing the MusicBrainz Track MBID introduced in the May 2013 schema change release, is now written to files.
  • Add %_recordingtitle% (PICARD-515)
  • Fix plugin install bugs (PICARD-444)
  • Fix Options → File naming examples to handle primary/secondary release types (PICARD-516)
  • A new advanced option is available to permanently set the starting directory for the file browser and “Add files/folder” buttons.
  • Requests to Musicbrainz against your own account e.g. for collections are now handled through SSL (PICARD-337)
  • Refresh of Albums using Ctrl-R and selection of Other Releases are now more responsive during batch lookups.
  • Main window is now emitting a “selection_updated” signal, plugin api version bumps to 1.3.0
  • Append system information to user-agent string
  • Compilation tag/variable functionality (for tagging & file naming) has been split into two:
    %compilation% is now aligned with iTunes, and set only for Various Artists type compilations
    %_multiartist% variable now indicates whether this release has tracks by multiple artists
    (in order to prepend the artist name to the filename as shown in the default file naming script)
  • autodetect the CD drive on Mac OS X (PICARD-123)
  • Ignore directories and files while indexing when show_hidden_files option is set to False (PICARD-528)
  • Add ignore_regex option which allows one to ignore matching paths, can be set in Options → Advanced (PICARD-528)
  • Added an “artists” multi-value tag to track metadata, based on the one in Jaikoz, which contains the individual artist names from the artist credit. Also useful in scripts (joining phrases like ‘feat:’ are omitted) and plugins.
  • Added “_artists_sort“, “_albumartists“, “_albumartists_sort” variables for scripts and plugins.
  • Made Picard use the country names also used on the MusicBrainz website (PICARD-205)
  • New setup.py command `get_po_files` (Retrieve po files from transifex)
  • New setup.py command `regen_pot_file` (Regenerate po/picard.pot)
  • New Work tag (which for Classical music is often different from the track title) saved as ID3 TOAL tag.
  • New Composer Sort Order tag (variable %composersort%).
  • Improve the Other Releases list to prioritise and separate releases which match the correct number of tracks and your Options → Metadata → Prefered Releases settings for Country and Format.
  • New %_absolutetracknumber% variable numbering tracks sequentially regardless of disc structure (so you can numbers tracks on multi-disc releases without a disc number)
  • Support dropping image directly from Google image results to cover art box
  • Add %_musicbrainz_tracknumber% to hold track # as shown on MusicBrainz release web-page e.g. vinyl/cassette style A1, A2, B1, B2
  • Show the ID3 version of the file in the Info… dialog (Ctrl-I) (PICARD-218)
  • Fixed a bug where Picard crashed if a MP3 file had malformed TRCK or TPOS tags (PICARD-112)
  • Add –files option to setup.py build_ui, used to force .ui to .py regeneration (PICARD-566)
  • New setup.py command `update_constants` (Regenerate countries.py and attributes.py)
  • Made Picard use release groups, medium formats and cover art types also used on the MusicBrainz website
  • Use MusicBrainz Server translations for release groups, medium formats and cover art types
  • Add checkbox to toggle debug at runtime in log/debug view dialog
  • Add a plugin to add Artist Official Homepage relationships to the website tag (ID3 WOAR tag)
  • Add integrated functions $eq_any, $ne_all, $eq_all, $ne_any, $swapprefix and $delprefix.
  • Add %_performance_attributes%, containing performance attributes for the work e.g. live, cover, medley etc.
  • Use $inmulti in file naming scripts i.e. …$if($inmulti(%_performance_attributes%,medley), (Medley),)
  • Add optional `priority` parameter to `register_album_metadata_processor()` and `register_track_metadata_processor()`
    Default priority is `PluginPriority.NORMAL`, plugins registered with `PluginPriority.HIGH` will be run first, plugins registered with `PluginPriority.LOW` will run last
  • Add Standardise Performers plugin to convert e.g. Performer [piano and guitar] into
    Performer [piano] and Performer [guitar].
  • Add support for release group cover art fallback (PICARD-418, PICARD-53)
  • Add a clear button to search box
  • Honour preferred release formats when matching AcoustIds (PICARD-631)
  • Prevent ZeroDivisionError in some rare cases (PICARD-630)

Annual report for 2012 finally posted

I finally completed the 2012 annual report! This year has been busy, so I apologize for finishing it this late.

Our cost per 1M web hits dropped significantly, we finished our first year in the red and we created 1/4 of all of our edits to date in 2012! Go read the report to find out who was the top editor, the top voter and other interesting tidbits about MusicBrainz in 2012.

Thanks to Navap, Nikki and Reosarevok for helping in putting this report together!

MetaBrainz Foundation Annual Report for 2010

Introduction

2010 was a big development year for us with an amazing amount of tangible progress on the Next Generation Schema (NGS). NGS would prove to be our number one task in 2010, with no server releases happening at all because of our focus on NGS.

Early in the year we increased our engineering capacity with Kuno Woudt joining us as a full time developer in February; Oliver Charles moved from a part time position into a full time position in June 2010. Their sole focus for the entire year was to finish NGS, and we got within a few months of finishing it.

We transitioned from Subversion to Git as our version control system in the process of writing NGS. From Nov 2009 to Feb 2010 the MusicBrainz Server codebase went from ~224,000 lines of code down to ~72,000 (the lowest since 2003!). By the end of 2010 we reached ~130,000 lines of code. NGS does a lot more, but with a lot less code. NGS was a much needed cleanup and overhaul of our aging codebase.

Financially we started 2010 off pretty weak, but got an early boost with a $50,000 donation from Richard Jones (one of the founders of last.fm) and later a $40,000 donation from Google. These generous donations allowed us to continue focusing on NGS — thank you Google and Richard Jones!

MetaBrainz took on The GuardianmusiXmatch, and ZeeZee as new data customers in 2010.

Google Summer of Code 2010 resulted in an exciting new addition to our product line – the MusicBrainz Android App. Developed by Jamie McDonald, the Android app allows anyone to carry the MusicBrainz Database around in their pocket wherever they go. It is a very handy app to settle music debates at parties!

Jess Hemerly conducted a study and wrote a paper on MusicBrainz as part of her Master’s program at the UC Berkeley School of Information. Among many other topics, she answered questions such as ‘Why do people contribute?’, ‘What characterizes editors’ participation?’, and ‘What is the role of metadata in music technology?’.

Profit & Loss

In 2010 the foundation took in $177,740.94 and spent $172,904.94 for a total excess income of $4,836.00.

Income

Direct Donations $90,278.89
PayPal Donations $6,867.99
Consulting $2,669.75
Live Data Feed Licenses $52,682.76
CC Data Licenses $5,100.00
Amazon Associates $1,299.94
Tagger Affiliates $18,147.62
CD Baby Affiliate $12.00
Bank Credits $0.10
Bank Interest $681.89
Total Income: $177,740.94

Expenses

Bank Fees $995.30
PayPal Fees $1,263.63
Rent $2,856.00
Hardware $5,455.15
Travel $4,806.26
Internet $184.56
Development $109,991.19
Gifts $458.63
Events $270.98
Hosting $16,900.00
Filing Fees $60.00
Software $99.00
Entertainment $331.53
Books $20.99
Insurance $2,025.00
Accounting $1,200.00
Shipping $87.51
Payroll Taxes $25,639.39
Advertising $259.82
Total Expenses: $172,904.94

The Profit & Loss shows:

  • In 2010 the foundation spent $22,355.15 on hosting and hardware costs and served out 3.2 billion web hits and 1.5 billon web service hits. Calculating a cost per hit, we find that we spent $6.93 per one million web hits and $14.50 per one million web service hits. Compared to our 2009 figures of $8.66 per one million web hits and $14.37 per one million web service hits, these numbers didn’t change much.
  • End-user donations via PayPal came to $6,867.99 which is roughly 10% less than last year. End-user donations came to less than 4% of our overall income due to the much larger role of sponsors such as Google and Richard Jones.
  • Development costs in the form of salaries paid to Robert Kaye, Oliver Charles, and Kuno Woudt came to $109,991.19. It is amazing what we were able to accomplish with such a limited budget for paid engineers.
  • In 2010 we earned $52,682.76 from live data feed licenses and $5,100.00 from Creative Commons licensed data for a total of $57,782.76. This is up 28.8% from the total of $44,878.50 in 2009.

Balance Sheet

The balance sheet for the end of 2010 showed the MetaBrainz Foundation with $77,011.94 retained earnings, a net income of $4,836.00, and cash assets totalling $81,847.94.

Traffic

The following chart shows our overall web traffic to musicbrainz.org for 2006 – 2010:

Musicbrainz Traffic 2006-2010

The blue line represents the overall number of hits to musicbrainz.org and the red line shows how many of the overall hits were web service (API) hits. As in previous years, our web service hits represent about 85% – 90% of our overall traffic. Please note that in September of 2009 we switched to a more accurate method for keeping track of our overall web services hits. Prior to this, the graph shows the sum of the artist/release/track counts, rather than the total web service traffic.

Our traffic grew considerably in the first half of 2010, but then leveled off for the second half of 2010. We don’t know what accounted for this leveling off, but we suspect that the lack of new features for the MusicBrainz server generally decreased interest in the project.

Top contributors

Top Editors
1. drsaunde 73982
2. brianfreud 72121
3. gswanjord 58933
4. murdos 54517
5. HumHumXX 43985
6. dimpole 39527
7. salo.rock 38644
8. nikki 37770
9. reosarevok 37702
10. refresh_daemon 34806
11. jesus2099 33515
12. Senax 30956
13. MeinDummy 25521
14. mr_maxis 24743
15. Billy Yank 20248
16. dinog 20215
17. crazee_canuck 18537
18. ojnkpjg 18469
19. Bitmap 17612
20. kepstin 16550
21. NAvAP 16095
22. Jeroen 16064
23. rswarbrick 15972
24. zos18 15204
25. fred576 14897
Top Voters
1. chabreyflint 49247
2. salo.rock 48651
3. murdos 33786
4. Locustus 29267
5. SuicideScrub 24312
6. bogdanb 22473
7. nikki 21085
8. brianfreud 20606
9. gswanjord 19276
10. Bitmap 17956
11. MClemo 17362
12. drsaunde 15082
13. KRSCuan 13922
14. dinog 13844
15. reosarevok 9650
16. MeinDummy 9262
17. HumHumXX 8534
18. mr_maxis 7617
19. PhantomOTO 7194
20. articpenguin 7092
21. ojnkpjg 6977
22. Plagueis 6877
23. alphaseven 6762
24. fatih 6611
25. alllysssa 5819

Server farm

At the end of 2010, MusicBrainz had 14 machines in service. From the top, going down:

  • moose: Our database server
  • scooby: Our aging catch all server: blog, forums, mailing lists, etc
  • catbus: Raw database server (raw tags, collections, etc)
  • bender: Former TRM server, now idle cold spare machine
  • blik: memcached
  • stimpy, dexter: web service servers
  • cartman: Search server, index builder
  • wiley: New catch all server: SVN, git, jira, wiki, trac, mail, backups
  • lenny/carl: Redundant network gateways
  • tails: Front end web server
  • asterisk: Search server
  • jem: Search server

MusicBrainz uses 6mbits of bandwidth per second and draws 21 Amps of current for a power consumption of about 2,310 Watts. MusicBrainz physically occupies 20Us of space (half of a rack) at Digital West in San Luis Obispo, CA.

Words of Appreciation

2010 was a challenging year for us, starting off with rocky finances, but support from Richard Jones and Google put us back on track. There were many people who thought that we could not ship NGS or that MusicBrainz would languish while we worked to complete NGS. Given that we had no server releases at all in 2010, we are pleased that the project remained relevant and that our community believed in us to finish NGS.

MusicBrainz would like to thank its community of stellar editors (see above), its core developers (Lukáš Lalinský, Oliver Charles, Kuno Woudt, Aurélien Mino), our hero of system administration, Dave Evans and our goddess of bug tracking, bug fixing, editing and all things unicode, Nikki. We thank Jamie McDonald for the awesome Android app he wrote and we’d also like to thank Pavan Chander for all of his contributions.

We’d like to thank Richard Jones, Google and every single donor who donated money to MetaBrainz in 2010. We’d also like to thank our board of directors (Cory Doctorow, Brian Zisk, Matt Wood, Rachel Segal/Carol Smith), our pro bono legal advisors Daniel Appelman and Ed Cavazos, our awesome hosting company Digital West and all of our customers. Finally, we would also like to thank the music teams at the BBC for their continued support and for motivating us to bring NGS to a close.