code, configuration • Logical grouping of metadata Improved Team Processes • Teams work independently • Version control source of truth Improved release process • Packages have their own release cadence • Straightforward to automate
Metadata • All objects, automation, code • No app boundaries • Many, many teams • Hard to untangle “These systems show unmistakable signs of unregulated growth and repeated, expedient repair” Brian Foote and Joseph Yoder, 1997 Big Ball of Mud
Controlled Team Development CLI Integration Build on top of happy soup Unlocked Code visible/editable Up/Downgradeable Migrate Metadata Org Dependent Logically incomplete Depends on Happy Soup Checked at install time
at create time Package installs with/without Happy Soup Happy Soup references Package metadata Package is independent of orgs May be installed in many orgs Org “Happy Soup” Package
checked Happy Soup references Package metadata Package references Happy Soup metadata Package only installs in Happy Soup Fails if dependencies not met 1) (Reading__c.Author__c) referenceTo value of 'Author__c' does not resolve to a valid sObject type
Install Package Version (Sandbox) Test Package Version (Sandbox) Promote Package Version All Good? Install Package Version (Production) Test Package Version (Production) All Good? Done Y N Y N
• Develop -> Package -> Test -> Debug cycle Develop package and happy soup in isolation Avoid editing installed package metadata Watch your package source .forceignore is your friend