@reduz: as a commercial plugin developer (perhaps the
only commercial developer insane enough to focus primarily on linux audio..
) I understand a lot of your pain regarding linux audio, however I don't think its quite as bad as you make it seem, though there are some bits I agree with:
You can't reuse anyone else's work because it eventually stops being mantained, or a new version that is incompatible comes out and in either way becomes obsolete.
As a commercial developer, I don't use any GPL'd code - for obvious reasons, but I've lost count of the number of projects I've tried to build that are GPL, and which either use some obscure library which is no longer maintained, or simply provide links to libraries which no longer exist. It's difficult to get the right balance between re-inventing the wheel, and / or forking existing libraries and / or generating code which depends on a huge tree of libraries just to do something relatively simple. (All my plugins have minimal dependencies on system libraires, normally just a subset of the standard C / C++, and X11 for GUI code as this is about the only way I can create binaries that have a good chance of being compatible across most linux distros from more than a few days..)
In X11 to this day it's impossible to mix up toolkits (Qt and GTK for example) in a single app, even in different threads. They can't share an X11 connection, and even if they could they use too many singletons, which makes it impossible to load them straight from a .so.
One of the things I had to spend a lot of time on before I was prepared to release anything was getting a GUI that would work in
any host application regardless of native toolkit (I figured if a plugin was LV2 or VST or whatever, users would / should expect it to work in any host which claimed to be LV2 or VST compatible - it made no sense to have it LV2, but only GTK or LV2 but only Qt etc etc). The only sane option was to go to the lowest common denominator and use native X11. You
can get multi-threaded stuff to work using X11 but its not straight forward, and I had to invest a significant amount of time in getting this working properly. A useful side-effect of doing this is that I then had an X11 toolkit which was easily re-used when porting to native linux-VST which is entirely dependent on having an X11 based GUI.
For this reason, DSSI was created, but it's horrible.
Yes - I think DSSI is possibly the worst solution ever invented (but I also think it was in some way intended to be a temporary solution, so apologies to the developers if I'm being too harsh - but having tried to use it and had plugins fail to load their GUI because my network config was wrong... well, if something like that can happen, it's a big big warning sign that the underlying architecture is totally wrong. A user is absolutely
not going to think "Plugin X doesn't seem to have a working GUI, I wonder if that has anything to do with my network config..?" )
There's just way too many people in power that will not accept to make developer's and users life happier, they don't want to talk with you and it's too much effort to fight against them
It seems to depend on who decides to step up and make things happen - and regrettably that doesn't always mean the right decisions being made by the right people - but I don't think this is a problem which is unique to linux... and a lot of the right decisions
do eventually get made, it can just involve a lot of work / diplomacy to convince people sometimes
I have a lot of belief that linux can be an excellent platform for audio, but the pieces aren't always connected up properly, and that can be frustrating (especially as I know how well it
can work).