The concept of open implementation  from software engineering enables the designers of components to open up the implementation of their component so that it can be adjusted and adapted to suit various needs. The behaviour of a component should be described by its interface abstractions, but the implementation is generally hidden behind the interface. Following the design guidelines of open implementation (OI) , the designer of the component will offer other meta interfaces through which the programmer can adjust the implementation of the component.
If we are aiming to produce distributed applications which scale across network and display capabilities, then OI offers a suitable software engineering approach to enable this scalability. Simply put, the OI part of a software component exposes the network requirements of a particular implementation of a component. By allowing the adaptation controller to manipulate the implementation of a component, the controller can adjust the network requirements of the component and thus adapt the component to the prevailing network conditions. Following the guidelines in , the designer of an open implementation interface should attempt to:
The inherent implementation of the component is based around the abstractions that will be used to implement the component. For the case of the file caching mechanism described in , it is the disk buffers and caches of a file system. For the network retrieval architecture described in Section 3, the abstractions are the compression schemes and representations of the various forms of multimedia. Since the abstractions used in understanding the implementation of a component are closer to the domain of the application, the designer will be able to better tune the adaptation of the application.