User:Kuno/Development Overview: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
(fixed links)
Line 13: Line 13:
MusicBrainz Picard is a cross-platform (Linux/Mac OS X/Windows) application written in Python and is the official MusicBrainz tagger.
MusicBrainz Picard is a cross-platform (Linux/Mac OS X/Windows) application written in Python and is the official MusicBrainz tagger.


* Current maintainer: [[http://wiki.musicbrainz.org/User:OutsideContext|Philipp Wolfer]].
* Current maintainer: [[User:OutsideContext|Philipp Wolfer]].
* Bug tracker: http://bugs.musicbrainz.org/
* Bug tracker: http://bugs.musicbrainz.org/
* Source code: https://launchpad.net/picard
* Source code: https://launchpad.net/picard
Line 24: Line 24:
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.
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.


* Current maintainers: Paul Taylor, Aurélien Mino.
* Current maintainers: Paul Taylor, [[User:Murdos|Aurélien Mino].
* Bug tracker: http://jira.musicbrainz.org/browse/SEARCH
* Bug tracker: http://jira.musicbrainz.org/browse/SEARCH
svn co <nowiki>http://svn.musicbrainz.org/search_server/trunk/</nowiki> search_server
svn co <nowiki>http://svn.musicbrainz.org/search_server/trunk/</nowiki> search_server
Line 32: Line 32:
The MusicBrainz web server runs the main musicbrainz.org website, and provides the web service. The server code is written in perl, and current development is focused on a rewrite of the much of the server code using the Catalyst web framework and Template Toolkit.
The MusicBrainz web server runs the main musicbrainz.org website, and provides the web service. The server code is written in perl, and current development is focused on a rewrite of the much of the server code using the Catalyst web framework and Template Toolkit.


* Current maintainers: Oliver Charles, [[http://wiki.musicbrainz.org/User:Kuno|Kuno Woudt]].
* Current maintainers: Oliver Charles, [[User:Kuno|Kuno Woudt]].
* Source code: http://git.musicbrainz.org/ (git clone git://git.musicbrainz.org/musicbrainz-server/core.git mb_server)
* Source code: http://git.musicbrainz.org/ (git clone git://git.musicbrainz.org/musicbrainz-server/core.git mb_server)
* Bug tracker: http://jira.musicbrainz.org/browse/MBS
* Bug tracker: http://jira.musicbrainz.org/browse/MBS

Revision as of 08:05, 19 February 2010

Development > Overview

Focus areas

Development of MusicBrainz is currently focused in three different areas:

  • Picard
  • Search server
  • MusicBrainz web server

Picard

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 http://wiki.musicbrainz.org/Picard_Development 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 http://svn.musicbrainz.org/search_server/trunk/ search_server

MusicBrainz web server (next version)

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

MusicBrainz web server (current)

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

For more information see MusicBrainz Server.

Other

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...).



Architecture Overview

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

MusicBrainz Web Server

Starting with probably the most familiar part, MusicBrainz has a web site. You are reading one of its pages right now, of course. 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 (right) which then accesses the Database as appropriate, and returns a response to your browser (usually a web page showing the requested information).

Machine interaction (RDF/XML Webservices)

The MusicBrainz server also provides a (machine-readable) RDF interface. RDF is an XML-based language. By sending RDF queries to the server, a client can query existing information, and possibly enter new information to the database. The client constructs an RDF message, and sends it to the server, then the server parses and processes the message, accesses the database as necessary, and returns a response to the calling client.

Although any client can send RDF queries to the MusicBrainz server, the easiest and most reliable way to do so is by using the libmusicbrainz. Any program can use the libmusicbrainz to query the web service for information. The library constructs the correct RDF query, sends it to the server, receives the server's response, and finally returns the data to the calling program. The program does not have to implement the mechanics of RDF or know about the RDF web service internals.

Whilst most client applications (e.g. media players) will probably use only the RDF interface (via libmusicbrainz), sometimes it is useful to also use the web interface at the same time. This is the approach taken by both the Classic Tagger and the CD Lookup Tool. The current workflow is as follows: The Classic Tagger will read a digital audio file, generate a TRM signature (using libmusicbrainz), look up that signature on the server (using libmusicbrainz) and show the results to the user. Then, if the user chooses to lookup the file, the tagger points its embedded web browser component to the MusicBrainz web site, where the user is assistet in finding the matching Track in the Database. Finally when the user selects the track, the tagger associates the TRM ID with the selected track (using libmusicbrainz, again).

The new Picard Tagger uses the same steps to associate fingerprints with digital audio files, but uses the libtunepimp library, and the new fingerprinting technology from MusicDNS to associate PUID to tracks.