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

Reply via email to