SamuelSchlesinger / geopolitik-backend

A Haskell implementation of the backend of Geopolitik, a website I want to make
https://geopolitik.world
1 stars 0 forks source link

Peer / Hierarchical Review #4

Open SamuelSchlesinger opened 4 years ago

SamuelSchlesinger commented 4 years ago

As this is meant to be a website for authoring articles, I believe that the concept of review is very important and should be implemented in a first class way. That being said, there are many different social structures one can use for review. The way I have decided to frame it here is the distinction between peer and hierarchical review.

Here is the beginning of a proposal for the concept of review being added: ProposedDraft and Reviewer are new concepts in Ontology. One should have the ability to propose a draft rather than simply create a new one.

Let's say you are an author of a long running article that you edit from time to time and you deeply care about its contents. Suddenly, at the same time, things are happening in the world that change what the contents of the article are, but at the same time you have a personal problem that prevents you from working. A number of people who read the article want to submit changes, but you don't want just anybody to be able to contribute. At the moment, if you set them up as a collaborator, they can publish a draft that is terrible without any supervision or review from you. Of course, you can remove them as a contributor and reset the article, purging that draft from history, but it would be nicer if they can never do that in the first place. Thus, we can imagine a use case for all drafts to have to be approved by a certain person. More broadly than that, one can imagine a directed, acyclic graph of reviewers, each of which has the ability to appoint their underlings, where the proposed drafts travel up the graph to the root node where the final decision on acceptance is reached.

A completion for the proposal which pursues this idea might look something like: That ProposedDraft can include a specified hierarchy of reviewers that one can store in the database and reuse. Each article should have a default reviewer hierarchy and you should have the ability to specify, for any individually proposed draft, a complete change in the hierarchy below you. In English, this is to say that if you have delegated your work in some particular, default way, we will always give you the ability to delegate it differently in an ad hoc basis.

The other notion of review that I believe can be understandably desired is the notion of peer review, that between claimed experts and other claimed experts in the same field. The reason for this desire is obvious and I will not elaborate it here.

A completion for the proposal for this idea might look something like: That ProposedDraft can include a specified field that the author is claiming expertise in. The draft will be assigned at random to others in that field, with enough redundancy and eye for active users that it will be likely to receive prompt review.

There is enough handwaving in that last proposal to make me gag, but I think I want both of these things. Unifying those proposals to make an elegant solution that doesn't force me to replicate work between these is the first step towards actually implementing these review structures.

SamuelSchlesinger commented 4 years ago

I have introduced the concept of an Expert and of an Expertise. An Expertise will be something like Math or Political Economy or what have you, while an Expert is simply a type which references both a Key Expertise and a Key User, indicating that that particular user is an expert in that domain.

This should form the basis for a peer review system. Hierarchical review is going to be put off for now, because I think that there are more or less no actual use cases for it until we have a substantial number of users who are maintaining large, difficult to maintain articles and at the moment we have zero. No reason to clutter the codebase with support for this organizational structure when it is giving us nothing.