DMA wrote: 13 Jul 2023, 18:16
Firmware version number is useless in practice (why would anybody even care? Firmware version exists in two states - "good enough" and "upgrade to latest version immediately" - both of which don't require knowing exact version),
Can't quite tell if you are pooh-pooh-ing the idea of versioning firmware and/or ever exposing the version to the user/owner, or just the idea of having the keyboard directly display or "output" it to the user.
If the latter, completely understandable.
If the former, however, then
hard disagree here. The number of times I have been screwed over by bad software & regressions that get introduced after an "upgrade" is not insubstantial. To the point where these days I try to make sure as often as is reasonably possible that I have a copy of an old, known working version -- plus a means to be able to utilize that copy / back-level down to it again -- in the event that the "new and improved" version proves to be anything but.
This naturally requires that I, the user, actually know what the version numbers are. Both so that I can know what is proven to work for me before potentially abandoning it, in order that I might be able to return back to it again later, as well as so that I can know what crap to avoid moving forward. Thus I actually very much DO want to be informed about the version number of the "good enough" one I'm currently running even though it is "good enough". It is not the case that "ignorance is bliss" as long as things are working well. Awareness and vigilance are required in order to KEEP things in that happy state.
It is also very often not acceptable to simply report a bug and then wait for the next "latest" version to come out that fixes it, especially if it is a showstopper and it could take months for an actual fix to be delivered. I really really despise this modern mentality to just immediately accept the latest software updates without giving it any thought, especially with (often) absolutely zero way to undo or roll back (
especially especially when older versions get pulled down & made unavailable as soon as the newest is posted!). Sure, the "rolling release" / constant pushing to prod strategy might be great for developers as they get instant feedback and don't have to actively support hoards of older releases, but I contend that it is
miserable for actual end-users.
DMA wrote: 13 Jul 2023, 18:16the fact that you insist on it's being needed is a testament to abysmal quality of firmwares you have to use
CORRECT.
You might say that you in particular work hard to make sure that you release quality software/firmware. Or you might even make the grandiose claim that anybody using the software you write will never ever feel a need to downgrade their copy at any point. You might even be objectively correct about your claim...it's absolutely conceivable that you might genuinely be the best, most careful and conscientious software engineer on planet Earth.
Still, you'll pardon me if I don't take your word for it. And it's not personal. It's just experience talking.
Muirium wrote: 12 Jul 2023, 20:43Apple hates drivers just as much as you do, albeit for different reasons. They killed absolutely every single last remaining one of them on Mac [...]
I'm sure you understand this, but just in case & for any passers-by out there, this urban myth being perpetuated (not necessarily by you, but I see it out there from time to time) that Apple's platforms no longer use "drivers", drives (heh) me nuts. Of
course they still use drivers. You need to have
some way of interfacing hardware with software and providing a layer of abstraction between them. What do you think a "kext" (kernel extension) is? They just only bundle & ship first-party ones that they have vetted/certified/approved themselves; it's only third-party ones that they no longer allow (at least without jumping through tons of hoops). They can get away with this because 1) they largely control the whole enchilada these days of their own machines, so the need to install a third-party driver for e.g. a different video adapter or WiFi chipset is virtually gone, and 2) to your point, there are many standard ways of interfacing certain classes of hardware devices over common busses like USB, most of which are already natively supported by
the drivers bundled with the host OS/platform.
(I don't know that they are looking to do this, but even if Apple completely eliminated the "kernel extension" as a thing, and started statically linking all of their first-party driver support code to a monolithic kernel binary, old-school style, that still wouldn't mean that they had eliminated "drivers". They just simply would no longer exist as separate files on the filesystem. Now, what
would be potentially more interesting is if they managed to come up with some performant model that would allow the implementation of any arbitrary hardware/software interface [...driver...] such that all of them could run in userspace without any downsides. I'm sure that their main concern here isn't with forcing everybody to use already established USB device classes or whatever, but is rather about protecting the kernel's memory space, both from a stability and security perspective. Though I suppose even a user-space driver-like thing could be coded poorly/inefficiently and do nasty things like consume gobs of CPU, which they'd also not be keen on.)
However, the points in their favor that allow them to get away with this don't completely eliminate some of the edge-cases that exist. What if somebody builds a hardware device that does something that some standards-body hasn't anticipated in advance? That is, it doesn't fit into any of the existing and common hardware device "classes"? Most Macs these days might not have an internal PCIe expansion slot, but Thunderbolt is a thing, and it's essentially external PCIe. What is a hardware vendor that comes up with some killer new idea which requires a bus with PCIe-esque throughput for it to be successfully implemented supposed to do? Wait for some international standards bureaucracy to recognize it, and then after that happens, wait until all of the popular (and even not-so-popular) platforms out there support the newly-ratified standard? I also think it's not uncommon for at least certain broad classes of devices -- say, for example, network interfaces like USB ethernet dongles -- to not merely implement the least-common-denominator USB CDC protocol(s) & instead do their own thing (likely for performance reasons), which of course requires that the host either allow you to side-load a driver, or have native, built-in support for the chip(set) being used in said device.