SlideShare a Scribd company logo
1 of 16
Download to read offline
A novel approach to undo
Modification audit logging and using
zc.beforestorage to time travel.
Sean	Upton	/	UPIQ
#ploneconf2016	|	@sdupton
Disclaimers
• Experimental approach
• Unfinished work in progress
• I’m here to pitch an idea about undo, whose
principles have been field tested…
– ... But we need a UI for this.
– .... I’m working on it.
• Today, we’ll look at the pieces and talk about
them.
• Maybe find a way forward for practical undo?
#ploneconf2016	|	@sdupton
Motivations
• Reasonable degree of interest on Github and
Twitter.
• Some of my users cost me hours fixing human
errors with programmatic monkey-wrenching.
• If we can use this programmatically in
repeatable ways, we can make something
user-facing, no?
• Because we cannot use ”Undo” to undo.
#ploneconf2016	|	@sdupton
The basics: audit logging
• Audit log of all changes, stored in ZODB
– Logging now is synchronous, may be async in future,
TBD.
– Log all of:
• Deletion
• Modification
• Move
• Addition
– Log independent of Catalog.
– Handlers call logging system
• Logging components adapt site, use annotations.
#ploneconf2016	|	@sdupton
Audit logging: usage
• Core components tested, but… still needs a
good UI.
• Outside of core use case, this could be used
for regulatory audit requirements (e.g. HIPAA).
• UI plan is enumerating in views:
– A view to enumerate changes, by “facility”
– A view to prune changes
• We may need better possible ZODB conflict
resolution strategy for queuing (LIFO insertion)
of modification facilities logged.
#ploneconf2016	|	@sdupton
Okay, so you log every change?
• Right, and we will have view to enumerate
these changes, in reverse chronological
(insertion) order.
– With filtering
– With batching
• For regulatory logging, you could to this to a
data retention threshold before pruning, or not
prune this at all. The change records are
small.
#ploneconf2016	|	@sdupton
Facility
• For each type of change we have a facility:
– Modifications
– Deletions
– Additions
– Moves / renames
• Each logs records with:
– UID
– Path
– Authenticated user
– Timestamp (python datetime, currently local time)
#ploneconf2016	|	@sdupton
But what do we do with this?
FIX	HUMAN	ERRORS!
#ploneconf2016	|	@sdupton
The plan
• I have used zc.beforestorage multiple times to
fix human errors, each time programmatically.
• If what you have is within your kept history,
going back in time is easy.
• We want to make this user-facing, not a
programmer’s problem.
• I’m creating a package called plone.wabac as
a transitional/experimental proof of concept.
– Now soliciting collaborators! J
#ploneconf2016	|	@sdupton
plone.wabac
• WABAC == “wayback”
• Transitional add-on
• Half-finished
• May get exploded and
federated elsewhere.
• Assumed goal of
eventual PLIP, once
proven.
• Want this to be testable
by users, uninstallable
in meantime.
#ploneconf2016	|	@sdupton
Restoration, not “Undo”
• We want to restore item to previous known-
good state:
– Before accidental deletion
– Before modification that was problematic.
• This might compete with CMFEditions, so may be a non-
problem.
• But my site stores non-content ZODB stuff on content objects,
so I cannot merely use CMFEditions for rollback.
– Before renaming or moving.
• User picks item from audit log, and clicks
“restore”. Or more than one item at a time.
#ploneconf2016	|	@sdupton
zc.beforestorage
• Time-travel through your kept history.
• !! Requires you keep history.
• !! Requires you keep enough history.
– We could use this on kept FileStorage backups too, if
we were clever and did not want to only go through
live history.
• But that is not in scope yet, requires configuration.
• Mostly, I want to undo things easily when the
“Oh ****” phone call comes in.
– Or better, tell the site admin how to fix it.
#ploneconf2016	|	@sdupton
Programmatic use
• Load storage wrapper programmatically.
• setSite() on the time-travelled version.
• Get your content;
• ZEXP export it;
• setSite() on live target;
• Restore from ZEXP.
• Repeat.
– Show example code
#ploneconf2016	|	@sdupton
Security disclaimers
• We might want to be able to stop ability to
undo things (e.g. delete something very bad,
very quickly, and very permanently).
• My vision now is a site-wide audit logging
facility accessible to Site Administrator or
Manager role.
• We can make this placeful if we index audit
trail by path.
– Not yet in scope.
– Need to ponder permissions for restoration.
#ploneconf2016	|	@sdupton
Next steps
• Finish the UI for enumeration, filtering, and
pruning of audit data.
• Come up with reasonable tactic for avoiding
conflict for audit logging key insertion.
• Views and adapters for restoration via
zc.beforestorage.
• Logging the restorations themselves.
• Prove concept universally useful, then PLIP it?
#ploneconf2016	|	@sdupton
Questions?
… and feedback via:
#ploneconf2016	|	@sdupton

More Related Content

What's hot

Just Too Late
Just Too LateJust Too Late
Just Too Latekatzj
 
STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)Mike Subelsky
 
Engineers need to learn UXR
Engineers need to learn UXREngineers need to learn UXR
Engineers need to learn UXRNeha Batra
 
PhoneGap at JSConf
PhoneGap at JSConfPhoneGap at JSConf
PhoneGap at JSConfBrian LeRoux
 
Principles, Backbone and Bottlenose
Principles, Backbone and BottlenosePrinciples, Backbone and Bottlenose
Principles, Backbone and BottlenoseJustin Halsall
 
Making Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux ConferenceMaking Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux ConferenceJohn Mertic
 
2015 nouveaux outilsdevweb
2015 nouveaux outilsdevweb2015 nouveaux outilsdevweb
2015 nouveaux outilsdevwebPhilippe Antoine
 
Continuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesContinuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesRoss Snyder
 
Full stack-web-design
Full stack-web-designFull stack-web-design
Full stack-web-designKevin Conboy
 
More Productivitiy with Spring Roo
More Productivitiy with Spring RooMore Productivitiy with Spring Roo
More Productivitiy with Spring RooEberhard Wolff
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Brian Moon
 
Cross-platform logging and analytics
Cross-platform logging and analyticsCross-platform logging and analytics
Cross-platform logging and analyticsDrew Crawford
 

What's hot (13)

Just Too Late
Just Too LateJust Too Late
Just Too Late
 
STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)
 
Engineers need to learn UXR
Engineers need to learn UXREngineers need to learn UXR
Engineers need to learn UXR
 
PhoneGap at JSConf
PhoneGap at JSConfPhoneGap at JSConf
PhoneGap at JSConf
 
Principles, Backbone and Bottlenose
Principles, Backbone and BottlenosePrinciples, Backbone and Bottlenose
Principles, Backbone and Bottlenose
 
Making Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux ConferenceMaking Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux Conference
 
Deployments in one click!
Deployments in one click!Deployments in one click!
Deployments in one click!
 
2015 nouveaux outilsdevweb
2015 nouveaux outilsdevweb2015 nouveaux outilsdevweb
2015 nouveaux outilsdevweb
 
Continuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesContinuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two Approaches
 
Full stack-web-design
Full stack-web-designFull stack-web-design
Full stack-web-design
 
More Productivitiy with Spring Roo
More Productivitiy with Spring RooMore Productivitiy with Spring Roo
More Productivitiy with Spring Roo
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3
 
Cross-platform logging and analytics
Cross-platform logging and analyticsCross-platform logging and analytics
Cross-platform logging and analytics
 

Viewers also liked

5 things STILL! TOO! HARD! in Plone 5
5 things STILL! TOO! HARD! in Plone 55 things STILL! TOO! HARD! in Plone 5
5 things STILL! TOO! HARD! in Plone 5Dylan Jay
 
Abengoa y la desalación
Abengoa y la desalaciónAbengoa y la desalación
Abengoa y la desalaciónAbengoa
 
сцусуцвмы
сцусуцвмысцусуцвмы
сцусуцвмыSergii Perun
 
Participacion ciuadana
Participacion ciuadanaParticipacion ciuadana
Participacion ciuadanaJuan Camilo
 
Academies everything to everyone for learning evermore
Academies everything to everyone for learning evermoreAcademies everything to everyone for learning evermore
Academies everything to everyone for learning evermoreSuzie McGuiggan
 
Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...
Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...
Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...horling wong
 

Viewers also liked (17)

5 things STILL! TOO! HARD! in Plone 5
5 things STILL! TOO! HARD! in Plone 55 things STILL! TOO! HARD! in Plone 5
5 things STILL! TOO! HARD! in Plone 5
 
St. tammany chapter 6
St. tammany chapter 6St. tammany chapter 6
St. tammany chapter 6
 
Press
PressPress
Press
 
Abc
AbcAbc
Abc
 
Grupo psi tema 5
Grupo psi   tema 5Grupo psi   tema 5
Grupo psi tema 5
 
Abengoa y la desalación
Abengoa y la desalaciónAbengoa y la desalación
Abengoa y la desalación
 
Compatibilitynewsletter
CompatibilitynewsletterCompatibilitynewsletter
Compatibilitynewsletter
 
El teclado
El tecladoEl teclado
El teclado
 
O comércio
O comércioO comércio
O comércio
 
71czO7f-ADL
71czO7f-ADL71czO7f-ADL
71czO7f-ADL
 
Knowledge management
Knowledge managementKnowledge management
Knowledge management
 
сцусуцвмы
сцусуцвмысцусуцвмы
сцусуцвмы
 
Participacion ciuadana
Participacion ciuadanaParticipacion ciuadana
Participacion ciuadana
 
Academies everything to everyone for learning evermore
Academies everything to everyone for learning evermoreAcademies everything to everyone for learning evermore
Academies everything to everyone for learning evermore
 
Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...
Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...
Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...
 
Montowanie zegarów bijących
Montowanie zegarów bijącychMontowanie zegarów bijących
Montowanie zegarów bijących
 
Competencias docentes 2.0
Competencias docentes 2.0Competencias docentes 2.0
Competencias docentes 2.0
 

Similar to A novel approach to Undo

Efficient Django
Efficient DjangoEfficient Django
Efficient DjangoDavid Arcos
 
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...Daniel Jowett
 
SharePoint logging & debugging
SharePoint logging  & debugging SharePoint logging  & debugging
SharePoint logging & debugging Sentri
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive uiPaul van Zyl
 
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to realityDaniel Gallego Vico
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with djangoYann Malet
 
Building trust within the organization, first steps towards DevOps
Building trust within the organization, first steps towards DevOpsBuilding trust within the organization, first steps towards DevOps
Building trust within the organization, first steps towards DevOpsGuido Serra
 
Revamping FYP using Agile Methodology.pptx
Revamping FYP using Agile Methodology.pptxRevamping FYP using Agile Methodology.pptx
Revamping FYP using Agile Methodology.pptxKASHAFALI23
 
Tools and practices to use in a Continuous Delivery pipeline
Tools and practices to use in a Continuous Delivery pipelineTools and practices to use in a Continuous Delivery pipeline
Tools and practices to use in a Continuous Delivery pipelineMatteo Emili
 
Product Management at Contactually
Product Management at ContactuallyProduct Management at Contactually
Product Management at ContactuallyContactually
 
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017DevOpsDays Tel Aviv
 
Django production
Django productionDjango production
Django productionpythonsd
 
There is something about serverless
There is something about serverlessThere is something about serverless
There is something about serverlessgjdevos
 
Bulletproof design systems using storybook
Bulletproof design systems using storybookBulletproof design systems using storybook
Bulletproof design systems using storybookChen Feldman
 
Fuel Good 2018: Upgrades Made Easy: The Canadian Museum of History
Fuel Good 2018: Upgrades Made Easy: The Canadian Museum of HistoryFuel Good 2018: Upgrades Made Easy: The Canadian Museum of History
Fuel Good 2018: Upgrades Made Easy: The Canadian Museum of HistorySparkrock
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile WebC4Media
 
Devops at Startup Weekend BXL
Devops at Startup Weekend BXLDevops at Startup Weekend BXL
Devops at Startup Weekend BXLKris Buytaert
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comAviran Mordo
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsAchievers Tech
 

Similar to A novel approach to Undo (20)

Efficient Django
Efficient DjangoEfficient Django
Efficient Django
 
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
 
Devops For Drupal
Devops  For DrupalDevops  For Drupal
Devops For Drupal
 
SharePoint logging & debugging
SharePoint logging  & debugging SharePoint logging  & debugging
SharePoint logging & debugging
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive ui
 
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with django
 
Building trust within the organization, first steps towards DevOps
Building trust within the organization, first steps towards DevOpsBuilding trust within the organization, first steps towards DevOps
Building trust within the organization, first steps towards DevOps
 
Revamping FYP using Agile Methodology.pptx
Revamping FYP using Agile Methodology.pptxRevamping FYP using Agile Methodology.pptx
Revamping FYP using Agile Methodology.pptx
 
Tools and practices to use in a Continuous Delivery pipeline
Tools and practices to use in a Continuous Delivery pipelineTools and practices to use in a Continuous Delivery pipeline
Tools and practices to use in a Continuous Delivery pipeline
 
Product Management at Contactually
Product Management at ContactuallyProduct Management at Contactually
Product Management at Contactually
 
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
 
Django production
Django productionDjango production
Django production
 
There is something about serverless
There is something about serverlessThere is something about serverless
There is something about serverless
 
Bulletproof design systems using storybook
Bulletproof design systems using storybookBulletproof design systems using storybook
Bulletproof design systems using storybook
 
Fuel Good 2018: Upgrades Made Easy: The Canadian Museum of History
Fuel Good 2018: Upgrades Made Easy: The Canadian Museum of HistoryFuel Good 2018: Upgrades Made Easy: The Canadian Museum of History
Fuel Good 2018: Upgrades Made Easy: The Canadian Museum of History
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile Web
 
Devops at Startup Weekend BXL
Devops at Startup Weekend BXLDevops at Startup Weekend BXL
Devops at Startup Weekend BXL
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.com
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
 

Recently uploaded

Auto Affiliate AI Earns First Commission in 3 Hours..pdf
Auto Affiliate  AI Earns First Commission in 3 Hours..pdfAuto Affiliate  AI Earns First Commission in 3 Hours..pdf
Auto Affiliate AI Earns First Commission in 3 Hours..pdfSelfMade bd
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit MilanNeo4j
 
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckMarc Lester
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationElement34
 
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypseTomasz Kowalczewski
 
Weeding your micro service landscape.pdf
Weeding your micro service landscape.pdfWeeding your micro service landscape.pdf
Weeding your micro service landscape.pdftimtebeek1
 
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...Neo4j
 
What is a Recruitment Management Software?
What is a Recruitment Management Software?What is a Recruitment Management Software?
What is a Recruitment Management Software?NYGGS Automation Suite
 
Test Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfTest Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfkalichargn70th171
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Eraconfluent
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Henry Schreiner
 
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Flutter Agency
 
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Lisi Hocke
 
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio, Inc.
 
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfThe Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfkalichargn70th171
 
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4jGraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4jNeo4j
 
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with GraphGraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with GraphNeo4j
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024MulesoftMunichMeetup
 

Recently uploaded (20)

Auto Affiliate AI Earns First Commission in 3 Hours..pdf
Auto Affiliate  AI Earns First Commission in 3 Hours..pdfAuto Affiliate  AI Earns First Commission in 3 Hours..pdf
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
 
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined Deck
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test Automation
 
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
 
Weeding your micro service landscape.pdf
Weeding your micro service landscape.pdfWeeding your micro service landscape.pdf
Weeding your micro service landscape.pdf
 
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
 
What is a Recruitment Management Software?
What is a Recruitment Management Software?What is a Recruitment Management Software?
What is a Recruitment Management Software?
 
Test Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfTest Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdf
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Era
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
 
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
 
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
 
Abortion Clinic In Polokwane ](+27832195400*)[ 🏥 Safe Abortion Pills in Polok...
Abortion Clinic In Polokwane ](+27832195400*)[ 🏥 Safe Abortion Pills in Polok...Abortion Clinic In Polokwane ](+27832195400*)[ 🏥 Safe Abortion Pills in Polok...
Abortion Clinic In Polokwane ](+27832195400*)[ 🏥 Safe Abortion Pills in Polok...
 
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfThe Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
 
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
 
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4jGraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
 
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with GraphGraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
 

A novel approach to Undo

  • 1. A novel approach to undo Modification audit logging and using zc.beforestorage to time travel. Sean Upton / UPIQ #ploneconf2016 | @sdupton
  • 2. Disclaimers • Experimental approach • Unfinished work in progress • I’m here to pitch an idea about undo, whose principles have been field tested… – ... But we need a UI for this. – .... I’m working on it. • Today, we’ll look at the pieces and talk about them. • Maybe find a way forward for practical undo? #ploneconf2016 | @sdupton
  • 3. Motivations • Reasonable degree of interest on Github and Twitter. • Some of my users cost me hours fixing human errors with programmatic monkey-wrenching. • If we can use this programmatically in repeatable ways, we can make something user-facing, no? • Because we cannot use ”Undo” to undo. #ploneconf2016 | @sdupton
  • 4. The basics: audit logging • Audit log of all changes, stored in ZODB – Logging now is synchronous, may be async in future, TBD. – Log all of: • Deletion • Modification • Move • Addition – Log independent of Catalog. – Handlers call logging system • Logging components adapt site, use annotations. #ploneconf2016 | @sdupton
  • 5. Audit logging: usage • Core components tested, but… still needs a good UI. • Outside of core use case, this could be used for regulatory audit requirements (e.g. HIPAA). • UI plan is enumerating in views: – A view to enumerate changes, by “facility” – A view to prune changes • We may need better possible ZODB conflict resolution strategy for queuing (LIFO insertion) of modification facilities logged. #ploneconf2016 | @sdupton
  • 6. Okay, so you log every change? • Right, and we will have view to enumerate these changes, in reverse chronological (insertion) order. – With filtering – With batching • For regulatory logging, you could to this to a data retention threshold before pruning, or not prune this at all. The change records are small. #ploneconf2016 | @sdupton
  • 7. Facility • For each type of change we have a facility: – Modifications – Deletions – Additions – Moves / renames • Each logs records with: – UID – Path – Authenticated user – Timestamp (python datetime, currently local time) #ploneconf2016 | @sdupton
  • 8. But what do we do with this? FIX HUMAN ERRORS! #ploneconf2016 | @sdupton
  • 9. The plan • I have used zc.beforestorage multiple times to fix human errors, each time programmatically. • If what you have is within your kept history, going back in time is easy. • We want to make this user-facing, not a programmer’s problem. • I’m creating a package called plone.wabac as a transitional/experimental proof of concept. – Now soliciting collaborators! J #ploneconf2016 | @sdupton
  • 10. plone.wabac • WABAC == “wayback” • Transitional add-on • Half-finished • May get exploded and federated elsewhere. • Assumed goal of eventual PLIP, once proven. • Want this to be testable by users, uninstallable in meantime. #ploneconf2016 | @sdupton
  • 11. Restoration, not “Undo” • We want to restore item to previous known- good state: – Before accidental deletion – Before modification that was problematic. • This might compete with CMFEditions, so may be a non- problem. • But my site stores non-content ZODB stuff on content objects, so I cannot merely use CMFEditions for rollback. – Before renaming or moving. • User picks item from audit log, and clicks “restore”. Or more than one item at a time. #ploneconf2016 | @sdupton
  • 12. zc.beforestorage • Time-travel through your kept history. • !! Requires you keep history. • !! Requires you keep enough history. – We could use this on kept FileStorage backups too, if we were clever and did not want to only go through live history. • But that is not in scope yet, requires configuration. • Mostly, I want to undo things easily when the “Oh ****” phone call comes in. – Or better, tell the site admin how to fix it. #ploneconf2016 | @sdupton
  • 13. Programmatic use • Load storage wrapper programmatically. • setSite() on the time-travelled version. • Get your content; • ZEXP export it; • setSite() on live target; • Restore from ZEXP. • Repeat. – Show example code #ploneconf2016 | @sdupton
  • 14. Security disclaimers • We might want to be able to stop ability to undo things (e.g. delete something very bad, very quickly, and very permanently). • My vision now is a site-wide audit logging facility accessible to Site Administrator or Manager role. • We can make this placeful if we index audit trail by path. – Not yet in scope. – Need to ponder permissions for restoration. #ploneconf2016 | @sdupton
  • 15. Next steps • Finish the UI for enumeration, filtering, and pruning of audit data. • Come up with reasonable tactic for avoiding conflict for audit logging key insertion. • Views and adapters for restoration via zc.beforestorage. • Logging the restorations themselves. • Prove concept universally useful, then PLIP it? #ploneconf2016 | @sdupton
  • 16. Questions? … and feedback via: #ploneconf2016 | @sdupton