Here at CogSci Apps, we believe that all apps should make it extremely easy for users to get (copy) and open hyperlinks to the data they present or manage. In other words, all apps that deal with resources should be truly linkable. A hyperlink specifies the name and address [URL] of a resource.
We believe users have a right to easily and automatically get links to their data.
The Manifesto for Ubiquitous Linking
After the original publication of this page, on 2021-12-16 the Manifesto for Ubiquitous Linking was published by 25 people (cognitive science professors, developers and podcasters). A growing number of people are signing this manifesto. If you value linking, you can sign it too. You will likely recognize many of the people who signed the manifesto.
The manifesto also presents some of the cognitive science concepts used to explain why linking matters.
Check out some of the Media Highlights, which do a great job of explaining why software should be linkable.
Truly linkable apps
A fully linkable app is an app that provides both a user interface and API for linking. For a file-based app, the user interface could simply be to get a file:// URL; some apps have their own URL schemes. A linking API makes it possible for apps to communicate with each other about what matters most: each app’s content (documents and objects). We maintain a list of linkable apps — it’s not complete, but it’s reasonably extensive. If your app is linkable but not listed there, please get in touch with us.
More specifically, linkable apps provide an API to:
- Return the name of the current foreground document or object.
- Return the URL of the current foreground document or object. One could define a single method that returns both the name and the address of the current object or document.
Of course, an app’s URLs are only helpful if the app can resolve and open them. For example an OmniFocus:// URL is helpful because OmniFocus can open OmniFocus:// URLs.
So, if an app has universal or other web URLs and local URLs they need to clearly inform their users how the URLs can be mapped. That is to say, they must indicate how the universal (or web) URL can be utilized locally.
Apps that enable the creation of new resources need to provide an API to create resources, given a specific name, and this method must return the URL of the newly created resource.
However, we are not advocating for a specific API. Interoperability can sufficiently be achieved if developers provide documentation for their APIs, allowing users to understand how these APIs adhere to conceptual linking requirements. For instance, an API might state that its copyLink
method returns a Markdown (plaintext) link, and/or that it returns a link in some other formalism (such as RTF or HTML).
This flexibility is helpful for app developers providing the API. They can use AppleScript, JavaScript, a command line interface, an x-callback-url scheme, or anything reasonable that they document. These flexible requirements mean that interoperable linking can rapidly be implemented by many apps, without a standard body slowing down what can be a rapid process. (Compare the fate for instance of SCORM). It is easy for automators, whether or not they are professional software developers, to read such APIs and to develop their own code to use them.
User interfaces
Methods to copy links should be in a standard location in the user interface, and easy for users to access. Moreover, there should be a keyboard shortcut to get the link of an object.
State of hyperlinking today and the importance of linkability
I don’t think a developer would, let alone should, doubt the importance of linking on the web.
And so, a large number of Mac apps are in fact linkable. The apps that are marked with √👍 on the Linkable Mac Apps page are truly linkable.
Unfortunately, many apps still do not even provide a user interface for copying links to their local (including cloud-synced) data. Of those that do, the user interfaces often require several clicks, and may not have a keyboard shortcut, or even allow a keyboard shortcut to be defined for them.
Moreover, many apps do not provide an API for anything. In macOS, APIs can be written in AppleScript or JavaScript. They can also be made available via the command line.
People have become so accustomed to the weird fact that, without Hookmark, information resources are not easily addressable on the Mac, that they tend not to realize that it’s just as important to be able to address local (or cloud synced) resources as it is to address remote resources.
We feel that the Copy Link
command is just as important as Copy and Paste. Copy and Paste commands are almost always located in an Edit menu, which makes them very easy to find. And they have standard keyboard shortcuts: ⌘C and ⌘V.
By making link access commands easy for users and software (via API) to apply, the full potential of interlinking can be realized.
We have described many of these cognitive productivity benefits on Hookmark’s benefits web page. The power of human brains comes from their massive interconnectedness and intra-connectedness. Being able to connect knowledge resources together can improve one’s cognitive productivity — or efficiency and effectiveness at using knowledge.
Manifesto for truly linkable apps
Our co-founder, Luc P. Beaudoin, has co-authored a manifesto chapter in the upcoming book, the Future Of Text edited by Frode Hegland. The chapter’s title is:
A manifesto for user and automation interfaces for hyperlinking: How hypertext can enhance cognitive productivity
The Future of Text will be published in November 2020 by Future of Text Publishing.
CogSci Apps and like-minded thinkers intend to publish a new manifesto, based on the above. We invite software developers, journalists and professors in the information retrieval space to provide feedback on, and co-sign this manifesto. If you would like to join, please email us at linking-manifesto
“at” our CogSci Apps domain name or via the Hookmark forum.
Not only for Hookmark
This manifesto is not merely for CogSci Apps and Hookmark. In fact Hookmark and CogSci Apps actively support interoperability. The manifesto aims to make it possible and easy for all users and developers to get the full value of their data — in all the apps they use.