User:Kuno/Development Overview

From MusicBrainz Wiki
Jump to navigationJump to search

Development > Overview

Architecture Overview

The following diagram briefly illustrates the different components of the MusicBrainz service:
How the MusicBrainz components are related to each other

(the above picture should be embedded, but that doesn't seem to work for external images --warp).

MusicBrainz Web Server

Starting with probably the most familiar part, MusicBrainz has a web site. Using the MusicBrainz web site, you can search, browse and edit the MusicBrainz database.

Human interaction (Web Browser)

Your web browser (top left) sends HTTP requests to the Server (centre) which then accesses the Database as appropriate, and returns a response to your browser (usually a web page showing the requested information).

Machine interaction (XML Web Service)

The MusicBrainz server also provides a (machine-readable) Web Service. By sending requests to the server, a client can query existing information, and possibly enter new information to the database.

Although any client can send web service queries to the MusicBrainz server, the easiest and most reliable way to do so is by using one of our client libraries. (FIXME: link to pymb2 and other libraries).

Some clients may want to identify music by using audio fingerprinting technology. Those clients use the open source libofa to query the MusicDNS Server, the MusicDNS server returns a PUID which can be used to query MusicBrainz. See How PUIDS Work for more information. MusicDNS is a service provided by AmpliFIND Music Services, MusicDNS is not part of MusicBrainz.


MusicBrainz Picard is a cross-platform (Linux/Mac OS X/Windows) application written in Python and is the official MusicBrainz tagger.

bzr branch lp:picard

Please see for more information on picard development.

Search server

The search server provides indexed searches for both the MusicBrainz website and the Web Service. The search server is built on Lucene and runs on Tomcat 6.

svn co search_server

Please see User:kuno/Search_server_setup_for_developers for instructions on setting up the server for development.

MusicBrainz web server (next version)

The MusicBrainz web server runs the main website, and provides the web service. The server code is written in perl, and current development is focused on a rewrite of much of the server code using the Catalyst web framework and Template Toolkit.

git clone git:// mb_server

MusicBrainz web server (current)

The MusicBrainz web server currently used on is also written in perl, using Mason for templating.

svn co

For more information see MusicBrainz Server.


We also maintain a bug tracker for anything which doesn't fit neatly into the areas described above (things like this wiki, chat logging, forums, MetaBrainz, etc...).