### Development Goals

Welcome to JAudiotagger. The aim of this project is to provide a world class Java library for editing tag information in audio files. Most existing solutions are not java based inhibiting the use of java applications with digital files.

This project was branched from the jid3lib project which provided the basis for an ID3 tagging api, but was incomplete. I wanted to move away from the ID3 centric nature of the project and provide support for other tagging formats.

#### Functional Goals

- It should support the ID3 Specification accurately and completely,ideally it should provide the reference implementation for ID3.org
- It should support other audio and tagging formats in a consistent and flexible manner, it should be possible to provide a level of indirection to end users so they do not have to deal with the intricases of the format themselves WITHOUT dumming down the interface and only providing access to basic fields such as Artist/Album...
- It should help in the development of an XML/RDF tagging format
- It should integrate well with new technologies such as Musicbrainz
- It should be possible to convert between tag versions (i.e v23 <-> v 24) and between tagging formats If allowed for the audio format (e.g mp3 supports both ids and ogg)
- Scope is limited to reading and writing tags

#### Non Functional Goals

- It should be written the Java way,many low level interfaces take a very old-fashioned approach to design, often they are designed like a C program with vast switch statements/bit manipulation and magic numbers sprinkled everywhere. The code should be self documenting you should not need to know the ID3 specification inside out from another source
- It should take advantage of the latest Java releases when they are availble on all major platforms, I have not upgraded to Java 1.5 yet because this has only recently been adopted as the default java platform on MacOS
- We should work together with other open source projects to stop the wheel being reinvented