• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
System settings
 

System settings

on

  • 650 views

The slides from my "core conversations" talk at DrupalCon Chicago.

The slides from my "core conversations" talk at DrupalCon Chicago.

Statistics

Views

Total Views
650
Views on SlideShare
650
Embed Views
0

Actions

Likes
1
Downloads
7
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

System settings System settings Presentation Transcript

  • CONFIG MANAGEMENT IN D8 Howard Tyson (tizzo)
  • CONFIG MANAGEMENT IN D8
  • CONFIG MANAGEMENT IN D8This talk is based on my own experiments
  • CONFIG MANAGEMENT IN D8This talk is based on my own experiments ...and kind of pretending they’re done :-)
  • CONFIG MANAGEMENT IN D8This talk is based on my own experiments ...and kind of pretending they’re done :-)https://github.com/tizzo/system_settings
  • Configuration Management
  • Configuration ManagementDeploying changes to the same site from one place to another
  • Configuration ManagementDeploying changes to the same site from one place to another Dev => Staging => Live
  • Configuration ManagementDeploying changes to the same site from one place to another Dev => Staging => LiveSharing configuration between sites
  • Configuration ManagementDeploying changes to the same site from one place to another Dev => Staging => LiveSharing configuration between sites The “Features” model
  • Current Pain
  • Current PainNo way to store data centrally without loading on every page
  • Current PainNo way to store data centrally without loading on every pageNo central API for exporting (though ctools can provide most ofthe plumbing)
  • Current PainNo way to store data centrally without loading on every pageNo central API for exporting (though ctools can provide most ofthe plumbing)No way to know about configuration (or content) dependencies
  • Settings API
  • Settings APIHeavily inspired by ctools exportables
  • Settings APIHeavily inspired by ctools exportablesPluggable handlers for discrete components
  • Settings APIHeavily inspired by ctools exportablesPluggable handlers for discrete componentsUnique names needed throughout
  • Overrides!
  • Overrides!Settings specified in module code
  • Overrides!Settings specified in module codeOverridden by the database
  • Overrides!Settings specified in module codeOverridden by the databaseAlter hooks
  • Overrides!Settings specified in module codeOverridden by the databaseAlter hooksOverridden by settings.php
  • Relations
  • RelationsAllow settings to be associated with each other, and other thingsthroughout the system
  • RelationsAllow settings to be associated with each other, and other thingsthroughout the systemCurrently there are 3 relations
  • RelationsAllow settings to be associated with each other, and other thingsthroughout the systemCurrently there are 3 relations Entity
  • RelationsAllow settings to be associated with each other, and other thingsthroughout the systemCurrently there are 3 relations Entity Groups
  • RelationsAllow settings to be associated with each other, and other thingsthroughout the systemCurrently there are 3 relations Entity Groups Modules (and themes)
  • Entity
  • EntityBad name (not an entity API entity)
  • EntityBad name (not an entity API entity)Identifies a “thing” with a “type” and an “name”
  • EntityBad name (not an entity API entity)Identifies a “thing” with a “type” and an “name”Tracks
  • EntityBad name (not an entity API entity)Identifies a “thing” with a “type” and an “name”Tracks requirement relationships between other settings (and maybe even content?)
  • Groups
  • GroupsEssentially just “tags”
  • GroupsEssentially just “tags”Allows you to get all of the settings from a given form, etc.
  • GroupsEssentially just “tags”Allows you to get all of the settings from a given form, etc.Allow hierarchy
  • GroupsEssentially just “tags”Allows you to get all of the settings from a given form, etc.Allow hierarchy Commerce => Payment Gateways => Authorize.net
  • Modules (And Themes)
  • Modules (And Themes)Track dependencies
  • Modules (And Themes)Track dependencies requires
  • Modules (And Themes)Track dependencies requires required by
  • Modules (And Themes)Track dependencies requires required byRegister update callbacks
  • Modules (And Themes)Track dependencies requires required byRegister update callbacks Allows module to say “when this changes, please let me know”
  • Settings Log
  • Settings Log
  • Settings LogRecords all settings changes: old setting & new setting
  • Settings LogRecords all settings changes: old setting & new settingSerially increments
  • Settings LogRecords all settings changes: old setting & new settingSerially incrementsLog position stored in settings api (separate from the log)
  • Settings LogRecords all settings changes: old setting & new settingSerially incrementsLog position stored in settings api (separate from the log) This lets us sync the log and then run update.php to apply them until we’re back in line
  • New Interaction Models
  • New Interaction ModelsReplay settings changes (every change can be replayed one afteranother)
  • New Interaction ModelsReplay settings changes (every change can be replayed one afteranother) One way sync from dev to staging, move the log and run update
  • New Interaction ModelsReplay settings changes (every change can be replayed one afteranother) One way sync from dev to staging, move the log and run update Settings are replayed one by one, callbacks fired if necessary
  • New Interaction ModelsReplay settings changes (every change can be replayed one afteranother) One way sync from dev to staging, move the log and run update Settings are replayed one by one, callbacks fired if necessaryWork offline and then “push” every settings change that youhaven’t yet modified to the central system (either over services orputting config in code)
  • The Final Frontier
  • The Final FrontierFeatures-like system for exports in core
  • The Final FrontierFeatures-like system for exports in core“Locked” sites where settings can’t be changed all “clickyclicky”
  • The Final FrontierFeatures-like system for exports in core“Locked” sites where settings can’t be changed all “clickyclicky”Perhaps “locked” settings can’t be changed all “clicky clicky”?
  • The Final FrontierFeatures-like system for exports in core“Locked” sites where settings can’t be changed all “clickyclicky”Perhaps “locked” settings can’t be changed all “clicky clicky”?Settings replication over web services
  • The Final FrontierFeatures-like system for exports in core“Locked” sites where settings can’t be changed all “clickyclicky”Perhaps “locked” settings can’t be changed all “clicky clicky”?Settings replication over web services “Push” settings from one site to another
  • The Final FrontierFeatures-like system for exports in core“Locked” sites where settings can’t be changed all “clickyclicky”Perhaps “locked” settings can’t be changed all “clicky clicky”?Settings replication over web services “Push” settings from one site to anotherRelations “Masks” to export “slices” of configuration
  • Known (expected) Issues
  • Known (expected) IssuesRequirements on a specific value instead of on a value existing
  • Known (expected) IssuesRequirements on a specific value instead of on a value existingPreventing deployment if stuff is missing
  • Known (expected) IssuesRequirements on a specific value instead of on a value existingPreventing deployment if stuff is missingConflict resolution (if we try to “magically” move things around)
  • Known (expected) IssuesRequirements on a specific value instead of on a value existingPreventing deployment if stuff is missingConflict resolution (if we try to “magically” move things around) This doesn’t. Settings are atomic and if one thing sets a setting and another changes it, it has been changed.
  • Known (expected) IssuesRequirements on a specific value instead of on a value existingPreventing deployment if stuff is missingConflict resolution (if we try to “magically” move things around) This doesn’t. Settings are atomic and if one thing sets a setting and another changes it, it has been changed.System currently puts all settings in a single db table (harder toread & maintain... performance concerns...)
  • Where this stands
  • Where this standsCurrently a little broken...
  • Where this standsCurrently a little broken... ...and a little incomplete but the framework is coming together