The most merciful thing in the world is the inability of the human mind to correlate all its contents.
H. P. Lovecraft
Alsa versus OSS

Last week I read a thread on the mplayer-dev mailinglist. It was about setting the default sound output from Alsa to OSS. It is now OSS for a default compile of the tarball. However OSS is deprecated in linux AND in almost all distributions that ship mplayer (my favorite media player) set the default output to Alsa.

Most in charge mplayer developers are pro OSS and do not want to switch. One of the arguments is that OSS is now GPL and is used other unices as well . There are also arguments about library vs. unix semantics. Alsa has an OSS compatibility mode (actually two, one in-kernel and one in-library). However using this blocks soft-mixing. This means that another program playing sounds can not do this while using default mplayer compile.

Both sides have some good arguments (i truly understand the points for OSS!, it is just not realistic), but discussing them in this context is useless and the way it is done on this mailing-list is very childish and out of reality. Mplayer should set Alsa as default output for linux, because 1) all major distributions do this and do this with good reason: 2) OSS in linux is deprecated. Reading this thread made me feel tired of (the immaturity of) the open source scene.

But today I am a happy guy again. Some troll suggested removing Alsa from the linux kernel and I was afraid of another useless thread. However I found a message from Takashi (one of Alsa's most productive driver and patchwriters:

Honestly, I'm not fully against changing the current code base (or crap, whatever, any childish name). There are indeed many misdesigns. But, replacing with the above is no option, IMO. The OSS have also many misdesigns, so the same argument would start again. One should learn something from history...

Anyway, if it's going to be more constructive, I'm willing to join in.

Takashi

Hannu (the main OSS developer) then said this:

We have no intention to push OSS back to the kernel or to replace ALSA. That alternative is not realistic any more. In addition OSS is a cross-platform product and staying more or less outside various kernel trees should provide better flexibility.

What we would like to push is that the old "deprecated" OSS/Free are removed from the kernel. OSS/Free is based on about years old OSS API version which was too limited for many applications. Having OSS/Free in the kernel doesn't serve any purpose.

Also we would like to stop the silly OSS vs ALSA war. OSS and ALSA are rather different. Both of them have some good points and bad points. For ordinary users it doesn't matter which API is used by the applications as long as they work. Just the application developers can see the real difference. Some of them prefer OSS while some other prefer ALSA and this should be their "freedom of choice".

I think the ideal solution would be that both ALSA and OSS APIs can co-exist by sharing the same low level drivers (which has already been demonstrated). The low level driver interfaces in both systems are practically identical. This means that ALSA's core can work with OSS' drivers and vice versa.

Today both OSS and ALSA teams have to spend significant amounts of time in emulating the "alien" APIs. Making OSS and ALSA to co-exist will require some work in both sides but that should be nothing when compared to the effort required for emulation.

Just my 2 cents.

Best regards, Hannu

Fortunately there are still a lot of sane people in the community. Thanks!

Posted by jochem on 2007-06-27, last update on 2007-06-27