To frame the discussion around interoperability, I thought it would be useful to work from some example scenarios. I'm not claiming that these are either exhaustive or non-overlapping, but since they represent common applications, they should be useful to fix some ideas. As we go along, we can add more scenarios, clarify the ones we have, and maybe reduce them to a representative set. In each analysis that we examine over time, we should look at both proprietary and open source implementations of the scenarios and consider the role of standards in each. We should also consider any roadblocks to achieving interoperability, once we have an idea what it means.
- The Browser Scenario
What does interoperability mean for web browsers?
We now have multiple browsers on multiple platforms, but some browsers only run on certain platforms. Interoperability issues include use of web standards, programability, and the quality of the visual and interactive experience. If you and I both view the same "page" from the same source do we see the same thing and do we have the same interactive capabilities? What happens when we vary the browsers and vary the platforms? I quoted the word "page" above because some sites serve different pages to different browsers (and, indeed, devices). Without getting into major variations at the device level, how can we maximize interoperability while minimizing the need to serve different pages? Which browsers are the most interoperable and which are the least?
- The Word Processor Scenario
What does interoperability mean for word processors?
Again, we have multiple work processors on multiple processors, but it is certainly the case that Microsoft Word has the largest market share overall. For a given word processor, how do we define interoperability? How does it handle different file formats both for itself and previous versions, as well as being able to ingest and spit out file formats compatible with other word processors? Given a file in a given format, what guarantees exist that it will be readable 20 or 50 years in the future? Who has control over the file formats? Should there be at least one required file format that is under the control of an open standards organizations (that is, are proprietary formats allowable as long as there is at least one that is standardized and freely usable by anyone with no restrictions)? If there is a standardized file format, should proprietary extensions be allowable? How does the maturity of the standard word processor function set affect our expectations on interoperability?
- The Web Services Scenario
What does interoperability mean for web services based on specifications that are either published or in standards organizations?
In this scenario, I am specifically trying to avoid the "anything is a web service" and the "SOAP vs REST" discussions, though those might be interesting later discussions. Keeping strictly to the usual standards suspects such as SOAP, WSDL, WS-Security, and even allowing some variation for reliable messaging, how do define interoperability? Do we limit it to APIs and "what goes on the wire"? Should BPEL be part of the interoperability discussion for web services or does it fit somewhere else? How does statefulness affect interoperability?
- The Eclipse Scenario
What does interoperability mean in an environment like Eclipse?
Eclipse has becomes as popular as it has because of its opennness, its plug-in architecture and metatdata capabilities, and its basic ability to significantly decrease the amount of work necessary to produce a powerful IDE (I'm going to ignore other capabilities of Eclipse such its role in creating rich clients). Do the plug-in and metadata capabilities provide the main interoperability characteristics of Eclipse? How important is the ability of Eclipse to run on multiple platforms for interoperability? Does Eclipse in some way provide "operating system"-like capabilities in that other things can take advantage of the underlying infrastructure and interact in well defined ways? What is the value to interoperability of Eclipse being created in an open source environment?
- The Linux Scenario
What does interoperability mean for Linux, or any operating system that is available across a broad range of hardware platforms?
There are many things we can discuss here, but the primary one I want to focus on is how the value of having a common operating system running on many different hardware platforms contributes to interoperability. Does anyone ever make a statement along the lines of "to achieve maximum interoperability in my organization, I want to standardize on Linux on all my hardware platforms"? Why? Implicit in this is that the world is never going to standardize on the same hardware platform, and so this type of operating system pervasiveness provides increased homogeneity to a situation that fundamentally heterogeneous at a lower level. Is this ultimate goal of interoperability, to allow maximum sharing and perceived homogeneity within a class of applications?