-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarify Embargo/Lease Terminology #511
Comments
there's also hydra-head/hydra-access-controls/app/models/concerns/hydra/access_controls/embargoable.rb Lines 51 to 57 in 4ffa873
|
At one point, I was considering a "visibility schedule" abstraction. Fundamentally, we have an embargo. From beginning of time until the The logic is leaky AND if an institution gets it wrong there can be punitive consequences. As such, I believe we should spend some energy to design a more clearly articulated implementation. |
i don't think this is true. Embargo/Lease function as data objects that are used to manage editing ACLs (recall that "visibility" is just a less granular version of ACLs; see also: https://github.com/samvera/hyrax/wiki/Hyrax-Valkyrie-Usage-Guide#permissions). there aren't/shouldn't be any magic permissions, and AFAICT it is totally possible for an embargo to be "active" but for the intended permissions to not be applied. i might suggest a cleaned up version of what exists:
all names can probably be refined. under this model, we have the following states
note that there's very little difference in implementation between the embargo and lease classes as-is. both are more-or-less a set of permissions "during", a set of permissions "after", and a release date, and there's nothing about the data structure that stops an embargo's "during" permissions from being looser than its "after" permissions; i.e. an embargo can be effectively a lease, and vice versa. simplifying to one implementation for these two concepts seems good. |
these views relied on internal knowledge about Embargo and Lease implementations that likely won't hold under Valkyrie models. extracting this knoweldege into a helper method is a first step toward making it implementation agnostic. this is connected to samvera/hydra-head#511.
these views relied on internal knowledge about Embargo and Lease implementations that likely won't hold under Valkyrie models. extracting this knoweldege into a helper method is a first step toward making it implementation agnostic. this is connected to samvera/hydra-head#511.
these views relied on internal knowledge about Embargo and Lease implementations that likely won't hold under Valkyrie models. extracting this knoweldege into a helper method is a first step toward making it implementation agnostic. this is connected to samvera/hydra-head#511.
these views relied on internal knowledge about Embargo and Lease implementations that likely won't hold under Valkyrie models. extracting this knoweldege into a helper method is a first step toward making it implementation agnostic. this is connected to samvera/hydra-head#511.
for Valkyrie models, we provide `Hyrax::EmbargoManager` to make the embargo lifecycle easy to work with. to date, this has only supported applying embargoes. this adds the ability to release an embargo after its period has expired. a concept of 'enforcement' is added, represented by `#enforced?`. this addresses the issue of embargoes which are not current (their period is past) but have not yet been released. the terminology used by the `EmbargoManager` is documented. see also: samvera/hydra-head#511.
for Valkyrie models, we provide `Hyrax::EmbargoManager` to make the embargo lifecycle easy to work with. to date, this has only supported applying embargoes. this adds the ability to release an embargo after its period has expired. a concept of 'enforcement' is added, represented by `#enforced?`. this addresses the issue of embargoes which are not current (their period is past) but have not yet been released. the terminology used by the `EmbargoManager` is documented. see also: samvera/hydra-head#511.
these views relied on internal knowledge about Embargo and Lease implementations that likely won't hold under Valkyrie models. extracting this knoweldege into a helper method is a first step toward making it implementation agnostic. this is connected to samvera/hydra-head#511.
these views relied on internal knowledge about Embargo and Lease implementations that likely won't hold under Valkyrie models. extracting this knoweldege into a helper method is a first step toward making it implementation agnostic. this is connected to samvera/hydra-head#511.
for Valkyrie models, we provide `Hyrax::EmbargoManager` to make the embargo lifecycle easy to work with. to date, this has only supported applying embargoes. this adds the ability to release an embargo after its period has expired. a concept of 'enforcement' is added, represented by `#enforced?`. this addresses the issue of embargoes which are not current (their period is past) but have not yet been released. the terminology used by the `EmbargoManager` is documented. see also: samvera/hydra-head#511.
these views relied on internal knowledge about Embargo and Lease implementations that likely won't hold under Valkyrie models. extracting this knoweldege into a helper method is a first step toward making it implementation agnostic. this is connected to samvera/hydra-head#511.
for Valkyrie models, we provide `Hyrax::EmbargoManager` to make the embargo lifecycle easy to work with. to date, this has only supported applying embargoes. this adds the ability to release an embargo after its period has expired. a concept of 'enforcement' is added, represented by `#enforced?`. this addresses the issue of embargoes which are not current (their period is past) but have not yet been released. the terminology used by the `EmbargoManager` is documented. see also: samvera/hydra-head#511.
these views relied on internal knowledge about Embargo and Lease implementations that likely won't hold under Valkyrie models. extracting this knoweldege into a helper method is a first step toward making it implementation agnostic. this is connected to samvera/hydra-head#511.
for Valkyrie models, we provide `Hyrax::EmbargoManager` to make the embargo lifecycle easy to work with. to date, this has only supported applying embargoes. this adds the ability to release an embargo after its period has expired. a concept of 'enforcement' is added, represented by `#enforced?`. this addresses the issue of embargoes which are not current (their period is past) but have not yet been released. the terminology used by the `EmbargoManager` is documented. see also: samvera/hydra-head#511.
Descriptive summary
Embargoes and Leases use unclear and inconsistent terminology to describe their current and future states. Some important states are completely unnamed and are checked in client code via presence of
*_release_date
(which it might actually be nice to keep around).We have:
#active?(Boolean)
which indicates whether a release date is in the future.#deactivate!
which releases(?) the embargo, and should usually be called when#active?
is alreadyfalse
!embargo/lease_release_date
, hence "release", which is an action that's never taken, but is maybe what's meant by "deactivate"? (edit: oh, and also "expiration" as in#lease_expiration_date
and (in Hyrax)Hyrax::EmbargoHelper#assets_with_expired_embargoes
.)during_embargo/lease
which seems to mean "until deactivate is called"after_embargo/lease
which seems to mean "after deactivate is called"I might try to draw a state diagram for this later.
In the meanwhile there's an important, unnamed state when the release date has passed but has not been deactivated (under present terminology (maybe) the embargo, is "inactive", but not "deactivated"). The only way to tell whether this is the case is to inspect
embargo/lease_release_date
and infer that, because it is present the embargo is still... ummmm... not-deactivated.Rationale
The current state of affairs makes things confusing, even for experienced Samvera devs (:wave:)
Related work
samvera/hyrax#4299 (comment)
The text was updated successfully, but these errors were encountered: