feat(authorship): add publishing permissions #42
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
When working with co-authors, all authors currently need to approve every minor change. Even one reference update requires approval from all the co-authors again. In my personal experience, this has led to serious publication delays.
In order to make the publishing process more manageable, I would like to introduce publishing permissions for authorships. For example, if we have authors A, B, and C, we can have various scenarios:
This issue is in relation to #41 to a certain degree – all this information needs to be stored on an authorship level, not the user level.
The thinking on this is in progress, so please chime in if you have ideas :)
In order to make publishing somewhat smoother than it currently is, all authorships will default to consenting to publish at first, which can be withdrawn at any time, per publication version.
Other authors can be set to be "trusted authors" with which withdrawn consent will be reconciliated. This would mean that if Person A trusts Person B, and has withdrawn their consent to publish at some point, they will consent to publish once Person B consents.
This is reconciled using a trust and consent matrix, respectively:
The diagonal on the square matrix is the user themselves. Reading it row by row, gives trust values. Here row 1, column 2, could be seen as Person A's trust in Person B. The row vector indicates the consent values, here
A=0
indicating false andB=1
indicating true.The dot product of these two matrices provides the outcome matrix that can be used to determine whether the publication version is allowed to be published. Trusted authors are tracked by a one to many relationship, indicating one author can trust multiple other authors on the same version.
At this stage, I will implement this in such a way that trust and consent to publish are copied from version to version. In other words, if not updated, it will remain in the same state across versions.
I had an implementation of the comment above, but decided to go a different route that does not require matrix multiplication after all. Sharing the code here for later (potential) reference: