2009/01/10

Cortar

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.

2009/01/03

La historia de un pegote

No hace mucho tiempo, vengo escuchando de un juego de esos que no están respaldados por ninguna grán compañía, que parece que se está convirtiendo en el último bombazo por toda la red. El juego en cuestión es el Wold of Goo.

Según comentan en una entrada navideña del blog de la minicompañía (2 personas), estos son los laureles recibidos:

  • Mejor juego para Wii, por IGN
  • 2º mejor juego del año, por Gamasutra
  • Juego del año, por Rock Paper Shotgun
  • Juego del año, por Gametunel
  • Y, aunque no es un premio concedido como tal (pero sube la autoestima como si lo fuera), no hace mucho alcanzaron el 2º puesto en ventas en Amazon.com (justo por detrás de WoW, y por delante de AAAs como Spore, Left 4 dead, y Fallout 3)

Los enlaces si quereis echar un vistazo están en la entrada navideña que he enlazado antes, en el blog de 2dboy, que hoy no estoy muy hacendoso.

Conforme veía el revuelo, por el nombre me acordé de un juego-experimento que vi hará 2 o 3 años llamado Tower of Goo y, tras bajar y probar la demo para Mac de WoG, me quedó bastante claro que es una evolución del ToG.

La mecánica básica es similar: construir una estructura a base de simpáticos pegotes; y los gráficos básicos también son muy parecidos: redondas bolitas pegajosas e inquietas y estructuras gelatinosas que se tambalean como flanes; pero ahí terminan las semejanzas, en WoG han añadido unas cuantas entidades secundarias (p.ej.: el pintor de carteles, o la Goo corporation), gran variedad de pegotes además de los negritos del experimento inicial, y un "mundo de los pegotes" con la típica (biblia, abe's oddisey, lemmings, etc...) historia del éxodo (típica, pero muy bien llevada, al menos en la demo que he probado). Además hay una 2ª versión del experimento, Tower of Goo Unlimited, donde el escenario es infinito en 3 direcciones (para abajo no, evidentemente).

En definitiva, y a pesar del aviso que el autor ha dejado en ambas entradas del Experimental Gameplay Project, que traduzco:

NOTA IMPORTANTE por si te preguntas que relación hay entre esto [Tower of Goo] y World of Goo. Hice este pequeño prototipo, "Tower of Goo", hace algunos años como experimento en unos pocos días. Tiene problemas ¡y ni siquiera funciona en algunas máquinas!. Así que, por favor, no pienses que es representativo de World of Goo (sólo se aprovechó la idea básica). World of Goo es mucho más amigable, estable, ¡y relleno de delicias!

Me parece que es interesante que, si os ha gustado World of Goo (y teneis un windows o sucedaneo compatible), le echeis un vistazo a modo de 'arqueología de un buen juego'.