XMMS2 README
http://wiki.xmms2.xmms.se

Note: More up to date information may be available at
http://wiki.xmms2.xmms.se/index.php/Read_me_first%21

== Why XMMS2? ==

Why bother working on a next generation XMMS while there are various existing
and more advanced projects already in progress, some ready for production use?
Because XMMS is just too damn popular to be allowed to die, of course! But
seriously, while the field of 'audio playback' in general is something of an
old beaten path, there is still much room for improvement.

Constant progress is happening in the field of digital audio playback,
including: new compression/encoding schemes, better and more flexible
encapsulation and container formats, more efficient encoders and decoders,
better ways of managing collections of music files, new ways of letting users
interact with their music and so on. XMMS2 jumps into the mix with the goal of
trying to provide an improved music listening experience for users. 

The XMMS2 project started in late 2002 as an idea to make a "kick-ass music
player", and has eventually evolved into the next generation XMMS. The need for
an XMMS replacement had been evident for years: the XMMS codebase and framework
weren't exactly well-designed from the beginning. Lately, active development of
XMMS has mostly stopped, this can be attributed to the lack of active
developers, and a broken codebase. Adding new features to XMMS is difficult.
Some of the most-wanted features would be nearly impossible to add. Some parts
of XMMS are beyond patching, a re-design of the framework is needed.

Developers of another fork of XMMS, BMP, the "Beep media player", comment on
XMMS:
"The XMMS code we inherited is old and messy. In more specific terms, it is
poorly structured, poorly documented and littered with duplications. It is
difficult to modify or extend one component of XMMS without breaking another.
We spent most of our time fixing problems that were introduced after seemingly
innocent modifications."

The XMMS2 team is committed to producing a better music player, while diligently
maintaining a robust and flexible design. The goal is to make the system easy
for developers to maintain and integrate with. In terms of the listening
experience, XMMS2 makes it possible for anyone to easily manage their music
collection and to interact with it in a flexible manner.

== What is XMMS2? How is it different? ==

Being namely the descendant of XMMS and especially marked second generation,
people will have all kinds of expectations what XMMS2 will and will not be.
I'll first list the whats and whatnots shortly and explain the reasons more
thoroughly afterwards.

* XMMS2 is a music player, it plays audio.
* XMMS2 is not a video player.
* XMMS2 does have a GUI, but it is not integrated. Instead, we talk about
clients, and there can be many clients connected to the daemon.
* There will be one "official" GUI client and one "official" commandline client.

So, XMMS2 is definitely an audio player. But it is ''not'' a multimedia player -
it will not play videos. It has a modular framework and plugin architecture for
audio processing, visualisation and output, but this framework has not been
designed to support video. Also the daemon/client-type design of XMMS2 (and the
daemon being independent of any graphics output) practically prevents video
output being implemented. Reasons for this have been stated in the section
above (Why XMMS2?)


== General Questions ==

    * Q: Why rewrite XMMS?
    * A: XMMS is an old project (started in 1997) and was not expected
         to become as popular as it did. The internal design of XMMS
         is somewhat ... troublesome, if not completely broken. Also,
         the frameworks around XMMS have changed a lot. The general
         opinion among the developers was that if ANYTHING should
         happen, it would be a complete rewrite.

    * Q: Who is responsible for XMMS2?
    * A: Peter Alm (original author of XMMS) did the first designs and
         the initial code. Most of the code is written by Tobias
         Rundstrm and Anders Gustafsson. The project is being
         maintained by Tobias and Anders. A big thanks goes out to
         Thomas Nilsson too, he bitches well.

    * Q: Those are not the same developers who maintain XMMS?
    * A: That's true. XMMS2 is a separate project. Rest assured, XMMS
         will live on for a long long time. XMMS2 will not be ready
         any time soon to take over from XMMS1.

    * Q: What are the design goals of XMMS2?
    * A: XMMS2 is designed to be a kickass music-player. We wanted to
         rectify various problems with the XMMS APIs. For example,
         splitting the input-plugin into transport- and
         decoder-plugins. We also wanted the UI to be separate from
         the core engine, in order to allow other interfaces than a
         Gtk+ GUI.

    * Q: Why just a musicplayer?
    * A: A lot of people ask us about video. But video will not be
         included, nor will it be supported in XMMS2, in fact video-support
	 is even less possible than in XMMS1. This choice has numerous
         reasons. Music and video are very separate things, despite
         what many people like to think. The architecture of XMMS2 is
         designed such that it handles audio wonderfully well -
         handling video is simply not part of this project's scope and
         will not be added. And we believe that we can make the best
         musicplayer out there, but not the best videoplayer, so we
         stick to what we are best at. There are other choices, if you
         wish to play video and audio via the same application.

    * Q: But XMMS stands for X MultiMedia System, that includes video!
    * A: Wrong. In "XMMS2", XMMS stands for X(cross)platform Music
         Multiplexing System.

    * Q: Seems like you are using a non-standard buildsystem, why not Make?
    * A: Make is a really good buildsystem, although to get all
         functionality needed for a bigger project you'll need
         automake, autoconf and libtool. We had a lot of problems
         getting these tools to do what we wanted, so we evaluated the
         alternatives. SCons is a good alternative. If you do not want
         to install Python and SCons on your system, there will be
         binaries available for the most common platforms.

    * Q: What platforms will you support?
    * A: Our aim is to be able to port XMMS basically everywhere, but
         development is mainly done on Linux/x86, Linux/PPC and Mac
         OSX. Support for other platforms is currently secondary,
         although it has been known to work on OpenBSD and Solaris.

    * Q: What about Windows?
    * A: Our code should run on Windows without any problems, being ANSI-C. 

    * Q: How do I get in contact with you guys?
    * A: Drop by #xmms2 on Freenode, or see http://wiki.xmms2.xmms.se/index.php/About#Contact_info for more details.

