On 08/04/2021 10:04, Marvin Häuser wrote:
Thank you a lot. One thing I noticed is that part of the quote I did not see on the list before, so I marked it below.

On 08.04.21 00:10, Andrew Fish wrote:
The general UEFI (and UEFI PI) is we mostly add new things, and don’t depreciated things to maintain compatibility. So for example you can add a new Protocol to a handle so you have V1 and V2 of a protocol on the same handle. An example of this is SimpleTextIn and SimpleTextInEx. SimpleTextIn was modeled on the LCD of a serial terminal (our server roots) so it did not expose modifier keys, or have an easy way to implement snag keys so that is why SimpleTextInEx got added for the new functional.

^ Here; +1

The addition of EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL was really not a good example of how to handle this issue gracefully.

Here is the kind of workaround that external code has to implement: it's a perfect example of how this "add a V2 protocol" approach ends up imposing a permanent maintenance burden on external code:

  https://github.com/ipxe/ipxe/commit/a08244ecc

Note that there was absolutely no reason for the specification to require a V2 protocol in order to support Ctrl-<key>, and the EDK2 codebase will indeed do the sensible thing and return the ASCII values for Ctrl-<key> via the original EFI_SIMPLE_TEXT_INPUT_PROTOCOL. It would be amazing if, as you suggested, everyone uses the EDK2 codebase and so all public implementations of EFI_SIMPLE_TEXT_INPUT_PROTOCOL would do this sensible thing.

Unfortunately, this is not the case. Very large numbers of vendors use some other non-EDK2 implementation that does not do the sensible thing. I have no idea why.

It's also worth noting that the addition of EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL opened up a gaping potential security hole related to pointer lifetimes, as documented in the above-linked commit message.


TL;DR: please assume that creating a V2 protocol has a very significant cost, and needs to come with benefits that outweigh that very significant cost. If you can achieve what you need without breaking backwards compatibility, then that represents a massive increase in value.

Thanks,

Michael


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#73831): https://edk2.groups.io/g/devel/message/73831
Mute This Topic: https://groups.io/mt/81853302/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to