azavea / azavea/ashlar

Full versioning for Records and RecordTypes

Open
#80 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
1
Forks
1
PR merge metrics
No merged PRs in 30d

Description

One very cool part of Ashlar is that the schemas are all versioned under the hood, meaning that a developer using Ashlar can expose a full audit log of how a schema has changed over time and potentially allow an admin user to roll back to previous versions.

I wonder how much leverage we could get from implementing a similar versioning system for Records and RecordTypes. Records and RecordTypes are already append-only in that they use `active` and `archived` flags (respectively) to indicate whether or not they've been deleted, but to my knowledge we don't preserve previous versions when someone edits them.

Allowing full versioning would have some advantages:

- The history of the entire data model and record store could be auditable by an admin user
- Records could be migrated to new schemas while A) preserving old versions and B) preventing dupes from entering the database

Full versioning would also have some disadvantages:

- More complexity in the Ashlar data model
- A lot of work with unclear ROI -- we would need to know how badly admin users would want this feature

(This isn't a pressing issue -- just filing it here for future discussion. Feel free to tag at will!)

Contributor guide

No contributing guide indexed for this repository

Research direction

No files, tests, or entry points are named. Start by locating the implementations for Records and RecordTypes and documenting how their active and archived states are persisted; before coding, clarify the versioning model, migration behavior, deduplication rules, rollback scope, and acceptance criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.