|  |  |  |  | 
      A backend is just a compiled .so object that is
      loaded at run-time and provides an interface to the underlying package
      commands.
      A backend converts an asynchronous request into either a new thread
      in the same process, or executes external "glue" files that
      can be written in any language.
    
Backends do not have to support all of the commands supported by PackageKit. Each backend advertises the commands and options it supports, and the frontend will only show UI elements for those commands.