Una característica común y muy usada en los escritorios de los sistemas operativos modernos (Windows, OS X y freedesktop) es el portapapeles.
Normalmente hay 3 instrucciones básicas para usarlo: copiar, pegar y cortar. De ellas, las 2 primeras funcionan prácticamente igual en todos los escritorios modernos y en cualquier contexto o programa; pero la instrucción cortar tiene algunas peculiaridades que dependen tanto del sistema operativo como del programa que esté activo al invocarlo.
Este artículo trata de la instrucción cortar, su origen, sus distintas implementaciones (en varios sistemas operativos y programas), y lo que opino de ellas ahora que se todo esto.
¿De donde viene el portapapeles?
Con un poco de wikipedia (clipboard, "cut, copy and paste") no se tarda mucho en descubrir que la invención de este patrón de trabajo se atribuye a Lawrence Tesler (también en wikipedia), que como podéis ver tiene un currículo impresionante.
El IEEE Spectrum (publicación principal del Instituto de Ingenieros eléctricos y electrónicos), lo entrevistó en su artículo "Of Modes And Men", donde hay un par de pistas sobre la experiencia de Tesler con el portapapeles; traduzco del artículo:
[...] se puso a desarrollar Gypsy, un sistema de procesado de texto sin estados modales que fue el primero en usar elementos que ahora nos son familiares: la función de cortar-y-pegar para mover texto, un formulario para escribir términos de búsqueda, selección de texto manteniendo pulsado un botón del ratón y arrastrando el cursor, tipografías en cursiva y negrita, e impresión lo-que-ves-es-lo-que-hay.
y del apartado "Larry's lexicon" (el vocabulario de Larry):
Cortar-y-pegar: En 1969 Tesler se ofreció voluntario para ayudar a crear un catálogo para la Mid-Peninsula Free University del Área de la Bahía. Él y Jim Warren, fundador de la feria de ordenadores de la costa oeste, hicieron la fotocomposición para ese catálogo. Por aquella época Tesler vio una demo de una instrucción de ordenador que te permitía recuperar algo que habías borrado. La instrucción se invocaba con "Escape P punto y coma" (o algo igual de farragoso). Varios años después, cuando Tesler estaba escribiendo en Xerox PARC un libro blanco sobre el futuro de la informática, recordó aquellas experiencias para predecir que serías capaz de "cortar y pegar" en los documentos de ordenador
Igualmente interesante es el documento `"Gypsy", Una investigación del sistema de edición asistido por ordenador de Ginn` (enlazado desde el artículo sobre Gypsy de la wikipedia) el documento escrito por Betty Burr y Ralph Kimball sobre la experiencia en la implementación del programa desarrollado por Tesler y Tim Mott en el Xerox PARC. Primero en la página 23, que aunque no parezca relacionado, es muy importante:
Miedo a perder el trabajo y la presión de las fechas de entrega
Todos estamos bajo una cantidad de presión increíble, y además tenemos que pelearnos con un sistema experimental. . . .
Creo que lanzaría la puta máquina por la ventana si me hace perder el trabajo del día.
La fiabilidad del sistema era un asunto muy emocional entre los editores de Ginn y fue mencionada por la mayoría de los entrevistados. Los editores pidieron repetidamente una forma más a prueba de idiotas de protegerse de las pérdidas de trabajo debidas a futuros fallos del sistema. Si el editor pierde un archivo, debe reconstruir mucho trabajo de memoria, ya que gran parte del proceso de edición requiere elaborar juicios subjetivos. Como las fechas de prensas, artistas, y publicación del libro se han calculado en base a las fechas de entrega del editor, estos fallos son muy serios.
Experiencias tempranas con el sistema, donde se perdieron de verdad algunos archivos, parece que han dejado a los editores con una preocupación omnipresente. El grado de preocupación estaba inversamente relacionado con la cantidad de experiencia con el sistema; el aumento en la fiabilidad ha convencido a los usuarios continuos que pueden tener más fe en el sistema.
Y luego en la página 25, relacionado mucho más directamente con el portapapeles:
En Gypsy, el espacio donde se almacena todo lo que se borra se llama 'cubo de basura' [wastebasket]. Los usuarios tomaron el nombre demasiado literalmente y no pensaron en ese espacio como almacén de material editado sino como basura que no podía ser reutilizada. Pocos editores usaron efectivamente el cubo de basura para almacenar material temporalmente y pegarlo después en el manuscrito. Esto es debido parcialmente a la extraña naturaleza de la interacción con el cubo de basura y la escasa visibilidad de los elementos allí almacenados. El tamaño inicial del cubo de basura es de sólo dos líneas, así que cuando se corta una gran cantidad de texto, sólo se muestran las últimas dos lineas de texto. La limitación de las dos lineas es especialmente mala si el editor debe revisar el cubo de basura o manipularlo de alguna manera antes de hacer el pegado. Había disponible una instrucción para agrandar el cubo de basura, pero se perdió de alguna forma entre los implementadores de Gypsy y los editores, ya que ninguno de ellos sabía de su existencia.
Entonces tenemos que la primera implementación del portapapeles fue realmente transformar la instrucción borrar+buffer de seguridad (a modo de edición no destructiva que, como dijo Tesler, ya existía en otros sistemas) en la papelera, y que la instrucción cortar ha sido malentendida por bastante gente desde el mismo momento de su concepción; según el documento sobre Gypsy, debido a la poca visibilidad del 'cubo de basura'.
En la siguiente iteración del trabajo de Tesler y compañía (Lisa, ya en Apple), las funciones de edición no destructivas probadas en Gypsy se separaron en tres funciones que han permanecido hasta la actualidad sin demasiados cambios:
- La instrucción de deshacer, que se usaba principalmente dentro de las aplicaciones, y también era deshacible con lo que además funcionaba como rehacer y, evidentemente, sólo permitía un nivel de marcha atrás. Deshacer no funcionaba con el sistema de archivos más allá de las operaciones con el texto de los nombres de los documentos.
- La papelera propiamente dicha que, al igual que hoy en día, sólo estaba disponible para el sistema de archivos: el contenido borrado de las aplicaciones no era recuperable salvo con la instrucción de deshacer. Y el espacio para archivos era limitado, borrándose completamente los más antiguos cuando llegaban nuevos y se rebasaba el límite.
- Un portapapeles parecido a las implementaciones actuales, donde la única forma de modificar su contenido es a través de las instrucciones cortar, copiar y pegar de cada aplicación. Además el sistema incluía un visor del portapapeles con su propio icono en el escritorio desde el 1º momento. Este sistema no permitía cortar, copiar ni pegar archivos en el explorador de archivos mediante las mismas instrucciones que el resto de aplicaciones y, al igual que la función de deshacer, actuaba sobre el texto de los nombres de los documentos. Para copiar archivos había dos modos de hacerlo: duplicar+arrastrar, o copiar una referencia+pegar, y para moverlos se hacía en 2 pasos copiando y borrando, o se arrastraban con el ratón.
Todo esto y más podéis probarlo vosotros mismos en cualquier ordenador de hoy en día con el emulador LisaEm, y con las ROMs de Lisa Write y del Lisa Office System, así que no me extenderé más.
Implementaciones actuales de cortar (y pegar)
Después de Lisa, el portapapeles y la papelera no han cambiado prácticamente. Aún así voy a repasar cómo parece que se comporta la instrucción de cortar según varias implementaciones actuales en diversas aplicaciones.
- Implementación genérica en la mayoría de programas (textedit/notepad/word/pages, gedit/kate, photoshop/gimp, audacity, etc) tanto en Windows, OS X, como freedesktop
cortar = copiar al portapapeles + borrar el original pegar = copia lo que haya en el portapapeles al documento actual
- Implementación particular de los exploradores de archivos en Windows, y escritorios basados en freedesktop
cortar = copiar al portapapeles + marcar pegar = pegar + borrar el original
- Implementación particular de Finder (explorador de archivos de OS X)
cortar = ∄ (está desactivado)
Además de estas, me gustaría destacar una variante interesante que también he visto:
- Implementación particular en varias hojas de cálculo (MS-Excel, OpenOffice.org <v3.0 , Google Spreadsheets) para los valores en las casillas de las tablas
cortar = copiar al portapapeles + marcar pegar = borrar el original + copia lo que haya en el portapapeles al documento actual + actualizar formulas si es el primer pegado desde que se cortó.
- Implementación particular en Numbers (hoja de cálculo de Apple) para los valores en las casillas de las tablas
cortar = copiar al portapapeles + borrar el original pegar = copia lo que haya en el portapapeles al documento actual (no actualiza formulas) marcar para desplazar = marcar desplazar = mover a la nueva posición lo que está marcado + actualizar formulas
Probablemente haya alguna más, pero tampoco voy a extender esto más, que ya me está quedando muy largo.
Conclusión
¿Cómo es posible que tanta gente lo esté haciendo tan mal?.
A ver, la idea de cortar y pegar que parte de la forma de mover las cosas en el "mundo analógico" anterior al ordenador: para desplazar un texto, si no tienes un ordenador, tienes que cortar de algún lado con unas tijeras, y eso implica una destrucción que es físicamente evidente pero aceptable ya que lo que normalmente se recorta no son originales (pensando en el sistema de fotocomposición con el que había trabajado Tesler). Pero si en un ordenador se puede representar el acto de mover de modo coherente, eliminando la capacidad destructiva de cortar (sobre todo siendo tan importante evitar la pérdida de información) y evitando redundancia, ¿Por qué se mantiene una orden destructiva entre un puñado de otras ordenes inofensivas? (especialmente cuando los sistemas actuales ya no están exclusivamente ligados al entorno de edición que las generó originalmente).
Si me preguntan a mi, yo eliminaría por completo la orden de cortar de cualquier rincon del sistema y, si de verdad hay que poner algo en su lugar, pondría algo parecido a Numbers: una orden de 'Marcar/Desmarcar para mover' y una nueva orden 'Mover ítem(s) marcado(s)' (tal vez también haga falta otra para Desmarcar todo, habría que mirarlo), tanto en los administradores de archivos, como en el resto de programas. Nadie debería usar 'mover' como sinónimo de 'borrar', ni a propósito, ni accidentalmente (aunque quitar 1 entrada de menú para poner 3 en su lugar, tal vez sea un poco demasiado, ya digo que habría que estudiarlo más a fondo, por que la implementación de la hoja de cálculo de Apple tampoco me acaba de convencer).
No se si a estas alturas, Microsoft, Apple, o Freedesktop se van a poner a revisar el concepto y su implementación, aunque por lo pronto, creo que Apple va en una dirección aceptable con su implementación en Numbers, que espero extienda a otras aplicaciones. De momento seguiremos trabajando con la fuerza de la costumbre, esperando que algún día alguien la anule.