Hi Dan,
Thanks for the explanation.
The ability to persist settings could be solved by using a "generic JSON" driver instead of the "generic CSV" driver. A top-level structure such as { "memories": [ ... ], "settings": [ ... ] } would do the trick, saved using a FileBackedRadio, and base-64-encoding the JSON to deter fiddling with the file.
It seems to me that there's a larger problem, though, with using a generic format for persistence for particular radios. That's the inability to associate the appropriate features with the data on the way in (i.e. on loading from a file). Without some association with the "real" driver, values such as memory_bounds, has_bank, etc., are unknown. (For example, if I download from my IC-910H, which has a lower bound of 1, then store to JSON, then load that file, the resultant table shows a lower bound of 0, because it doesn't know any better.)
To solve that, I think we'd need to adopt a persistence format (JSON or whatever) in the live-mode drivers, complete with VENDOR and MODEL fields for each radio. The storage format could still be generic, just with enough data to properly reconstitute it. That said, I'm not sure that this is such a great idea in the first place.
By the way, while playing around with this, I found a buglet in chirp_common.is_version_newer(). It doesn't account for a trailing 'dev' in the version number, as we have today, so it logs two errors when comparing '0.3.0dev', and then compares (0,) with (0,). I'll file a ticket.
Regarding your comment on Windows and GUI threads, yes, and in fact some GUI (and TUI) frameworks have the same restriction on all platforms, so it's good to follow this practice in any case.
Martin.
KD6YAM