picojohn wrote:The drivers for our products are complex as they provide a number of special functions. Therefore, short of releasing our sensitive code, it would take us longer to provide specifications for the Linux developers than to write the drivers ourselves, and herein is the issue. Moreover, providing support to the Linux Driver Product and, by implication, to customers who use those drivers, would not facilitate the level of support that we like to provide for our customers.
It's not that hard really

..
you need 2 things ..
1. kernel module
2. client library
kernel module has to be "compiled on site" so it should be "open source" but kernel module does not need to have any IP data in it .. it is just a mapper from USB to /dev/picoscope or /proc/picoscope/xyzw so the client library can communicate with the device. Your current windows driver does pretty much the same afaic.
client library is a different story and it does contain IP code that I'm sure you would not like to share. I actually do not see why you do not want to share it as it is actually quite easy to debug both your app and driver for win32 and reverse engineer the solution .. just, why do it .. afaik it will only work with your hardware, and your software is free anyhow...
back on topic .. you do not need to give away the source code for the client library that actually controls the device, just build 32bit and 64bit library and ship the binary ..
to cover "all" linux distro's and to make it professionally acceptable you need to only make 4 binary packages
- x32 dynamically linked with (current glibc at the time of linking)
- x64 dynamically linked with (current glibc at the time of linking)
- x32 statically linked with "whatever glibc you like"
- x64 statically linked with "whatever glibc you like"
so, the same source, you just need to compile 4 binaries, just few different flag's, provide libraries in .tar.bz2 and you are "the best supported pc scope for linux"
This is pretty much how all proprietary code is done, you do not need to go and make "installer", "rpm", "deb", "pkg" .. just make tar.gz or tar.bz2 .. 4 of them, x32 and x64 statically and dynamically linked .. that will be enough .. not much effort and probably huge gain... not to mention that you will get bunch of opensource scope applications with features "to die for" after that ..