Imagine if 'cat' and 'sort' needed to implement a dedicated API to work together, and then 'sed' would add another one, and 'wc' another. This is a kind of mess that we see with cloud services integrations.
Imagine if 'cat' and 'sort' needed to implement a dedicated API to work together, and then 'sed' would add another one, and 'wc' another. This is a kind of mess that we see with cloud services integrations.
OLE[0] allowed one application to embed content from another application, without needing to know anything about the other application. It even had facilities to sort-of merge the UIs, so if you were editing a CorelDRAW drawing within your Excel spreadsheet you'd get a subset of the CorelDRAW toolbars and menus within your Excel window. All of this was done at runtime - there was no special programming in Excel to embed a CorelDRAW object.
This stuff actually worked and worked surprisingly well. It's unfortunate that we seem to have lost this.
I don't think we'll ever see this happen to the same extent. The only integrations will be ones that are specifically approved and developed, all N^2 of them.
[0] https://en.wikipedia.org/wiki/Object_Linking_and_Embedding
cross-computer embedding.
e.g. During a conference, drag drop a certain part of UI from a remote computer for real-time demonstration.
Even embed a content into an email and send it to a friend, as long as your computer stays on your friend can open part of your widget.
And we can also look at the email example : a lot of cloud provide email services and they all use the same protocols (SMTP, IMAP...).
I do wonder how we managed to get standard protocols adopted for email. What did email providers use before SMTP and IMAP? Maybe the key difference then from now was that the internet community was much smaller? Did Mark Crispin simply write the RFC for IMAP, email vendors noticed on their own, and adopted the protocol? Or was the emailing community then so small that there were no vendors and it was really just a handful of programmers, who could discuss and agree on protocols via something like Usenet and implement their own clients and servers?
Also, before SMTP there was UUCP (which was used for both mail and usenet).
Agreeing on a common API mostly locks you into the common denominator of features. It becomes much harder to ship new capabilities to your customers if you also have to add those features to this standardized interface and get all the stakeholders to move forward with it. All these platforms have some features that their competitors lack and it'd be quite the challenge to expose each platform's unique features in a standardized API.
Email (IMAP/SMTP) is a success story of a widely adopted standard, but it's also something that has barely changed in the last 15-20 years partially as a result of its standardization. You can tell IMAP is cumbersome to the modern developer. For example, you'll have an easier time working with a gmail account by using the gmail REST API instead of trying to use IMAP. (IMAP has more limited search support, lower-level thread support, and less specific support for syncing clients)
Email was introduced and has become a popular standard long before commercial cloud services. The companies adopted it, but they do not seem to be interested in introducing similar standard protocols for new APIs.
Proprietary software suffers from a fundamental flaw that limits its usefulness as a technology. It's a technical problem.
To really be like email we'd be talking about a common protocol that all the service providers implement so software can speak to all providers directly in the same way without a middleman. (A better WebDAV with industry support?)
Having a single API reduces this inevitable maintenance overhead and swaps out some set of N integrations in favor of one other. There is the added benefit of having a resource (Kloudless, in this case) assist with enabling whichever use case the business is trying to solve for their users by providing the integrations.
But when propriety cloud services WANT to work together, they need to come up with standard file (or stream) formats. When they do, integration is often not that hard.
(And posix stdin/out is quite terrible tbh, imagine if cat and sort could emit structured objects like in powershell)