Well, doing an open-sourced library (say, under a MIT/BSD/ISC license) means you could use that to create a GUI in potentially any toolkit you name.
I am not a lawyer, but my understanding is BSD/MIT/ISC/etc licensed code, when imported into a GPLed project, effectively become “GPL”. You might do what Google etc, do, and ask for a “contributor license agreement” which allows for the contributions to that library to be licensed to you under, say the BSD license; that would then still let you use those contributions in a proprietary application.
@agittens’ idea of using Python isn’t a bad one. While it’s been a while since I touched tkinter
in Python, my understanding is it’s pretty capable and would make the application truly cross-platform if done right. There are at least two ways to link a library written in C to a Python application without involving a sub-process.
A lot will depend on how much Microchip want to reveal about their device, and how much they are comfortable to make “open”. Are there actual specifications on how the USB interface works, with disclosure agreements that permit a viable open-source library to be written?
Their offer of translating a library might be worth looking into if you’re after a purely proprietary solution. I’ll admit up front I’m no fan of proprietary code and actively avoid it away from my work. (…and at work, I’ve been even known to turn down work involving it. We use OpenThread because I refused to touch Z-Stack as I didn’t want the “taint” from its NDAs.)
My biggest gripe with such systems is they tie you in to specific ABIs (application binary interfaces), which can really be a pain when you need to move to X version of some core library, but find that it breaks your proprietary piece of code you need. Having the code means you can just re-compile against the libraries you are using to side-step that problem. But I digress…
Out of interest, what was the off-shore team specifically struggling with? Was it the GUI-building aspect, writing code for Linux in general, understanding requirements, or was it more business-related?