the libmpdclient project has suffered in the past: instead of having a
shared library with a stable API, all clients chose to copy
libmpdclient.c into their source directory. That resulted in many
forked and different versions of libmpdclient.
To fix that, to account for new requirements and to support new MPD
features (e.g. "idle"), I decided to start the project "libmpdclient
v2.0". Although there never was a 1.0, "2" will be the SO version
The goals of the project:
- provide a slim and fast C API for connecting to MPD
- no dependencies except C99/POSIX (maybe compile-time optional GLib
for memory slices, etc.)
- portability - even Windows? There's no good C99 compiler on
- consume few resources
- API is lean, but powerful
- very low-level (i.e. stateless)
- maybe provide a second, high-level library (merge code from libmpd?)
- maybe provide a C++ OO API (merge code from ncmpcpp?)
- support asynchronous (=non-blocking) I/O, but don't mandate a
framework (libevent, GLib)
- keep support for synchronous (=blocking) I/O (with timeout?)
- support all MPD features, including "idle"
I have started to work on the current libmpdclient.git, and merged a
lot of patches from ncmpc.
Some of you already promised to help me with that. From now on, I
will accept patches (git pull requests preferred). Please keep your
git repository rebased on mine.
First TODO list fragment:
- remove CamelCase
- struct forward-declarations instead of typedefs
- make structs opaque
- separate libmpdclient.c into separate sub-libraries
- rename includes with mpd/ prefix: mpd/client.h mpd/song.h ...
- .... much more