On Tue, 17 Sep 2002, Jaroslav Kysela wrote:
> After some thoughs, I think that this sort of cleanups is good for
> implementing at any time. It doesn't break the implementation (in the
> sense of behaviour), but it makes that older code is not compilable.
> Fortunately, any C programmer can fix the compilation in this case, so
> it's definitely not a big problem.
I understand this change needed to be done, but I'd still like to humbly
remind of the effects of breaking source-level compatibility, even if
the binary-level compatibility is preserved.
I'm currently maintaining nearly a dozen applications that use the ALSA
0.9 PCM API. These apps have hundreds of users that have the latest 0.9rc
or a CVS-snapshot installed. Now I'm facing a situation where I need to
patch all these apps with new and old code plus ifdefs, test, release new
versions and possibly inform users that "if you want to upgrade to
0.9-rc4/CVS, you must also upgrade app X, or otherwise compiling X will
fail".
In any case this will be bad PR for ALSA and generate a lot of work
for developers working on ALSA and apps using ALSA. You wouldn't believe
how much I still get mail from people who are...
- trying to compile 0.5.x only apps against 0.9.x
- trying to compile 0.9.x apps against 0.5.x
- have 0.9.x packages installed but a 0.5.x style modules.conf
- have different versions of alsa-driver/alsa-lib/alsa-utils installed
... and most of time the problem report is as detailed as "ALSA is not
working on my machine". ;) And now I can add the "rc[1-3] vs rc[4-]" to
the list.
And I must say that there are quite a few people out there who have a
really negative attitude against ALSA, because of old API changes and/or
documentation issues. This, of course, is not the fault of ALSA
developers, but it's still something that affects all of us, who are
interested in a succesful future for ALSA.
Some random ideas for future:
- Python style interface changing, where old interfaces are first
deprecated for one major release (with clearly visible warnings),
and removed from the next major release [1]
- make the API changes between major releases
-> less of an suprise for both users and developers
[1] You could for instance have a ALSA_USE_API_V1_1 (or some such)
preprocessor definition that would select the new
API (ie. apps would define ALSA_USE_API_V1_1 before including
alsa/asoundlib.h). This would allow apps to start using
a new API between major releases, without causing any source
nor binary level incompabilities.
PS In any case, thanks to Jaroslav for adding symbol
versioning to alsa-lib. Things like this are also good
from PR perspective... ;)
--
http://www.eca.cx
Audio software for Linux!
-------------------------------------------------------
This SF.NET email is sponsored by: AMD - Your access to the experts
on Hammer Technology! Open Source & Linux Developers, register now
for the AMD Developer Symposium. Code: EX8664
http://www.developwithamd.com/developerlab
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel