Skip to content

Conversation

@HadrienGardeur
Copy link
Member

@HadrienGardeur HadrienGardeur commented Jul 17, 2025

We've had quite a few discussions over the years about the requirement for a self link in every publication (see for example #29).

For now, this is a draft PR where:

  • the requirement has been dropped from the main document (from a "must" to a "should")
  • and the corresponding requirement has been dropped from our JSON Schema

I'm not entirely convinced that we can do much better than that right now, but I'm open to the idea of adding another statement in the packaging document ("must not").

@chocolatkey
Copy link
Member

I think an explainer about not needing a self link should also be added in packaging.md

@mickael-menu
Copy link
Member

Agreed, a must not would be helpful in the RPF doc. And should we keep the must for the case where the manifest is hosted? I understand we can't have it in the schema, but in the spec?

@HadrienGardeur
Copy link
Member Author

And should we keep the must for the case where the manifest is hosted? I understand we can't have it in the schema, but in the spec?

We've kept a should statement for now in the main spec. I'm tempted to turn this into a must statement in the OPDS 2.0 spec.

@HadrienGardeur
Copy link
Member Author

I think an explainer about not needing a self link should also be added in packaging.md

I also think that toolkits should ignore these self links when found in a package.

Using alternate to reference the RWPM makes more sense than self (they're not technically the same thing, one is packaged, the other one is exploded).

self could still make sense in a packaged Web Publication if it references a URL where the package can be downloaded. Useful? Not so much. Harmful? Not so much either. Probably not worth writing an explainer with a must not statement.

@HadrienGardeur
Copy link
Member Author

Turned this one into a real PR without adding another requirement in packaging, since I'm not convinced it's actually necessary.

@HadrienGardeur HadrienGardeur marked this pull request as ready for review August 14, 2025 15:26
@basicallykirito
Copy link

We've kept a should statement for now in the main spec. I'm tempted to turn this into a must statement in the OPDS 2.0 spec.

I would like to show my support for keeping absolute self links optional, as they make compliance significantly more difficult in content-addressed and P2P distribution systems such as IPFS.

@chocolatkey
Copy link
Member

chocolatkey commented Oct 15, 2025

@HadrienGardeur now that we are not requiring at least one link in the manifest, I think that

"required": [
  "metadata",
  "links",
  "readingOrder"
],

needs to be changed to

"required": [
  "metadata",
  "readingOrder"
],

as an empty links array is unnecessary.

I have already updated the go-toolkit to simply omit the links key from an outputted manifest when the links array is empty, such as when using the readium manifest command

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants