[LAD] [Jack-Devel] distros migrating to JACK2?
letz at grame.fr
Mon Apr 19 06:06:59 UTC 2010
>> This could all be true, but that's not the point I was talking about.
>> JACK2 was planned as successor of JACK1. But at some point that changed,
>> that's all ok, not the point here. But isn't it odd that this isn't
>> clearly communicated with the JACK2 maintainer, why this is happened?
>> That was raising questions here about the communication within the
>> (highly appreciated) JACK project.
> its sort of my fault. i dont feel comfortable with the jack2 codebase.
> this partly has to do with the style used.
> the important thing however is the class hirarchy.
> i find it unacceptable that i need to add a method to 5 classes to
> implement some new api function for example.
Because 3 different platform dependant communication scheme are supported : Mig generated RPC on OSX, sockets for Linux/Solaris, pipes on WIndows. And a new API has to be implemented on server and library side, thus as several places yes.
Since jack2 OSX version was developed first, Mig generated RPC was tested at that time. It could probably be replaced by Posix socket code, but last time I tried if was failing (I guess they are still some subtle differences between OSX and others Posix OS concerning sockets.)
> i end up writing a lot of boilerplate code i find useless, and
> i really hate to write useless code.
> many of the other design decisions dont make sense to me,
> and i am
> having a pretty hard time finding the relevant code fragments.
> (who would search for the servers event processing loop in the platform
> specific Communication channels ?)
Because on OSX the "event processing loop" is handled in the Mig generated RPC code , so the "event processing loop" moves in the "platform specific communication channels".
If OSX specific stuff is removed, then the "event processing loop" may go in a more generic part the code yes.
> this makes hacking jack2 a rather unpleasant experience for me.
> since nobody pays me to work on jack and i am doing this for fun.
> i minimize hacking jack2.
> yet since nobody will do the jack2 session patch i am forced again to
> work on jack2.
> i wrote tschack because i wanted to try out a different approach to the
> functionality in jack2. and to understand how a parallel jack works.
> now some people who had bad experience with jack2 tried it, and it works
> for them.
> so there is no reason to hide tschack.
> i dont see a reason to try to get stephane to reconsider his design
> decisions. it were his decisions, and he seems to be happy with them.
> my way is to start from scratch with a new c++ implementation.
A Linux specific version ? (so would be simpler yes) or a multi-platform version?
> for me this has the benefit of not using CamelCase. which will never get
> removed from jack2 (why should it? stephane likes it)
So naming convention (class, class fields...) yes?
> regarding distros move to jack2 i think its the right thing.
> i just made sure, that it will be possible to install an alternative
> jack implementation.
> iE people had a pretty hard time installing jack2 on debian.
> if they had just moved to jack2 without making libjack a virtual
> package, people would have problems instlling jack1 or tschack.
> now the packagers dont really want to package N versions of jack, since
> they would need to test all combinations of apps and jacks.
> but as long as sombody is able to provide jack1 and tschack .debs it
> will be fine.
> packagers are happy, and other people are able to install some
I don't see (yet) any of the proposed arguments as "fundamental" critic of the jack2 design. Some improvements are certainly possible, like trying to remove this OSX specific server//client communication code, and we could agree on that. I don't think starting a new c++ implementation will improve the situation. If a Linux specific version only is developed, then we move a step back yes?. But OTOH nobody is never forced to do anything in OSS.
More information about the Linux-audio-dev