Skip to content
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

Replicate specification of Object extension into Storage Root extensi… #583

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 24 additions & 2 deletions draft/spec/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1105,10 +1105,32 @@ <h2>Storage Root Extensions</h2>
</p>
<p>
The base directory of an OCFL Storage Root MAY contain a directory named <code>extensions</code> for the
purposes of extending the functionality of an OCFL Storage Root. The storage root <code>extensions</code>
directory <span id="E086">MUST</span> conform to the same guidelines and limitations as those defined for
purposes of extending the functionality of an OCFL Storage Root. The guidelines and limitations for the
storage root <code>extensions</code> directory are defined in alignment with those of the
<a href="#object-extensions">object extensions</a>.
</p>
<p>
The <code>extensions</code> directory <span id="E112">MUST NOT</span> contain any files, and no
sub-directories other than extension sub-directories. Extension sub-directories
<span id="W016">SHOULD</span> be named according to a <a>registered extension name</a>. The specific
structure and function of the extension, as well as a declaration of the registered extension name
<span id="E113">MUST</span> be defined in one of the following locations:
Copy link

@pwinckles pwinckles Apr 7, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally, I would not include E113. It is impossible to enforce.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that we should drop E113 -- the "structure and function part" is not enforceable, and the notion of it being a registered name overlaps with the warning W016. (This also applies in the object extensions section for E068 and W013.)

Copy link
Contributor

@zimeon zimeon Apr 7, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I note this has tons of overlap with #565, will propose approach there. I think we could move forward with this PR (addressing the replication issue alone) by simply removing the text from the E113 sentence onward.

</p>
<ul>
<li>
The <a href="https://ocfl.github.io/extensions/">OCFL Extensions repository</a>
</li>
<li>
The Storage Root, as a plain text document directly in the Storage Root
</li>
</ul>
<blockquote class="informative">
<p>
Non-normative note: Extension sub-directories should use the same name as a registered extension
in order to both avoid the possiblity of an extension sub-directory colliding with the name of another
registered extension as well as to facilitate the recognition of extensions by OCFL clients.
</p>
</blockquote>
<blockquote class="informative">
<p>
Non-normative note: Storage extensions can be used to support additional features, such as providing
Expand Down
4 changes: 3 additions & 1 deletion draft/spec/validation-codes.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,6 @@
| E083 | 'There MUST be a deterministic mapping from an object identifier to a unique storage path.' | https://ocfl.io/draft/spec/#E083
| E084 | 'Storage hierarchies MUST NOT include files within intermediate directories.' | https://ocfl.io/draft/spec/#E084
| E085 | 'Storage hierarchies MUST be terminated by OCFL Object Roots.' | https://ocfl.io/draft/spec/#E085
| E086 | 'The storage root extensions directory MUST conform to the same guidelines and limitations as those defined for object extensions.' | https://ocfl.io/draft/spec/#E086
| E087 | 'An OCFL validator MUST ignore any files in the storage root it does not understand.' | https://ocfl.io/draft/spec/#E087
| E088 | 'An OCFL Storage Root MUST NOT contain directories or sub-directories other than as a directory hierarchy used to store OCFL Objects or for storage root extensions.' | https://ocfl.io/draft/spec/#E088
| E089 | 'If the preservation of non-OCFL-compliant features is required then the content MUST be wrapped in a suitable disk or filesystem image format which OCFL can treat as a regular file.' | https://ocfl.io/draft/spec/#E089
Expand All @@ -120,6 +119,8 @@
| E108 | 'The contentDirectory value MUST represent a direct child directory of the version directory in which it is found.' | https://ocfl.io/draft/spec/#E108
| E110 | 'A unique identifier for the OCFL Object MUST NOT change between versions of the same object.' | https://ocfl.io/draft/spec/#E110
| E111 | 'If present, [the value of the fixity key] MUST be a JSON object, which may be empty.' | https://ocfl.io/draft/spec/#E111
| E112 | 'The extensions directory must not contain any files, and no sub-directories other than extension sub-directories.' | https://ocfl.io/draft/spec/#E112
| E113 | 'The specific structure and function of the extension, as well as a declaration of the registered extension name must be defined in one of the following locations: The OCFL Extensions repository OR The Storage Root, as a plain text document directly in the Storage Root.' | https://ocfl.io/draft/spec/#E113

## Warnings (corresponding with SHOULD in specification)

Expand All @@ -139,3 +140,4 @@
| W013 | 'In an OCFL Object, extension sub-directories SHOULD be named according to a registered extension name.' | https://ocfl.io/draft/spec/#W013
| W014 | 'Storage hierarchies within the same OCFL Storage Root SHOULD use just one layout pattern.' | https://ocfl.io/draft/spec/#W014
| W015 | 'Storage hierarchies within the same OCFL Storage Root SHOULD consistently use either a directory hierarchy of OCFL Objects or top-level OCFL Objects.' | https://ocfl.io/draft/spec/#W015
| W016 | 'In the Storage Root, extension sub-directories SHOULD be named according to a registered extension name.' | https://ocfl.io/draft/spec/#W016