Add blindReviewGuard 1.0.0.0 for OJS 3.5 - #524
Open
edersotto wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Blind Review Guard 1.0.0.0, a generic plugin for OJS 3.5 that checks the files a reviewer is about to receive for anything that identifies the authors, and can remove the identifying metadata.
Why this one
Anonymous review in OJS rests on a checklist item asking the author to follow the "Ensuring a Blind Review" instructions. Nothing verifies it — and the leak is rarely in the part anyone reads:
w:authorattributes spread acrossdocument.xml,comments.xmlandpeople.xml(accepting all changes does not remove the comments, and deleting the comments does not removepeople.xml);The editor usually finds out when a reviewer mentions it: too late, with the anonymity already broken. The topic comes back to the forum periodically — file names under blind review, author confidentiality in supplementary files — and pkp/pkp-lib#2202 fixed the file-name half years ago, but nothing looks inside the file.
There is nothing in this gallery for it: searching the current
plugins.xmlfor "anonym" or "blind" returns no match across the 100 plugins listed. The only prior art we could find anywhere is an abandoned 2017 plugin for OJS 3.0 that shells out toexiftool/qpdf, strips metadata without asking, does not look at the content and does not tell the editor anything.What makes the report trustworthy
It reads the submission's own contributor list. It does not look for "a name": it looks for those names, e-mail addresses, ORCID iDs and affiliations. That is the difference between a report editors act on and one they learn to ignore.
Where it acts, and why there
OJS keeps a submission's files in stages, and a reviewer never sees the author's upload: sending a submission to review copies the selected files into the review stage (
PKP\decision\steps\PromoteFiles— "allows the editor to copy files from one or more file stages to a new stage"). The plugin works on the copy, at the moment the copy is created, throughSubmissionFile::addfiltered to file stages 4, 19, 15 and 20. A second hook,ReviewAssignment::add, reports anything still identifying at the last moment before someone outside the editorial team can open the file.Consequences that matter to journals: the identified version in
SUBMISSION_FILE_SUBMISSION— title page, full author list, the version many journals require — is never touched. No core file is patched, no table is added, and whether the review is anonymous is read from the journal'sdefaultReviewModeand from each assignment'sreviewMethod.What it deliberately does not do
Packaging
ZipArchive, and for PDF the/Infodictionary, the XMP packet and a best-effort read of the FlateDecode content streams. No external binary — noexiftool, noqpdf, nopdftotext. When the PDF body cannot be read, the report says so instead of reporting the file as clean.ApplicationPluginssuite; they also run standalone (php tests/run.php), since the OJS release tarball ships no development dependencies. Fixtures are generated rather than committed, so a reviewer can read exactly what makes each file dirty.fuzzy, so Weblate shows it as needing review instead of freezing it as final.Checks run before opening this
xmllint --schema ./plugins.xsd ./plugins.xml --noout— validates.848e4ac0c5045f78de2e3a93263c7929).blindReviewGuard/directory, and the test suite passes when run from the downloaded package.Notes
Submitted as
reviewed, following what other third-party plugins declare here. Happy to adjust anything in the entry — wording, compatibility range or metadata — if you would like it different.