Surface what came from the user, plugins, and snapcraft’s core


Currently most of the project loading is done in a monolithic way by loading snapcraft.yaml, validating and applying defaults. This works fairly well, but has many downsides:

  • Given the move to Build VMs taking the predominant role for snapcraft, we don’t need to go through this entire process at all times, the raw unvalidated snapcraft.yaml is enough.
  • Defaults are applied, losing track of what was defined by the user and what was applied by snapcraft or its plugins as defaults, providing no user visible hint as why those are happening or how to override in a systematic manner.


Most of the work is refactoring, tasks are tracked under the 18.10-project-loading tag on launchpad.

1 Like