NeXT

2002.12.28

Si on construisait une lignée généalogique des interfaces graphiques (GUI) en partant du Sketchpad et en arrivant aux machines d'aujourd'hui, elle pourrait ressembler — de mannière très schématique — a quelque chose comme ceci :

Sketchpad > oNLine System (NLS link:online_system_nls) > Xerox Alto > Macintosh > NeXT > Mac OS X/Windows Vista

Au point terminal de cette chaîne, il y a de nombreuses innovations graphiques actuellement en cours, surtout avec l'arrivé de Windows Vista qui rattrape enfin la transformation commencé par Mac OS X quelques années auparavant. Il s'agit de leur transformation en des machines à fabriquer des hypersurfaces hautement dynamiques (au moins en trois dimensions). Car ces deux machines ont commencé à annoncer enfin l'arrêt de la toute-puissance de l'interface plane, si tentés sont-elles actuellement par l'idée d'une transformation des interfaces graphiques en de véritables systèmes d'immersion multimédia, plus proche des jeux vidéo en trois dimensions que toutes les plateformes d'interaction graphique qui les ont précédés. Nous ne voulons pas dire par-là qu'il y aurait une perte — notre analyse n'est nullement morale — mais transformation il y en a, si ce n'est que (peut-être) une mode passagère. Nous verrons.

Il en reste que dans notre chaîne généalogique il y aurait une terminaison à marquer juste avant cette fin, de cette époque de l'interface plane. Le système Mac OS X d'ailleurs n'est rien de moins qu'une drôle de mélange des deux systèmes qui l'ont précédé, c'est-à-dire le Macintosh conçu en 1984, et les stations NeXT qui ont débuté vers 1988. Le véritable arrêt de l'ancienne époque sera alors une machine très peu connue, mais aujourd'hui utilisée par des millions de personnes sans le savoir, c'est-à-dire la plateforme NeXT qui s'est transformé étrangement en l'actuel Mac OS X.

Pour nous, la technologie la plus importante de la machine NeXT serait de loin son environement de développement des interfaces graphiques, Interface Builder :

NeXT, Interface Builder

Comme MacPaint avant lui qui illustrait si bien la philosophie graphique du logiciel système du Macintosh, Interface Builder illustre la modularité accrue du NeXT. C'est une machine à la fois simple et complexe : les composants sont simples mais s'enchaînent dans des ensembles complexes. L'ensemble de la machine est construit alors comme une grosse boîte à outils remplis d'objets de programmation qui prennent leur sens dans la multiplicité : au lieu d'appeler des « fonctions » qui font le travail directement (comme sur le Macintosh), la machine NeXT poussera le programmeur à plutôt enchaîner ensemble des composants et sous-composants. Ce sera l'enchaînement et non pas le composant qui donnera le résultat voulu.

Interface Builder joue sur cette modularité de la machine en proposant {au|à la} programmeu{r|use} des objets graphiques programmés à sa place. Ici le terme d'objet corréspond enfin à quelque chose de tangible : un bouton, un « slider », un champ de texte, une sous-fenêtre, une case à cocher, etc. Mais ces objets ne sont pas de simple effets de surface comme sur le Macintosh via MacPaint : il s'agit de véritables composants actifs de la machine, des sous-machines à l'intérieur de la machine. Quand on pose un bouton sur l'écran dans Interface Builder, nous n'activons pas du code informatique qui execute un dessin, nous activons une module graphique qui contient à la fois le dessin, des variables de l'état du dessin (« ouvert ? », « fermé ? ») et le code qui sait ce qu'il doit faire quand le joueur fait un clic dessus. C'est un complexe qui gère et simplifie la complexité de la programmation pour {le|la} programmeu{r|se} en créant une couche d'abstraction supplémentaire appelé un objet. C'est dans ce sens que les machines NeXT s'inspirent de l'interface graphique du Xerox Alto : tout ce qu'on voit (ou presque) de la machine est un composant programmable, et la plupart du temps un sous-composant d'un autre composant, et ainsi de suite de manière récursive.

Les clients du NeXT vennaient principalement du monde des affaires, et surtout des entreprises qui avaient besoin de gérer des grosses bases de données : la modularité que nous venons de décrire comptait également pour des objets non-graphiques. Mais bien que la machine NeXT savait gérer des informations intangibles, ces machines étaient également connues pour leur partie tangible : le graphisme. Les systèmes NeXT étaient conçus dès le départ comme des machines graphiques de grande qualité et facilement programmables dans ce but.

Pour illustrer cette avantage, on pourrait parler de sa technologie « Display PostScript », qui permettait d'afficher les pixels sur l'écran. Dans « Display PoscScript », l'écran et l'impression faisait parti du même système d'affichage basé sur la technologie PostScript : quand on dessinait une ligne sur l'écran, la même ligne pouvait s'imprimer physiquement de la même façon et sans perdre de la qualité, car les deux formats n'étaient rien d'autre que deux résolutions d'une même module de programmation (ou objet graphique).

Une telle combinaison : modularité programmatique + modularité graphique faisait des ces machines un crayon puissant pour des artistes-programmers, ou devrait-on dire pour le plus célèbre des artistes-programmeurs : John Maeda. Si les machines Macintosh et Amiga ont inventé le multimédia, NeXT aura quelque chose à voir avec l'invention de John Maeda. À vrai dire, Maeda était plutôt seul à exploiter cette machine ou en tout cas le seul à l'avoir poussé si loin et développer une écriture artistique avec elle. Mais son écriture est si intimement lié à cette machine, surtout dans ses travaux imprimés, qu'on a l'impression qu'il aurait au moins fallu l'inventer pour montrer l'intérêt de la machine. A travers des travaux comme Infinity, son Shiseido Poster, Mona Too, Copic TV, voire même des travaux plus récents comme Veggie Soup, ou des travaux qui n'ont pas été compilés directement sur des machines NeXT comme Nature — tous ces travaux sentent l'empreinte des stations NeXT et surtout l'empreinte de la modularité poussé qu'apporte Interface Builder au processus de développement.

Dans son livre Maeda@Media, John Maeda présente une série d'illustrations présentées en forme de plaquette lors de son exposition Design Machines (cf. Maeda@Media p.34-51) en 1995 :

Pour l'exposition « Design Machines », j'ai crée une plaquette de format B4 illustrant les compexités engendrées par l'ordinateur. Une des animations de l'exposition était un ordinateur NeXT qui convertissait tout ce qui se trouvait devant lui en caractères de couleur.
– John Maeda ; maeda@media ; 2000 ; pp. 34

Ces plaquettes incluaient également une sorte de manifeste d'un poil trop naïf, ou en tout cas où on sentait encore sa fascination pour la machine :

Nos mains constituent le principal obstacle à la progression des arts graphiques numériques. Leurs limites physiques nous empêchent d'explorer ce que nous ne pouvons pas construire. Exploitez le potentiel de la machine à concevoir {the design machine}. Ses mains méta-mécaniques ne se fatiguent jamais. Concevez le prisme à travers lequel la machine va traduire l'information brute dans votre propre langage visible. Echappez à la monotonie de la démonstration. Engagez-vous dans un pur discours stylistique. Manipulez de totales abstractions formelles libres de toute réalité tactile. Avec la machine à concevoir {the design machine}.
– John Maeda ; maeda@media ; 2000 ; pp. 36

Accompagnant cette reproduction, on trouve également dans ce livre des captures d'écran suivantes des programmes qui ont servi à générer les illustrations de ce pseudo-manifeste :

John Maeda, Maeda@Media, p.51

Si on se repère à l'icône en bas à droite dans la dernière illustration, son « design machine » est — sans conteste — une machine NeXT. Mais pour ceux qui connaissent cette technologie, on n'a nullement besoin d'icône pour reconaître la logique. En regardant plus près, on voit partout la logique d'Interface Builder et les objets du NeXT à l'œuvre : une fenêtre graphique centrale (« NXView » dans le langage de la machine) avec une sous-fenêtre (« Panel ») remplis de sliders (« Slider »), de petits champs de texte (« TextField »), et de boutons (« Button »). Ces derniers, d'ailleurs, Maeda nomme souvent (et encore aujourd'hui) « Just do it! » ou « Do it! », qui souligne encore l'idée que la machine — la machine à concevoir {the design machine} — apporte quelque chose de fondamental, ou en tout cas de caractéristique, dans la fabrication de l'image : on lui demande, avec un peu d'humour, d'aller faire le besogne à notre place (« Just do it! »).

Comme nous avons mentionné plus haut, dans une machine NeXT — et ceci est encore vrai pour Mac OS X — ces « Button », « TextField », ou « Slider » ne sont pas des objets purement graphiques, ce sont de véritable programmes modifiables. Un objet graphique « Button » contient par exemple les variables suivantes :

{{-textColor
-setTextGray:
-textGray
-setBackgroundColor:
-backgroundColor
-setBackgroundGray:
-backgroundGray
-setBackgroundTransparent:
-isBackgroundTransparent
-setBezeled:
-isBezeled
-setBordered:
-isBordered}}

Chacune des variables peuvent être modifiées par le programme.

Mais plus important pour nous : ces sous-programmes peuvent également être modifiés par le joueur de l'interaface. Quand un joueur appuie sur ce bouton, ou sur un « Slider », cet objet peut répondre en activant une fonction qui s'écrit dans le syntax NeXT :

{{mouseDown:(NXEvent *)theEvent}}

Autrement dit, le bouton est réversible : le programme peut le modifier autant que le joueur. Il s'agit de sondes extrêmement puissantes, car elles déscendent directement dans son code. Ce qui signifie que ces interfaces de John Maeda — que nous pouvons explorer également sur My Desktop Diary — montre en réalité les variables internes de son programme, et représentent la partie expérimentale modulaire de ses images. Quand John Maeda construit une fenêtre de dessin accompagné d'un « Panel » de contrôle sur sa machine NeXT, il est en réalité en train d'exposer les variables de son programme. Dans l'illustration, il y a par exemple les « TextField » suivants : « String », « Typeface », « Size », « X-Adjust », « Y-Adjust », etc. Quand John Maeda change ces valeurs et appuie sur « Just do it! », son programme prend en compte ces nouvelles valeurs et dessine en conséquence. Au lieu de construire un programme entièrement avec du code écrit, John Maeda du coup peut construire entre les deux, créant des interfaces programmation intermédiares entre son code et le résultat. C'est l'introduction d'une forme de meta-programmation qui nous permet d'ailleurs de bien saisir la particularité de sa méthode de construction des images : c'est-à-dire une méthode basée sur des itérations succéssives et manipulables par des variables hautement modifiables, y compris par la main. La même main que John Maeda insistait constituaient le premier obstacle à la progression des arts numériques.

cf. Nature, My Desktop Diary