LinkBack - OpenDoc is back?
Update: Added link to demo movies, added two more mentions of downsides.
Quentin Mathe just pointed me at the LinkBack Project, which seems to be a new attempt at providing a feature not unlike OpenDoc used to be on Classic MacOS, combined with just a spoonful of Publish and Subscribe thrown in for good measure.
It's a very simple idea that basically extends the pasteboard by adding a special LinkBack flavor. So, any data that can be dragged or copied will include data that both knows what app created it, as well as the native type of the data. In addition, a standard pasteboard flavor (like PDF graphics) is included on the pasteboard.
Thus, any app can accept the pasted data just as a "stupid" image or plain text, but it can also take along the original format and hand it back to the application from which the data was pasted, to let the user edit this data, or to let the original app update this data.
While this gives the user most of the benefits of OpenDoc (being able to easily include other types of data in your document), and is fairly simple for a programmer to support in their own app, it has a few further advantages:
One downside is that this framework is currently very Cocoa-centric. On one hand this makes it easy to use for Cocoa developers, on the other hand this means additional work for Carbon developers wishing to support LinkBack. Another disadvantage is that client apps will store a copy of the data using the representation they know (e.g. PDF, RTF) in addition to the representation in the LinkBack dictionary needed by the original app to edit it. But that turns into an advantage as soon as you try to view this file on a computer that doesn't have the original app.
- Each application is responsible for independently editing data it created. Other apps are simply responsible for display of this data (using one of the standard flavors). Marketing departments will be happy about this, as that means the user will still be aware he's not editing that picture in TextEdit. No, it's Sketch. (supposedly, this was what broke OpenDoc's back -- that components didn't scream "Word!" or "Photoshop" loud enough)
- It's intuitive. Most users are already aware of Copy and Paste or Drag and Drop, and what this simply does is maintain a connection to the original application to update a generic representation.
- It leverages existing technologies. It uses the pasteboard for communication, and apps that don't support LinkBack will simply treat it as a regular paste operation and degrade gracefully, while it's not very complicated to add to other apps, because most of the work has already been done to support the Edit menu.
- It's flexible. The data passed along in the paste can be anything. It can be the actual image data, or it can be an AliasHandle pointing to a file containing the image, or it can be a URL to a stocks web site... everything is possible, from having an Excel table in TextEdit documents to live-updating data. It doesn't even have to be displayed as an image in a box. It can just be a range of text that updates and re-wraps in your document just like any other.
Still not convinced? King Chung Huang made some fantastic Linkback demo movies and a Keynote plugin. You'll see that LinkBack can even do live updates. Edit a graphic in Sketch, and Keynote will constantly update its display of the image. Incredibly cool!
Now one thing that would go nicely with this is a "dead" source attribution. I.e. some way to say: this item came from the following URL, so users can easily recover where they got something from. I say dead, because you wouldn't want to have your document call home to the Wikipedia each time you opened a file with one of their free images that you downloaded.
Instead, you'd just want to be able to have this URL displayed when you wonder whether it came from Photoshop's included picture library or Wikipedia. But I guess that could be solved by simply introducing a special "source URL" clipboard flavor and getting Apple to add it to Safari. After that, the rest of MacOS X apps would probably follow, and we'd only need other apps to store it.