Exaptation in software design

Why is Mnemonica so versatile? Using exaptation in software design

Forms and functions

“Adaptation” is a fundamental concept in the theory of evolution. A process that through natural selection has led a certain character of an organism to assume a given form that performs a useful function for survival with respect to the environment in which it operates. “Adaptation”, though, is also the word to indicate the character itself: for example, bird feathers are an adaptation for flight.

Adaptation is not all

Recently, however, it was realized that ambiguity led to confusion. Furthermore, not every feature of living things comes from a process that was determined to obtain just that. Going back to the above example: bird feathers have also been found on an ancestor of birds, Archaeopteryx, which did not yet possess a complete structure for flight, so originally they must have had another function for which they were an adaptation, e.g. thermal insulation. The way feathers help flight, then, is not a proper ad hoc adaptation.

In the complexity of organisms made of billions of cells, evolved over billions of years, the degree of randomness accumulated and distributed in organisms is certainly remarkable and it should be almost obvious that not all characters are made for something. For example, millions of repeated segments have been discovered in human DNA that are unlikely to have a determined function, they are more likely to have been generated by occasional transpositions.

What is exaptation?

To refer to these phenotypic traits that did not arise for a given function but were recruited into that function later, in the course of evolution, Stephen J. Gould and Elizabeth S. Vrba coined the term “exaptation”, exactly 40 years ago. Here the finalistic prefix ‘ad’ that we find in ad-aptus is replaced by ‘ex’, indicating a further derivation, a fortunate combination of chance and necessity that takes advantage of what it finds at hand (even foreign material, such as viruses) and hijacks it to other purposes.

An example of exaptation is the sutures of the human skull bones. Darwin himself noted that although they favor the delivery because they allow the skull to pass more easily, they are also found in birds and reptiles that have only to come out of an egg and therefore can not have appeared for that purpose.

A very interesting exaptation is that proposed for the three ossicles of the human middle ear that serve to transmit vibrations from the eardrum to the auditory nerve. According to V. S. Ramachandran they were the bones of the jaw of reptiles, which has more articulations than ours to widen the mouth enough to gulp down large prey; given their position in reptiles, very close to the ground, these bones could already have begun to transmit vibrations that indicated the arrival of a predator, thus performing a proto-acoustic function no less useful.

Software against living beings

Unless you are an adherent of Creationism, the relationship between function and use is quite different in the domain of technology and software development, compared to natural evolution. The reason is that there are no finalized projects in nature, only intertwined chemical-physical processes occur that continuously generate forms-functions and mutual opportunisms driven by survival. Software on the other hand responds to a purpose, each of its functions is designed for a use case, or to be part of a larger function that will serve someone to do something. This something, i.e., purpose, is determined by requirements analysis.

Both in this preliminary part, and after release into production, when the software does the work for which it was designed, the dimension of engineering, analysis, and design, which had to translate almost immediately into the formal domain of programming languages and the functions that can be realized with them, must meet human beings—a living realm that is actually the result of natural evolution.

These contact points are notoriously problematic and very delicate: detecting the purposes of humans operating in a social domain with the approximation and nuance inherent in living things, and translating these desiderata into functional specifications, E-R models, data architectures, interfaces, algorithms that process data and generate interfaces, is very close to art. It must be nurtured by considerable sensitivity and experience, to fill the gaps that humans have in defining their goals, in rationalizing and verbalizing their ways of doing things, their practices. For this reason, knowing firsthand, through long familiarity, the operational field in which one is going to intervene with software mediators is a necessary condition.

Form-function in the film production environment

When software becomes part of the extremely complex socio-technical environment of film production, in which formal design elements such as production plans are superimposed on many random and unforeseen factors, and the mercurial behavior of individuals who guide the creative parts of the process, it is essential to maintain a certain degree of indeterminacy so that the functions of the software are not rigidly binding on those who use it but leave room for interpretation, for adaptation to various situations. This entails, on the one hand, that the entities be designed in a sufficiently general way, so that they can then be specialized in a variety of instances – e.g. the classes of users, with their capabilities – and on the other hand that some functions are overloadable, that is, they can be used for different purposes, albeit without falling into generality.

It is useful here to take a lesson from evolution: let some features of the software be exapted by people who use them every day, as a prosthesis, so that the software can cover a wide range of use cases without overfitting. In Machine Learning this term refers to the behavior of a model that makes excellent predictions on the training data but totally fails on the rest. In our case, overfitting would mean perfectly tracing the real process up to a certain point, and becoming unusable or even annoying outside that interval. Not to mention that by its nature no software can completely adapt to life as it is lived.

Mnemonica: versatility by exaptation

At Mnemonica we followed precisely this line as we are quite familiar with the complexity of film production as a working environment. We know how important, in the development of great audiovisual work, are tight deadlines, course changes, direct contact, hearsay, word of mouth, the inspiration of the moment, the variety of individual characters, and respect for hierarchies. In fact, Mnemonica is an instrument of unique versatility, besides being easy to use. It has proven and continues to prove it in its evolution in contact with its human users.

As an example, we saw this versatility by exaptation happen in casting. The combination of Bins and various types of Tags, which had nothing to do specifically with casting, allowed casting people to exploit Mnemonica in a very functional way to classify and easily access the 14,000 clips of the casting of Anna by Niccolò Ammaniti.

Subsequent audits with them have suggested that for the specific purposes of casting it would be useful to have thumbnails on each Bin, with the candidate’s photo, to facilitate browsing search. But this is a development we can easily integrate into the platform, as it is but a small addition to an exaption of what was already there. Further use of features that can be improved with a minimal design increase.

The latest remarkable example is offered by the adaptation of Mnemonica as a Film Festival platform. There was no need to create a new role, a new type of user in the platform, with all the changes this would entail in the back-end and front-end source code. We simply leveraged the only external user role we had, Guest, which was designed from the beginning with sufficient generality, as said. Then we relied on the Screening Rooms we had, achieving with minor modifications two new types of Rooms in which Guests have more power: they can upload and download content, either as freely as a Team member, or in assigned and isolated areas.

In this way, through exaptation and minimal intervention, Mnemonica has become a tool that can not only help Festivals to manage large amounts of submissions but also, more broadly, enable a whole different category of collective works that involve, unlike normal productions, collecting a lot of exogenous material coming from many external subjects. This is the case with crowdsourced projects, such as Ridley Scott’s Life in a Day or Gabriele Salvatores’ Fuori era primavera.

The gains don’t end there. Of course, the functions brought about by exaptation convolve with the existing ones and create a more powerful whole. Producing a film on Mnemonica extends seamlessly to the presentation of the same work at a festival, or to the archiving of the finished product. Archiving, by the way, is one more case of exaptation which we will talk about in a future article.

Human-centered design, the next level

The concept of exaptation applied to software development has some noteworthy outcomes on human-centered design, an honorable and now classical concept that has gradually faded into a kind of hype. Software development practice usually takes a formal, measurable engineering approach to problem solving. When it comes to humans, though, especially in creative fluid social enterprises, problem solving has more often to do with formless and unmeasurable aspects like the ones mentioned above.

In these cases, you will want to allow some degree of randomness and under-specification in the system so that it can “take the human perspective” on a different level: not by striving to implement some “human spirit” into the stranger domain of software, which is a desperate task, but rather leaving it to the combination of software and communities of its users. Nevertheless, it is the aim of sensible design to understand where to loose the bolts and where to tighten them.

The use of exaptation in software design and development is intended by us to lift the human-centered design concept to a higher level also in another way: i.e., by reunifying it with the wider biological study of living beings, that can better determine its definition and scope in the future.