'''Problem:''' Sometimes you don't want to require a particular package; you just need a particular interface, and maybe many packages provide it. [['''package require''']] operates on packages not interfaces, so what's a good way to deal with alternative implementations of an interface? (for example, C-coded and Tcl-coded versions of the same commands, or perhaps competing implementations competing on other grounds?) Main goal is to get complicated logic out of the user application. A single declartive command should be sufficient. ''I need version x of the foo interface'' '''Option 1''' - a wrapper knows about multiple candidates Write a common wrapper package that knows what packages provide a common interface. Have it supply configuration command to control choosing. Then the user just requires the wrapper package. Wrapper can also translate any difference in the interfaces -- DB front end? '''Option 2''' - alternatives know about each other Index scripts / provide scripts of alternatives might be written to recgonize avilability of an alternative and less desirable one could refrain from calling [['''package ifneeded''']]. This is really a type of variant management, as it will be most effective if the two alternatives are variants of a single version of a single package. '''Option 3''' - Accrue knowledge of interface compatibility on-the-fly. Not hard-coded into any one package. '''3a:''': an extension that will accept registration of claims of support for named, versioned interface, with mechanisms for selecting between alternatives. '''3b:''': new subcommands of [['''package''']] instead of a separate extension.