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? ==

This is one of the fundamental questions concerning the XMMS2 project
as whole. 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?

The question is inherently complicated and so is the answer. XMMS2 as
a project had been cooking for a long, long time before GStreamer
(http://gstreamer.freedesktop.org/), MusicPD (http://musicpd.org) or
similar projects started. The need for an XMMS1 replacement had been
evident for years - the codebase and the framework weren't exactly
well-designed from the beginning. Lately XMMS1 hasn't been actively
developed further, which can be attributed to the lack of active
developers, but also to a broken codebase. Adding new features is
bulky - some of the most wanted ones would be near impossible to
add. Some parts of XMMS1 are beyond patching, so a re-write of the
framework is needed.

As the years went by, GStreamer was born - a generic multimedia
framework with lots of flexible modularity and extensible
plugin-architecture. GStreamer is an interesting concept, but XMMS,
despite the name, was never meant to be a generic multimedia
player. XMMS has always essentially been an audio player - the video
plugins were just ugly glue for technical experimentation. GStreamer's
goal is to be a generic multimedia framework; implementing everything
in a very generic way tends to waste resources and GStreamer
developers haven't exactly been sparing them in other ways
either. XMMS2 does not need the video-related crud that GStreamer
has. Also, XMMS2 aims for platform independence, which is not
GStreamer's goal in a strict sense.

== 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 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: E-Mail: tru at xmms dot org and andersg at xmms dot org 
         IRC: irc.freenode.net:6667 #xmms2

