Freedb
# Freedb

freedb es una base de datos sobre álbumes de música en formato CD-Audio de carácter comercial, accesible gratuitamente desde internet y creada gracias a la colaboración de sus propios usuarios. Contiene información sobre el título del álbum, autor, género, título de las pistas y su duración.

## Breve reseña histórica

FreeDB surge como respuesta a la base de datos CDDB, que, siendo de pago, resultaba inaccesible a multitud de usuarios que no estaban dispuestos a pagar una licencia simplemente por ver el título de sus álbumes de música. CDDB exige al licenciatario abstenerse de acceder a otras bases de datos similares, así como mostrar el logotipo de CDDB en su producto (cosa que puede resultar imposible). El modelo de negocio de CDDB resulta más apropiado para compañías que fabrican software o dispositivos de reproducción de música.

Ti Kan fue el creador de la base de datos, con la idea de dar acceso a la misma a través de Internet a usuarios anónimos. Su prototipo sirvió a Steve Scherf para crear el software servidor de la base de datos. Steve Scherf posee los derechos sobre la base de datos y el software, lo que no impide que existan multitud de servidores en todo el mundo operados y accedidos sin ánimo de lucro. Las entradas de la base de datos están licenciadas bajo GPL.

## Modelo de funcionamiento

Cuando el usuario inserta un disco compacto en su reproductor, el software cliente freedb calcula un identificador a partir del índice de pistas del propio disco. Gracias a dicho identificador, una consulta a la base de datos debería extraer toda la información asociada al álbum.

Si el álbum no existe en la base de datos, el propio usuario debería proporcionar dicha información a través del software cliente. La base de datos se actualiza de manera que otros usuarios se benefician de esta contribución. Se trata de un modelo colaborativo.

## El protocolo CDDB

El software cliente debe implementar un sencillo protocolo de comunicaciones que permite la consulta en la base de datos. Se trata de un protocolo orientado a carácter que se puede operar con un simple cliente de Telnet.

La especificación del protocolo se estructura en cinco niveles de funcionalidad. Cada nivel aporta un poco más de funcionalidad sobre el nivel anterior. Es obligatoria la implementación de todos los niveles anteriores al deseado (por ejemplo, no es válido implementar el nivel dos, pero no el nivel uno).

El protocolo funciona de esta manera:

* El cliente envía una orden como una simple línea de texto. Por ejemplo: cddb read categ 05348953953.
* El servidor responde con un código numérico de tres cifras que indica el resultado de la operación, seguido de un mensaje informativo en la misma línea de texto. Por ejemplo: 200 Found exact match.
* Si procede, el servidor responde con el resultado de la consulta, mostrando un dato en cada línea de texto. Esta lista de resultados siempre finaliza con el carácter de punto y aparte (.) en una sola línea.
