I think informal namespacing (make all the keywords of with-logging look like :log-*) would be good enough in practical cases. Scheme went a loooooong way without more than informal namespacing, and I do my best to see to it that no two R7RS libraries export the same name.
> I think there's some merit to the hygienic keywords approach, but it's
> quite experimental whereas non-hygienic keywords have been common for
> decades.
Now I remember what the main point was. It allows you to write a wrapper
procedure that adds its own keyword arguments around another procedure
taking keyword arguments, without worrying that the outer procedure will
overwrite arguments of the inner procedure.
E.g. you can make a "with-logging" wrapper that takes keyword arguments
to control how the logging is done. It makes a keyword procedure that is
like the inner procedure, but with additional keywords for logging.
This feels like it would have important interactions with
allow-other-keys, but I can't think of any concrete examples off the top
of my head.