Re: [Jack-Devel] The Situation(s) With JACK

PrevNext  Index
DateMon, 12 Dec 2011 17:15:25 +0100
From Stéphane Letz <[hidden] at grame dot fr>
ToPaul Davis <[hidden] at linuxaudiosystems dot com>
CcJACK <[hidden] at lists dot jackaudio dot org>
In-Reply-ToPaul Davis Re: [Jack-Devel] The Situation(s) With JACK
Follow-UpPaul Davis Re: [Jack-Devel] The Situation(s) With JACK
Le 9 déc. 2011 à 19:43, Paul Davis a écrit :

> This is my list of fundamental requirements for the next stage of JACK:
> 
> * the JACK 1.0 API must be defined first
> * it must clearly, unambiguously and incontrovertibly be the successor
> to Jack1 and Jack2
>     - this probably means that it must emerge relatively quickly
> once/if work begins on it
> * it cannot assume that Stephane will stop working on Jack2 or that
> myself will stop working on Jack1, or that anybody else will stop
>      working on anything else at all BUT it hopefully will lead to a
> union of efforts.
> * it must recognize that neither Jack1 nor Jack2 are likely to just
> "die", so any plans must include them to some extent.
> * it must provide a single soname (ABI, effectively) that identifies
> any implementation and can be used by packagers and app developers
> * every feature of Jack2 and Jack1 that people agree is worth
> retaining should be available
> * it must not increase and should preferably decrease replicated
> developer effort
> * it must be API and ABI compatible with current JACK releases
> * it must run on Windows, OS X and Linux and preferably Solaris and
> the BSD family
> * it should make possible end-user features that are agreed to be important
> 
> This is what I think the future looks like:
> 
> Features
> 
>    C API/ABI
>    C++ implementation
>    synchronous mode (server waits for all clients)
>    asynchronous mode (slow clients have no impact)
>          - possible to avoid zombification, always
>    parallel graph execution
>    click-free connection/disconnection
>    full memory locking when platform supports it
>    memory use for ports proportional to number of ports
>    no fixed limit on number of ports
>    2 thread execution in libjack (from Jack2; one for process, one
> for other callbacks)
>    multiple device support handled by server (from Jack2, but with
> the quality of alsa_in/alsa_out)
>    full control protocol
>    full support for device sharing with PulseAudio
>    realtime device switching (without stopping/restarting server)
> 
> Desirable features to be merged from outside JACK "core"
> 
>   1 streaming network protocol, for LAN and WAN use, with zeroconf
> discovery or similar
>   bridges/routers for platform specific APIs (ALSA (pcm & MIDI),
> CoreAudio, CoreMIDI, winMIDI, ASIO, other?)
>   control protocol access from (at least) D-Bus, perhaps others
>       - probably via helper components; not built into server but
> possibly loaded by it.
> 
> Development Prerequisites
> 
>  build system: waf
>  source code management: git
>  single header file tree, for use by jack1, jack2 and anything else
>  single tool dir tree, for use by jack1, jack2 and anything else
>  **proposal** use Boost widely to accelerate development and leverage existing
>      work.
> 
> User Interface
> 
>  single session manager app that can also be used to start/stop/configure JACK
>  existing control apps (qjackctl, patchage, etc) continue to be options

You are basically describing the current state of JACK2 *minus* some parts....

Do you really want to start a JACK3 project with a new implementation ??

I don't know what to say more...

Stéphane 
PrevNext  Index

1323706524.27164_0.ltw:2,a <0A9FA904-C9D9-4367-AE7C-F2EB0AC25FCC at grame dot fr>