Interfaces and standardisation
Wednesday, November 14th, 2007When Google published their SDK for Android on Monday, an emotional discussion erupted around the Dalvik virtual machine, an optimisation of the Java Virtual Machine (JVM) for mobile devices. By creating their own virtual machine, Google has therefore decided to improve an existing standard at the risk that is no more standard-conform. For a more thorough discussion of this subject see:
- Stefano Mazzocchi’s Blog: http://www.betaversion.org/~stefano/linotype/news/110/
- O’Reilly’s onJava Blog: http://www.oreillynet.com/onjava/blog/2007/11/dalvik_googles_tweaked_nonstan.html
In Art Worlds Howard S. Becker makes several observations about the influence of standards and conventions in arts. The following post consists of a set of random thoughts about the topic of standardisation in the context of computing.
Software development, especially open source, shows a very strong commitment to standards and interfaces (think of the efforts made by the W3C for example). Hardware development, however, has only partly adopted this stance (e.g. USB). This is, for instance, why you might not be able to reuse your A/C adapter on a different notebook but why your printer continues to work (given that an appropriate driver is available for the respective operating system). For some products, it seems that introducing standards is not of interest for the industry as it might have unwanted effects on the competitiveness.
Wikipedia defines standardisation as “a universally agreed-upon set of guidelines for interoperability”. Whereas standards are generally defined by verbose specifications, interfaces merely define communication mechanisms between different technologies. By adhering to a standard or an interface, software can be guaranteed to be able to interact with a all objects (e. g. an operating system) implementing the same standard. Although this is generally desirable, standards and interfaces restrict the freedom of the developer, by limiting them to the use of supported methods.
Some of these interfaces are built into the software engineering equipment, like a compiler which only takes a specific programming language (or syntax) as input and produces only one output which might only be available for a specific processor type. Of course, this might not be such an issue today as many compilers for many programming languages exist.
Going back to the basics of programming, think of Turing completeness:
“An abstract machine or a programming language is called Turing complete […] if it has a computational power equivalent to a simplified model of a programmable computer known as a universal Turing machine. […] Thus, a machine that can act as a universal Turing machine can, in principle, perform any calculation that any other computer is capable of. […] All modern computers are Turing-complete in this sense.”
Of course, no programmer would consider Turing completeness as a restriction. They have learned to program this way and have thus internalised and completely embraced its principles, for them thinking in these terms seems like the only way of writing programs. For the uninitiated nonprogrammer though, Turing completeness might be seen as a severe restriction.
In the terms of Bruno Latour, the Turing machine, computers hardware, operating systems or compilers are so-called black boxes:
“The word black box is used by cyberneticians whenever a piece of machinery or a set of commands is too complex. In this place they draw a little box about which they need to know nothing but its input and output”
Bruno Latour, Science in Action (1987), p. 2.
A black box is therefore an entity which hides the details from the world and is only defined by its in- and output. In computing, this condition is also often referred to as transparency. In his work, Latour analyses the internals of the black boxes by going back in time to moments before the black boxes were defined. He shows which decisions were made in order to define their theory, how the theory was consequently accepted by a scientific community and how this acceptance finally led to the definition of a black box, that is the acceptance of it as a scientific fact.