Thank you so much for breaking this situation down with such clarity. I've had the Gagguino mod on my personal project list for a while, and when I saw that they went closed source I was flabbergasted. Your writeup is the first I've seen that puts the situation in context. And honestly... it's tremendously disappointing. I may end up selling my old Gaggia classic rather than keeping it around just for this.
I mean, aside from the bizarre licensing decisions and the fact the main guy behind Gagguino is extremely abrasive if you ever interact with him, the mod itself works well, at least the previous version (which I have installed). If you get the PCB v3 (you can get it manufactured yourself, or get it from the various suppliers) then it's an amazing upgrade to the machine.
For the previous version (what runs on PCB v3), the code is there. The new version adds a wifi, a web server, a higher quality HMI, and a bunch of additional profiling features. You can get the same profiling features in the original firmware if you just write your own code, although that's a bit janky.
The old code is written in some pretty ugly arduino C++ and you will need to use platformio to build it (which has telemetry enabled by default, which you should disable[0]) and the architecture as a whole is very "EE grade" (anyone who has seen any quantity of embedded code written by EEs will know what I mean). But it's workable as a basis for your own experimentation.
I've been meaning on just wholesale replacing the firmware, the existing firmware is very simple since the concept behind the machine is nothing new as far as control systems are concerned (Kalman filters, PID, and a curve to map between the current pressure and what flow rate to expect from the pump per pulse so you can do flow control). Most of the hard part is tuning the (somewhat custom but not exactly revolutionary) PID which was done before the project was relicensed, as well as calculating the pressure/flow curves for an the vibratory pump (again, mostly done before the relicense, but not hard to replicate if you take a blind basket and modify it to be a controllable flow restrictor).
The main thing stopping me is the choice of the original mod to use a Nextion HMI which uses some awful proprietary GUI designer and a proprietary file format. I don't really like the idea of having to use a proprietary GUI designer in a project, and the Nextion is very limited (which was certainly a motivating factor in the Gagguino authors working on the new display).
Same here with v3 and now being flabbergasted that my "open" project is suddenly dead-ended. (Re)doing an alternative software for PCB v3 is definitely possible, it just runs into economics, at average hourly rate we would put into it it just cheaper to buy decent espresso machine and move on.
> it just runs into economics, at average hourly rate we would put into it it just cheaper to buy decent espresso machine and move on.
Ha! I never thought about it this way, you're probably right on the time cost. Although, while the Decent espresso app which runs on the android tablet front end is open source, the firmware running the machine itself is not (unless I'm wrong). But given you can talk to it over bluetooth I think it fits my concept of "good enough" as the protocol is implemented in the open source app and the firmware as it stands gives you all the control knobs required to produce any result.
That being said, the reason I even considered a rewrite is because I particularly enjoy these kinds of ridiculous firmware replacements. For example, I've investigated it for the possibility of using rust to do it, it would be quite a bit of work as I would have to probably contribute to the state of the art but I've wanted an excuse for an embedded rust project and the STM32F411 (what you get in V3 by default) seems like not a terrible chip to base it on.
Gagguino has switched to STM32U585 and it seems like it's also supported relatively well in the embedded rust ecosystem.