Change is incremental from year to year, addressing specific challenges: scalability as the web takes off; true heterogeneity…
In that light, what does our study suggest about designing an evolvable DC spec?
Vendor lock-in is a blessing and a curse. In the case of DCOM, tight integration with the dominant platform of the day made development easier. At the same time, extending applications beyond that platform was essentially impossible. Open standards processes can lead to ‘design-by-committee’ syndrome, but can also greatly increase adoption.
Successful protocols work best by allowing the developer to focus on what matters to their application. Such generality and encapsulation become more and more successful as the underlying technologies, such as HTTP, are themselves standardized and propagated.
Service orientation, the separation of business logic and application code, and the ability to separate invoker from consumer are important mechanisms for handling application complexity and promoting reusability.
Treating remote resources as though they were local is misleading. There are certain properties of local resources, such as latency, that are very difficult to ignore. One of CORBA’s problems was its insistence on this principle. Quality of service properties are important to consider. Web services specifications, such as WS-ReliableMessaging , are attempts to address this.
Designing for evolvability should consider past decisions. Would a new distributed computing paradigm arise if it did not provide improvements on the past?
Abstraction is only possible after sufficient pain has been suffered. E.g. REST: SOA is a style w/o constraints (anything can be sent), but the constraints are there for a reason (e.g., loose coupling, uniform identifiers, help scale systems)
*Scacchi, Walter, “Understanding Open-Source Software Evolution”, in Madhavji, Perry and Ramil, eds., Software Evolution and Feedback: Theory and Practice , Wiley: 2006.
It is increasingly difficult to point to any one piece of software or code as a ‘standalone’ system. Even embedded systems interact with servers, other devices, etc. Powerpoint has online help, embedded drawings, etc.
Cf. Jackson’s problem frames
Antòn and Potts described ‘functional paleontology’, a history of user-facing features in a telephony company