-
Notifications
You must be signed in to change notification settings - Fork 47
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
configurable redirecting and remapping #136
Comments
It is very early to tell as to what aspects and degree of this proposed functionality should be part of the spec and be testable, as opposed to leaving it as an implementation detail. Before that happens, we need multiple implementation experience (independently developed, different codebase..) in order to understand what's reasonable to implement; common patterns.. |
For those interested, we're working on a specification and server implementation of redirection, for the case of data that has moved or been deleted, at PDS Interop (https://pdsinterop.org/solid-migrator/). We're looking at tying it into the .meta mechanism (auxiliary resources). We're also looking at the timeshift aspect, to support archived copies of data as a fallback. We have two solid server implementations, the solid-nextcloud bridge and a reference PHP solid server, where we can test the specification. Any comments or directions on how to continue on working on the specification proposal are much appreciated. |
Just noticing that https://solidproject.org/TR/protocol#auxiliary-resources
|
Team PDS Interop has done work that could give an option to resolve this issue. Principal ideas and specification Tests for Solid Storage server Implementation done in Solid Nextcloud and PHP Solid server Main application: POD migrator ** Demo application: Zettelkasten** |
I think the direction this is going in is pretty good, and aligned with the way that I have thought about this too. However, we need to think more broadly about it than Also, this particular auxiliary resource type, I think we should define another auxiliary resource type for this purpose, as part of a more general approach to auxiliary resources. It would, for example, need to live beyond the subject resource, or have its data merged into a resource higher up in the hierarchy. This would still use the basic principles that you've arrived at @sjoerdvangroning , but the details regarding the use of auxiliary resources would change. |
For the PDS Interop implementation we use
Because of this, and other reasons, the meta information must set on a parent of a resource, as the resource itself does not have to exist (only the metadata does). This would allow, for instance, redirecting an entire pod, without any other content besides the metadata being present. This is reflected in the specification. 👍 |
@Potherca we did think about this, and added it in the 'server implementation' discussion section, I actually forgot to add it to the specification. So @kjetilk thanks for the reminder. I'll add an extra note explaining that you should fetch the auxiliary resource based on the LINK header of the parent folder of the resource you want to redirect or delete. |
Yup, but the parent may also be removed at some point, so that doesn't guarantee anything. I think we need a mechanism for such things to propagate up the tree towards root, but I'm not entirely sure how that should be done to scale well. |
I think there are two separate issues. A removed resource can not have metadata (as the resource does not exist) so the metadata can only be set on a parent resource (up to the root). When a parent is removed that contains metadata, what should happen to the metadata that parent contains? I don't recall anything currently in the Solid spec addressing this... There might already be something in the LDP spec, I'd have to take another look. In the PDS Interop specification there is a related expectation that the metadata of a resource needs to be amended, for instance, when a resource is created again. Something similar would also be needed for when a parent container is removed (or renamed, maybe?).
I agree. I think we need to write out the usage scenarios first such situations and see what options are available, and which makes most sense. @poef Should we make issues for this in the spec repo to include these scenarios? |
The combination of an external Memento timegate would likely suffice in addressing this case without the need to extend or change the Solid (or LDP) specifications. Using pattern 2.1, a client can interact with a stable timegate resource. By providing either the "old" resource URI or the "new" resource URI, the client will be redirected to the correct location. |
@kjetilk @acoburn The position we've taken in the specification is that the last change indicates the user intent. So if you delete a folder where a child has redirect information, that information is no longer relevant. This is the base line. However I could see how a specific implementation might want to warn a user that this redirect information would be deleted as well, and could give the user the option to hoist the information up to the nearest parent that still exists. As for memento, we have done extensive research on existing options to mitigate linkrot, memento was part of that. This is reflected in the link-metadata ontology, which has both You can find our research results at https://pdsinterop.org/solid-migrator/ |
#107 (comment)
I think defining something like Apache .htaccess as part of LDP container metadata solid/data-interoperability-panel#32 would provide general and explicit mechanism which would help us avoid some arbitrary implicit behavior. I think it should at least allow to:
It could possibly have RDF version of Apache mod_rewrite with equivalents of
RewriteCond
(HTTP_ACCEPT
,HTTP_ACCEPT_LANGUAGE
etc.) andRewriteRule
.This would allow explicit remapping for discussed in #69 case of serving HTML from URL denoting LDP Container, without arbitrary convention like
index.*
. Still implementations could opt-in to includeindex.*
as default remapping rule while allowing applications with sufficient access to overwrite it for specific container in solid storage.Very likely it could also provide configurable way to address discussed in #107 redirection for IRIs with or without trailing
/
.The text was updated successfully, but these errors were encountered: