Yes, thats true, you might read Josh's comments
about writing the ALSA
part, he surely had a good time.
well i have some idea of that, since JACK has to do basically the same
thing.
ALSA is not really easy to program, and thats not about
novice programmers
and advanced programmers. There are just some people who do not understand
why a Sound API has to be that complicated. (JACK shows that it hasn't to
be this way)
ALSA is, at this time, a hardware abstraction layer. it attempts to
provide mechanisms for applications to interact with all the many
capabilities of modern audio interfaces. it doesn't provide any highly
simplified model for this - on alsa-devel and here and on
jackit-devel, we argued quite a bit about whether or not ALSA should
provide something like JACK. i continue to think that it should
not. JACK, and any other very simple audio API, is all about removing
most of the possibilities associated with audio interface
hardware. this involves many design decisions that may not be
appropriate for some kinds of applications. as such, i am happy that
we have JACK *and* ALSA, with JACK providing a powerful but highly
simplified API and ALSA offering full access to the audio hardware for
programs that need it.
all that we need now (planned for release 1.1) is for an app to become
the JACK server when its the only thing running, thus removing the
*requirement* to have a server/client model.
if you look back over the last 2 years of alsa-devel, you will see why
ALSA is so complex. we have wanted to provide control over every
possible aspect of what you can do. interleave/non-interleave, mixer
controls, 24 bits in the lower or upper end of a 32 bit value, generic
S/PDIF controls, control of the sample clock source, driver side
parameters, xrun detection, on and on it goes. most of us don't want
or need such an API, but some of us do, sometimes at least.
A sign of this is that this discussion takes place at
all, considering
what crap the OSS API in reality is (well, as an excuse, its old and
it is only the kernel API ...)
the discussion only happens, IMHO, because ALSA has taken so long and
gone through so many API-incompatible changes. as a result, we still
have lots of OSS-API using software around which might have been
recoded 2 years ago under different circumstances. if ALSA had been
ready with the 0.5 series, i don't think we'd be talking about this...