"Paul Davis" <[EMAIL PROTECTED]> wrote: > thats very true. my position is very, very simple: OSS was a *HUGE* > and monstrous mistake. in the guise of using The Unix Way (TM) for an > audio API, it has saddled us with dozens of (mostly toy) applications > that use a design model/architecture that is not appropriate for real > time work.
Let me take a step back and ask a question that has plagued me for a while: what *is* the Unix way to solve new problems in new domains? I cringed a little when I read this in the Linus Torvalds autobiography: This simple design is what intrigued me, and most people, about Unix (well, at least us geeks). Pretty much everything you do in Unix is done with only six basic operations. [...] [They are fork, exec, open, close, read, write] Sure, there are tons of other system calls to fill in all the details. But once you understand the six basic ones, you understand Unix. Because one of the beauties of Unix is realizing that you don't need to have complex interfaces to build up something complex. You can build up any amount of complexity from the interactions of simple things. What you do is create channels of communications (called "pipes" in Unix-speak) between simple processes to create complex problem solving. An ugly system is one in which there are special interfaces for everything you want to do. Unix is the opposite. It gives you the building blocks that are sufficient for doing everything. That's what having a clean design is all about. I cringed because it struck me that this is exactly the kind of thinking that bore OSS. The idea that any new task (such as sound input and output) should be designed to use combinations of the simple interfaces we already have, so that we can use the tools we already have to do work in the new domain. The idea that "cat file.aiff > /dev/audio" should be an acceptable way to play audio files, or that JACK should be replaced by a complicated shell script that just pipes different programs together. :-) Audio I/O has a completely different set of assumptions and constraints than reading and writing files. It seems to warrant a different API and different system calls. But does this go against the Unix way? Is ALSA in line with the Unix way? Josh -- "Only Angels can sing that high, and only dogs can hear it." -- James Evans