On Wed, Oct 10, 2012 at 2:04 PM, J. Liles <malnourite(a)gmail.com> wrote:
[ ... ] but that's understandable considering
that most Linux Audio
programs are maintained by single developers (with lots of other projects)
or small groups.
[ ... ]
My personal frustration with Linux Audio is mainly
focused on the
seemlingly iron-clad (but flawed) JACK API. We've needed the ability to
rename clients and have ports with arbitrary event payloads (to allow MIDI,
OSC, or whatever other streams to be managed via the JACK connection graph
and frame clock) for years. And, even though many proposals have been made
and patches submitted, it doesn't look like the JACK API is ever going to
be improved--which doesn't speak well at all for the future of modular
audio on Linux
see your quote above. here's the process:
* people identify an issue with the JACK API
* there is discussion of various approaches to the issue
* one or more people propose actual coded solutions
* there is more discussion
* potentially, one or more of the coded solutions is modified, followed
by more discussion
* if no solution rises to the top, the issue remains unaltered
* if a solution rises to the top, AND if there is a clear consensus that
its the right solution,
then it goes in. this final step is the only one where my role as
"benign dictator" kicks in
since its typically me who decides whether the solution has
emerged and whether there
is broad consensus.
lets look at the situation with MIDI sysex messages for example. the lack
of support for arbitrary length messages is a genuine and real issue,
though doesn't affect the overwhelmingly common uses of JACK MIDI. it has
been discussed extensively. there have been 2 coded solutions proposed.
despite this, i don't feel that there is really a consensus that either of
them is really "right". as a result, the issue remains outstanding. people
are free to challenge this decision based on disagreeing with my assessment
of any of the steps outlined above. you could insist, for example, that
there is a consensus. you could even insist that its silly to go for
consensus when so few people would use or even care about the nature of the
solution. i'm open to all of that, except that i want to see a
meta-consensus in that latter case (i.e. a consensus that no consensus is
OK for this particular issue).
there are many areas where the JACK API could use some work. the only one
that i am aware of where there is reasonable consensus is the port metadata
API, which has not been implemented purely because of the reasons outlined
in your initial line above.
(such improvements are unnecessary for monolithic applications such as
Ardour since they duplicate all this functionality
internally) .
actually, no. Ardour has only recently started "duplicating" any of this
functionality internally, and even then, its for very limited purposes. it
uses JACK for more or less everything, and does not duplicate much of
JACK's functionality at all. Ardour2 continues to use JACK for all audio
routing, for example.
If an API is going to be fixed and rigid, it must also
be extensible (like
LV2).
that doesn't seem to have held back a bazillion other APIs, including at
least 2 other "notable" (non-free) audio plugin APIs. neither VST nor
CoreAudio are extensible, but this does not appear to have held back
hundreds of plugin developers from creating plugins for those APIs. if
we're looking for reasons why plugin developers do not develop (as a rule)
for Linux, i think that the extensibility or non-extensibility of an API is
probably not the place we'll find the answer(s).