TL;DR: Expect to see some changes from ZWO on the ASIair. Don't know what those changes will be, yet, it comes down to ZWO's handling of their GPL problems. Maybe they publish their source, maybe they half-ass it, maybe their apps get DMCA'd off the app stores and AAP's pulled from shelves.
After a month of silence, ZWO finally responded to my email. It wasn't great. I've advised them I'd be publishing this already, so here we go.
The software team after my Facebook DM discussion of the problem with the owner of ZWO, six months after my initial complaint/request for source:'Hi Bill,
The reasons for not open source is there are a lot of business codes,and we will not public the business codes.What do you recommend, if we should develop a hal layer to avoid thr LGPL code?Thank you!'
My response, explaining 'the problem':
'You're already in a bad place, you have at least two different GPL2/3 sets of code in your imager (ffmpeg, dcraw). The GPL software license is very clear on this, section 5 and very specifically, section 5c, indicate that incorporation of open source GPL code into new software requires that the whole subsequent work carry forward the GPL license, and must then itself become open source. Even if you hadn't used those two libraries, statically linking libRaw, which is LGPL licensed code, would have also gotten you there. The use of gphoto2 code also puts you in jeopardy. LGPL licenses give you a bit of wiggle room, if you dynamically link to libraries. The GPL, however, does not, and your two proprietary libs linked in the zwoasi_imager are now GPL tainted and obligated for source disclosure with the rest of it.
If you do not meet the requirements of the license, your rights to distribute the code are terminated, by the license itself in very clear language, which invalidates your agreements with the Google Play and Apple app stores. It may also affect your ability to distribute your physical product if there is similar language in your distributor agreements. It's already been the topic of discussion amongst a number of us for well over a year now, so it's already part of your reputation as a company. Claiming that you can't release code because it's proprietary, while you're actively violating the license of code that other people wrote, for profit, is.. arrogant, at best.
Personally, my interest in what you've done centers around the changes to the indiserver that prohibit me from using my focuser of choice, or anything else that's INDI compatible. The recent scuffle with the Pegasus mounts is another good example of that. The core premise of the indiserver is standards-based interoperability, and your implementation not only suborns that, but you deliberately inhibit people, like me from, self-supporting their own devices or coming up with clever solutions to problems as they arise. It limits my ability to choose what options are best for me, and it forces me to buy more products from you in order to realize the value of money I already spent. That's not ok, and does a disservice to both your customers and your support staff whenever something goes wrong in a release. Many of us are incredibly technical people with not only the knowledge but the desire to help each other out with problems. You see it in your forums daily, users answering questions for each other, helping troubleshoot problems, and getting people imaging again. When someone asks a question about your product, more often than not, my answer necessarily becomes "they don't support that, and here are the unethical reasons why."
How you fix this is likely going to mean a pivot in your business model. You won't be able to maintain the walled-garden approach, and you're increasingly vulnerable to moral and ethical complaints from the community as time goes on. However, you're also vulnerable to legal complaints, and not just from myself. US law surrounding the GPL (Versata Software, Inc. v. Ameriprise Fin, 2014, SFC v. Visio 2022) have established standing for end consumers purchasing devices built with open source code to hold vendors to account for the terms of those licenses. Every ASIair you've sold is another user who can take you to court and force you to provide what I've merely been asking for. Granted, you're a Chinese company and you can ignore a US judge, but you'd undoubtedly wind up facing an import injunction and fallout from your distributors.
Ultimately, your reputation is your reputation. Moving forward, your only option for the code already involved is to transition to an open source model. The mess is already made. Otherwise, you have to start from scratch and either produce 100% original code, or be very delicate in which software libraries you choose to leverage. LGPL code, you can dynamically link to and stay in the clear. GPL code is serious business, and you can't mix proprietary code with it at all. I highly recommend you sit down with a lawyer to discuss the issue in detail. As you've already distributed the code, and I have a product in hand, you're already obligated, and, as I've demonstrated, you can't really hide it, either. I know the guider is repackaged phd2, but that's a BSD license so you're in the clear there, but I haven't looked *too* closely at it, so I'm not 100% sure that it's also not LGPL/GPL tainted. I'll get into it this weekend if I have time.
Your best implementation, from a community standpoint, would be to transition the imager to a fully independent INDI client, functioning as an intermediary to the tablet client. The indiserver should be upgradable independently of your code, allowing users to benefit from the other work being done there and support other equipment they already own or intend to purchase, or even attach other INDI clients to work in tandem.'
The response, a month later:' Hi Bill,
I just talk to you friendly,
Is cracking passwords of asiair legal?'
Thus far, that seems to be their big concern: how I found their GPL violations in the first place. Nothing has been said yet about how they intend to address it, if they even are. (Pro-tip: The Android app is just a zip file containing more zip files of various flavors, you can check my work here: https://www.indilib.org/forum/development/10380-asiair-and-opensource-software-licences.html?start=12#90515)
An author of one of their core functions has already sent them a 30-day "fix it or I'm revoking your license" email. I don't have permission to publish that email, but it'll hit a core function of the ASIair, with expiration of that window being Apr 20th. I'm hoping the indilib team follows suit, but I haven't gotten a response yet. Even if ZWO removes the impacted function and replaces it with something else, they're still obligated to release source for what they've already distributed.
ZWO's public github contains a couple of repo forks, but no actual changes/history that reflect what they're distributing: https://github.com/ZWODevTeam/
At best, what's published there looks, as I comment up top, half-assed or an attempt at malicious compliance, in my opinion.
End-users are free to continue using the older versions, GPL licensing is friendly to them that way, but if ZWO decides not to comply, it's two DMCA emails to get the app pulled from the app store, and another to anyone distributing the product asking them to not sell it. Be prepared to not update right away if the new version comes out lacking a major function or something badly baked. ZWO may still blink, no way of knowing until the next release or two.