Hacker News new | ask | show | jobs
by prepend 2163 days ago
This is a great link and I think I’ll share it to people. I find that I struggle trying to explain why URIs shouldn’t change because it’s so ingrained in me.

One of OneDrive’s pet peeves is that if I move a file it changes the URI. So any time someone moves a file, it breaks all the links that point to it. Or if they change the name from foo-v1 to foo-v2. I wish they’d adopt google docs.

2 comments

I wish operating systems managed files in a similar way. Ideally filesystems would be tag-based [1] rather than hierarchy-based. This would make hyperlinks between my own personal documents much easier and time-resistant as my preferences for file organization change.

[1] https://www.nayuki.io/page/designing-better-file-organizatio...

MacOS does this. Native mac apps somehow can preserve file references even after the source file has been moved or renamed. The unfortunate part however is many cross platform apps are't written using the Mac APIs which then leaves an inconsistent experience.

I think it's for reasons like this that many mac users strongly prefer native apps over Electron or web apps.

>I think it's for reasons like this that many mac users strongly prefer native apps over Electron or web apps.

Users on every OS do.

Could have fooled me with regard to Windows. I'm unfortunately not sure what a "native" Windows app is at this point. They've gone through so many frameworks over the years, everything is a mish-mosh.

And this isn't just a result of legacy compatibility. If you are a developer today, and you want to make a really good Windows app, what approach do you take? Is it obvious?

On windows its just a resource hog. On linux and mac they stick out like a pimple on a pumpkin. The number 1 annoyance for me is because they are based on chromium which doesn't have wayland support, all electron apps do not dpi scale properly with multiple monitors.
IMO a fully native Windows app would probably just be Win32, but really WPF/UWP stuff is just about native as well.

WPF is still my favorite GUI framework/toolkit by far, if we're talking standard business app development.

Do you know if this something that any mac app can use or is it limited to Apple in-house applications?
Any Mac app could do it in system 7, and they can now too.
I've encountered this disconnect between web documents and file systems a few times - in Windows at least, moving or renaming a file also changes the URI (unless you check the journal, how can you know that C:\test.txt that was just moved to D:\test.txt was the same document?), so its hard to argue why doing it over HTTP should be any different...
Content-addressing helps a ton. I wish links on the web, especially, had been automatically content-addressed from the start. Would have helped a bunch with caching infrastructure and fighting link-rot. Oh well.

Does make updating more awkward, and you still need some system of mapping the addresses to friendly names.

The problem boils down to this question: What is an URI actually referencing? Does it identify a discrete piece of information (e.g. a text) in the abstract sense? Or does it identify to a specific physical and/or digital representation of that information?

Within the context of digital preservation and on line archives, where longevity and the ephemeral nature of digital resources are at odds, this problem is addressed through the OAI-ORE standard [1]. This standard models resources as "web aggregations" which are represented as "resource maps" who are identified through Cool URI's.

It doesn't solve the issue entirely if you're not the publisher of the URI's your trying to curate. That's where PURL's (Persistent URL's) [2] come into play. The idea being that an intermediate 'resolver' proxies requests to Cool URI's to destination around the Web. The 'resolver' stores a key-value map which requires continually maintenance (Yes, at it's core, it's not solving the problem, it's moving the problem into a place where it becomes manageable). An example of a resolver system is the Handle System [3].

Finally, when it comes to caching and adding a 'time dimension' to documents identified through cool URI's, the Memento protocol [4] reuses existing and defines one extra HTTP Header.

Finding what you need via a Cool URI then becomes a matter of content negotiation. Of course, that doesn't solve everything. For one, context matters and it's not possible to a priori figure out the intentions of a user when they dereference a discrete URI. It's up to specific implementations to provide mechanisms that captures that context in order to return a relevant result.

[1] https://en.wikipedia.org/wiki/Object_Reuse_and_Exchange [2] https://en.wikipedia.org/wiki/Persistent_uniform_resource_lo... [3] https://en.wikipedia.org/wiki/Handle_System [4] https://en.wikipedia.org/wiki/Memento_Project