Basic Concepts
use-package provides the use-package macro, that simplifies the customization and use of packages in Emacs. It was created for a few basic reasons, each of which drove the design. Understanding these reasons may help make some of those decisions clearer:
- Allow gathering all the configuration details of a package into one place, making it easier to copy, disable, or move it elsewhere in the init file.
- Reduce duplication and repetitive boilerplate, capturing several common practices as mere keywords both easy and intuitive to use.
- Make startup time of Emacs as short as possible, without sacrificing the quantity of add-on packages used.
- Ensure that errors encountered during startup disable only the package(s) raising the error(s), and as little else as possible, leaving Emacs as close to fully functional as possible.
- Allow byte-compiling your init file, so that any warnings or errors you see at startup are meaningful. In this way, even if byte-compilation is not used for speed (see item 3 above), it can still be used as a sanity check.
It is worth noting that use-package is not intended to replace the standard customization command M-x customize (see Easy Customization in GNU Emacs Manual). On the contrary, it is designed to work together with it, for things that Customize cannot do.