-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
GNIP 103 - Removal of the Advanced Workflow from GeoNode
Overview
The Advanced Workflow is a generic term that refers to a mix of options that allows controlling approval and publishing workflows, and connected permissions, when activated.
This was introduced long ago in GeoNode, and it went through several changes and refactoring during the course of GeoNode releases. During this process, a list of idiosyncrasies has been introduced, leading to very complicated operations that depend on several interrelated states and configurations. These operations also required the introduction of transition flags inside the resource model (was_approved, was_published, etc.), which highlight the brittle nature of the flow.
Reasoning about what happens to permissions and publishing status of a resource when one or multiple Advanced Workflow options are activated is a complex task, with many side effects on user permissions.
For all these reasons, the GeoNode team has considered the refactoring of the AD model several times. In the end, the decision to remove it was taken to give space to a more granular control supported by the introduction of the Permissions Registry. With this component, we can tune permissions granularly and without having to translate them into Guardian (DB) permissions. We can perform ACL logic based on business rules, roles, and configurations in a cleaner and clearer way.
Proposed By
Giovanni Allegri - GeoSolutions srl (@giohappy )
Assigned to Release
This proposal is for GeoNode 5.
State
- Under Discussion
- In Progress
- Completed
- Rejected
- Deferred
Motivation
The ADW is a mix of settings that enables a mix of interrelated configurations, which activate a list of behaviors that affect resource states and permissions.
These settings have changed and undergone refactorings during the course of GeoNode's history. Some of these changes have introduced exceptions and specific cases that have led to a very complicated logic within the permission systems and the resource management, spread across many places of GeoNode's source code.
Efforts have been made in the past to limit the number of points where ADW logic is enforced, but still, the logic is not flexible and mixes aspects that should be managed orthogonally instead. For example, some of the settings affect resource visibility but also permissions on the resource, which involve group membership of the resource and of its owner, without fine-grained control to turn on and off single options. Thi makes the ADW very specific and unflexible.
We don't think the ADW as it is now is really useful and understood by users and admins.
Simpler approaches have been proposed in the past, but there hasn't been the opportunity yet to transform the ADW into a set of independent and granular controls, with a clear separation between resource visibility, approval, and permissions.
A big effort has been made to refactor the permissions system and collect the ACL logic under a central module (the Permissions Registry) and introduce the concept of "virtual" permissions. This move couldn't be completed yet because of the complications in the ADW code and logic.
We propose to remove the ADW completely and give space, if needed, to a more lightweight and cleaner approval workflow in the future.
Proposal
The ADW code will be removed from GeoNode along with the settings that control it:
GROUP_PRIVATE_RESOURCES won't be removed since it doesn't affect only the ADW, but also logic outside of it.
The was_approved, and was_published ResourceBase fields will be removed.
The approved, published, ResourceBase fields will be deprecated. They will be removed in later minor versions.
Backwards Compatibility
This is a breaking change. Users relying on the publishing and approval flows will lose this functionality.
Permissions that have been set by the ADW logic won't be lost with the upgrade to GeoNode 5. They will remain inside the permissions DB, but resource owners will gain full permissions on the resource.
Future evolution
Approval workflows might be introduced again in the future, if it will be requested, but with a cleaner and simpler design.
Feedback
Update this section with relevant feedback, if any.
Voting
Project Steering Committee:
- Alessio Fabiani: +1
- Francesco Bartoli:
- Giovanni Allegri: +1
- Toni Schoenbuchner:
Links
Remove unused links below.