Actualidad Macintosh en español

 

 


Indice de Foros
Temas activos
Mensajes privados
Downloads
Links / Buscador
Compraventa



Auténticos artículos
coleccionables de Apple


Macu te necesita

Vótanos en la revista ReD


[an error occurred while processing this directive]
Cómo se hizo ClockWorksMB
Una herramienta software para crear herramientas software, por Benoit Joossen

27/8/2004

Este fue el punto de partida de ClockWorksMB. A los autodidactas, nos gusta emprender tareas hercúleas, pero sobre todo originales y novedosas, porque al no haber sido "formados" académicamente, se nos ocurren barbaridades. ClockWorksMB es uno de estos proyectos que solamente puede salir de un reducido grupo de chiflados, en este caso un servidor.

Os voy a explicar qué es ClockWorksMB, pero primero porqué lo hice.

Prólogo: Dos polos opuestos

Creo que cada uno de nosotros podría sacar mucho más partido de su ordenador si existiera un punto intermedio entre dos extremidades opuestas :

A mi izquierda tenemos al programador, que domina los lenguajes de programación y las librerías del sistema operativo. Éste es capaz de hacer cualquier cosa con el ordenador. Pero es un bicho raro con varias licenciaturas y miles de horas de experiencia a cuestas. Utiliza un programa llamado IDE (Integrated Development Environment) para ayudarle a componer su proyecto. Pero esto no le exime de teclear miles de líneas de código para construir algo relevante. Generalmente, trabaja por dinero, y sobre todo: no utilizará el software que está creando.

A mi derecha tenemos al usuario creativo, adiestrado al uso de las herramientas a su disposición : las aplicaciones que ha creado el programador, o más bien lo que queda de ellas después de pasar por el filtro de la mercadotecnia. La mayoría de los usuarios se conforma con lo que las aplicaciones permiten hacer, incluso muchos de ellos solamente utiliza un fracción de estas posibilidades. Pero algunos, que a partir de ahora llamaremos los creativos, se sienten frustrados porque pueden visualizar perfectamente lo que quisieran hacer, además saben que está dentro de las posibilidades de un ordenador hacerlo, pero les falla el medio para realizarlo : el software.

A estos les quedan tres remedios :

  1. Olvidarse de la idea brillante y pasar por el tubo.
  2. Hacerse programador.
  3. Pagar a un programador para realizar su idea.

Seamos realistas, la brillante idea se quedará en el tintero, porque ningún profesional creativo tiene tiempo ni recursos suficientes para hacerse programador o contratar uno.

El precursor

A finales de los setenta apareció un ovni en el mundo de la informática : Visicalc, la primera hoja de cálculo, el bisabuelo de Excel. Fue una revolución, por varias razones : primero, Visicalc daba por primera vez al "no-iniciado" la posibilidad de programar el ordenador, para realizar los cálculos que necesitaba. Prácticamente sin esfuerzo, cualquiera podía utilizar la hoja de cálculo. Segundo, la hoja de cálculo fue quizás el primer hijo propio del ordenador, porque nada comparable preexistía (en cambio, el tratamiento de textos era la evolución lógica de la máquina de escribir). Tercero, Visicalc era la coartada perfecta para que el ordenador personal entrara en el mundo profesional, y se puede decir que hizo despegar la informática.

Visicalc fue un producto extraordinario que consiguió colocarse justo en medio de estas dos extremidades : programador y usuario. La gran virtud de Visicalc era la sencillez de uso. Utilizar celdas numeradas para almacenar valores y formulas, fue una genialidad. Recalcular automáticamente toda la hoja cuando una celda se modificaba, fue otra genialidad. La gente lo encontró intuitivo y se puso a utilizarlo.

Aqui viene ClockWorksMB

Echaba en falta una aplicación que se situase justo en medio de las dos extremidades, y que estuviera orientada a la creación de contenido digital : una hoja Excel que calcule imágenes, sume colores o cree películas. Un verdadero taller digital, donde el creativo puede forjar sus propias herramientas. Un medio que ponga todas las tecnologías digitales al alcance del creativo, sin barreras. En otras palabras, un software que permita al "no-iniciado" crear su propio software de producción digital.

ClockWorksMB es mi respuesta a esta necesidad. El principio de funcionamiento sería lo más sencillo posible, y sobre todo el programa podría ser utilizado por una persona sin conocimientos de programación. Este lapidario pliego de condiciones me llevó a una solución que quizás no sea optima, pero que tiene el mérito de funcionar y de ser ampliable : Tenemos un editor gráfico donde se construye un diagrama con bloques llamados Vignettes (viñetas). Cada viñeta calcula o transforma un elemento, que puede ser un valor numérico, una imagen, una superficie, una curva, un texto, una película, etc ... ClockWorksMB viene con unas 50 Vignettes que permiten construir proyectos complejos y variados. Estas viñetas se conectan entre si para determinar el flujo de procesamiento. En definitiva, tenemos el mismo principio de funcionamiento que Visicalc o Excel, con unas viñetas en lugar de celdas, y un diagrama que relaciona las viñetas entre ellas, al igual que las fórmulas de la hoja de cálculo que recalculan las celdas cuando una de ellas queda modificada. Ejemplos de ello son CubeMovie, TitleVibes, Chat....

Una selección de Vignettes

Capítulo 1- Las joyas de la corona

Pero ClockWorksMB es mucho más que un Excel orientado a multimedia. Al ser el fruto de una reflexión sobre como poner las tecnologías digitales al alcance de los creativos, han ido floreciendo ideas nuevas sobre qué tiene que tener una aplicación de estas características.

Un flujo de trabajo : Invent > Design > Build > Run

Desde un principio estuvo claro que el usuario debía manipular directamente los elementos y visualizar en tiempo real el resultado de su trabajo. El entorno debía permitir un ciclo prueba-resultado muy corto, a ser posible instantáneo. Con esta idea en mente, se creó el entorno Invent. Luego, una vez conseguido el resultado deseado, sería necesario organizar, documentar y consolidar un poco lo recién "inventado" para poder continuar sobre una base sólida. Este es el propósito del entorno Design, que ofrece muchas posibilidades para presentación y documentación del diagrama. La finalidad de ClockWorksMB es crear aplicaciones, por lo tanto existe un entorno Build, que permite crear la aplicación a partir del documento en un click. Y para cerrar el ciclo, existe la posibilidad de correr la aplicación desde ClockWorksMB gracias al entorno Run.

"Separación de poderes"

A parte del diagrama de viñetas que crea el contenido digital, existe un árbol de render totalmente independiente. Esta "separación de poderes" permite representar un mismo elemento, por ejemplo una imagen, en varias instancias, con diferentes opciones. El árbol de render está organizado por ramas y hojas. En cada rama se pueden especificar atributos, por ejemplo color de fondo, transparencia, y estos atributos se aplicarán a todas los hojas colgando de la rama, así como a las sub-ramas. Pero hay más ! Las ramas también son viñetas, y por lo tanto podemos configurar el árbol de forma dinámica, tanto en cuanto a contenido como a atributos. No hay límite sino la propia creatividad del usuario.

ClockWorksMB define un renderer como una viñeta especial que representa el contenido del árbol. A día de hoy, existe solamente un renderer OpenGL, pero en breve tendremos otros renderers basados en la potentes tecnologías Quartz (para render 2D), WebCore (render HTML) y QuickTime. Digamos que un renderer se encarga de componer los elementos creados por el diagrama. El resultado puede ser visualizado en una ventana o bien reutilizado dentro del diagrama en forma de imagén o película.

Una interfaz para nuestro proyecto

ClockWorksMB crea aplicaciones, por lo tanto el usuario tiene que crear una interfaz de usuario. Para eso se utiliza el programa Interface Builder, que viene en el disco de instalación de MacOS X, que también se basa en un editor gráfico intuitivo, y que genera un archivo NIB que se importa directamente en ClockWorksMB.

Cada control de la interfaz, como por ejemplo campo de texto, botón, vista OpenGL o QuickTime, tiene una viñeta dentro de ClockWorksMB que lo representa, y basta con conectarla con el resto del diagrama para que la interfaz cobre vida propia. Casi todos los controles de Jaguar y Panther están disponibles.

Opciones avanzadas

Cuando el documento crece y empezamos a rondar las 50 viñetas, el diagrama puede ser complejo y se empieza a perder la visión de conjunto. Entonces se puede recurrir a los Aggregate. Un Aggregate es una viñeta customizada que sustituye a un grupo de viñetas. De esta forma, se puede dividir el diagrama en grande bloques, transformarlos en Aggregates, y así se aligera considerablemente el documento, y el mismo queda mejor estructurado. Dentro del Aggregate se encuentra un trocito de diagrama que permanece editable.

En definitiva, ClockWorksMB es un software realmente original, construido para enriquecerse poco a poco y durar muchos años.

Tecnologías al alcance de todos

Las aplicaciones creadas por ClockWorksMB se benefician de las tecnologías más avanzadas incluidas en el sistema operativo. OpenGL se utiliza para render, y permite efectos espectaculares en tiempo real. QuickTime es accesible mediante las viñetas MakeMovie y Playback, así es posible crear o transformar películas, y exportar en cualquier formato o codec soportado por QuickTime. Rendezvous también está presente a través de la viñeta Broadcast que permite transferir cualquier elemento de una aplicación ClockWorkMB a otra, por ejemplo para chatear entre dos ordenadores o compartir imágenes, o jugar en red. La arquitectura de ClockWorksMB soporta el multithreading, es decir que una tarea muy pesada se puede dividir en dos y repartir el trabajo entre múltiples procesadores o incluso ordenadores si se utiliza conjuntamente con Broadcast. Basta con dividir su proyecto en varios documentos y construir la aplicación incluyéndolos todos, para tener una aplicación que saca provecho de ordenadores con dos procesadores.

Cada Vignette con un ejemplo, y manuales para todo

En definitiva, ClockWorksMB es un medio que pone estas tecnologías avanzadas al alcance de todos.

Capítulo 2- Delicados equilibrios

Como todo concepto nuevo, ClockWorksMB queda definido por unos puntos de equilibrio más o menos logrados entre fuerzas opuestas. La trampa más obvia era crear un software que no fuera utilizable por "no-iniciados" y que tampoco fuera útil a los "iniciados" :

El balance entre libertad y complejidad

Dejar la máxima libertad al usuario puede ser contraproducente cuando ésta se gana a cuesta de mayor complejidad. Por este motivo se eligió un concepto de diagrama gráfico, evitando así tener que definir formalmente un algoritmo o entrar comandos con el teclado.

El nivel de granularidad de la viñetas

¡Dios! ¿Que es esto? Para cada viñeta se ha tenido que decidir lo mucho o poco que hacen. Por ejemplo, la viñeta MakeMovie no solamente graba imágenes fijas para crear una película, sino que también guarda la película en el disco y la convierte al formato especificado. Se puede hablar de una viñeta muy integrada (granulo gordo). Sin embargo, la viñeta Snapshot que crea una imagén a partir de un render OpenGL, solo hace esto. No da la posibilidad de guardar la imagén en el disco ni de especificar los pixels o numero de colores. Es un granulo fino. Acertar con la granularidad es muy importante, porque si bien ir a más fino siempre abre más posibilidades, también requiere utilizar más viñetas para realizar una acción. En otras palabras, estamos hablando otra vez del balance entre libertad y complejidad.

El grado de generalidad

Por generalidad entiendo la capacidad por parte de una aplicación a hacer varias cosas. Un ejemplo emblemático de poco general es el asistente de configuración de internet, que solamente va haciendo unas preguntas y luego ha terminado. Cuanto más aplicado o menos general sea un software, más fácil es guiar al usuario paso por paso. Decidí orientar ClockWorksMB hacia aplicaciones multimedia, pero conservando mucha generalidad. Para contrarrestar el síndrome de la hoja en blanco, he creado unas plantillas o puntos de partida para los tipos de proyectos más populares, como efecto de transición entre dos clips.

A pesar de todo esto, debo reconocer que ClockWorksMB sigue siendo un poco difícil de empezar a usar. Estoy trabajando en reducir este escalón inicial.

Capítulo 3 - Como se hizo ClockWorksMB

La idea la llevo arrastrando desde quince años o más, desde los tiempos del Apple II y luego del Amiga. Pero solamente empece hace 4 años, cuando mi novia me regaló un iMac DV, eso después de unos diez años sin ordenador en casa. Al principio escribí un prototipo en RealBasic, más que nada para aprender OpenGL y familiarizarme con la programación orientada a objetos. Al cabo de 6 meses, lo tiré todo a la basura y empece otra vez de cero. Esta vez, la plataforma de desarrollo era MacOS X public beta con Cocoa.

Al cabo de 2 meses, tenia un programa que solamente representaba objetos 3D en una ventana. Un par de meses más tarde existían las primeras 3 viñetas, y se podían insertar y conectar. Se podía hablar de un "proof of concept".

La siguiente versión costaría 6 meses más y me llevaría a principios del 2002. Esta vez, no menos de 15 viñetas se podían utilizar. Por primera vez se podían construir Aggregates, lo que supuso un intenso esfuerzo de desarrollo y un interesante estudio teórico. Los Aggregates también volvían el proyecto de golpe mucho más ambicioso. También en esta versión se podían visualizar los elementos en forma de lista. Las acciones corrientes como seleccionar, copiar y pegar estaban implementadas. Los documentos se podían guardar y luego abrir. Por primera vez se parecía a una aplicación, aunque muy fea y rudimentaria. El Undo/Redo estaba funcionando bien, aunque luego se abandono un año más tarde (pero volverá proximamente).

En febrero del 2002, me topé con una de las principales limitaciones del modelo Visicalc-Excel : la autoreferencia. Si uno quiere conseguir algún resultado decente, probablemente necesite utilizar el valor anterior de una viñeta para calcular el valor actual. Esto significa cerrar un bucle dentro del diagrama y está prohibido en el modelo Visicalc-Excel. Entonces, introduje una viñeta especialmente diseñada para superar esta limitación. Era algo muy arriesgado del punto de vista teórico, y de hecho descubrí una inconsistencia grave en el modelo más de un año más tarde, pero que pude tapar.

En semana santa del 2002, resolví otra cuestión importante que llevaba meses dando vueltas en mi cabeza : era viable contar con los Aggregates para todo, es decir estructurar el diagrama y también especificar el render ? Y la respuesta fue no, y inmediatamente tuvo lugar "la separación de poderes". Esto llevó a crear una nueva funcionalidad llamada "autohierarchy" que se encarga de gestionar de forma intuitiva la pertenencia de cada viñeta a una doble jerarquía. Esta última solución tardó más de un año y medio en cerrarse.

Durante el verano, añadí la posibilidad de importar un interfaz de usuario desde Interface Builder, lo que sentaba las bases para poder crear aplicaciones independientes a partir de ClockWorksMB. Es curioso pensar que tardé cerca de dos años hasta entender que ClockWorksMB podía crear aplicaciones, y cerca de cuatro años para que hiciera de esta funcionalidad su mayor reclamo. A veces uno intenta planificar a largo plazo pero queda desbordado por sus propias ideas, y si hace caso a su intuición por encima de su plan, pueden salir cosas interesantes. Desde luego, esto no puede pasar cuando se desarrolla el software dentro de una compañia estructurada, por eso considero que ClockWorksMB es el tipo de software que solamente puede venir de un bala perdida, y también por eso considero como autor del mismo haber transmitido ideas y reflexiones a mis usuarios.

En la segunda mitad del 2002, todos los elementos parecían estar dispuestos para empezar a producir cosas interesantes con ClockWorksMB. Durante este periodo me puse a escribir material documental y didáctico, y también a perfeccionar todos los aspectos del programa, iniciando una larga marcha que me iba a llevar, o por lo menos así lo pensaba, a una release 1.0 a mediados del 2003.

Pero rápidamente me di cuenta que para documentos de una cierta complejidad, digamos a partir de 30 viñetas, el no tener una visión de conjunto del documento era insostenible. Entonces creí el entorno Design, que complementa el único entorno que existía hasta entonces : Invent. Este cambio. así como otros problemas arrastrados desde tiempos atrás, me ocuparon hasta finales del verano del 2003. Ya era hora de reanudar la larga marcha hacia la mítica 1.0, pero de nuevo me deje distraer y dedique un par de meses a desarrollar el multithreading y la viñeta Broadcast, algo perfectamente prescindible para una release 1.0, pero very cool ...

Un render en Invent

Pensé que si ClockWorksMB era una herramienta para fabricar aplicaciones multimedia, no seria de más predicar con el ejemplo, y como signo de madurez de cara a la release 1.0, presentarla junto a dos o tres ejemplos. Estos ejemplos tenían que ser poco complejos (alrededor de 100 viñetas) pero tener el nivel de una pequeña aplicación comercial, para demostrar la clase y la superioridad de ClockWorksMB. TitleVibes y Cubes, los dos ejemplos de aplicación completa incluidos en la paquete de ClockWorksMB, fueron terminados en marzo del 2004, después de pasar un hito importante : en enero, había conseguido extraer de ClockWorksMB lo mínimo imprescindible para correr un documento fuera del software. El reducido programa pesa solo 700kB, comparados a los cerca de 15 MB de ClockWorksMB. Era el elemento imprescindible para poder crear aplicaciones independientes a partir de un documento. Se puede comparar este trabajo a la separación de siameses en un quirófano.

Pero si uno quiere publicar algún día un programa, ha de fijar una fecha de release inamovible. Elegí el 17 de mayo, que era la fecha tope para poderse presentar aux Apple Design Awards. ClockWorksMB iba a salir a la calle el 17 de mayo, caiga quién caiga. Los últimos dos meses fueron muy duros, porqué para sacar un producto hay que dar un cierto nivel de fiabilidad y de acabado, pero sobre todo hay que documentar el programa de cara al usuario : sistemas de ayuda en línea, dossier de ayuda, páginas webs, etc ... Los últimos tres días fueron de infarto, pero al final llega la hora y uno tiene que tomar decisiones drásticas : en la última noche cayeron 5 viñetas de la release, y tres bugs considerados importantes quedaron sin solucionar. Y el día amaneció con la release 1.0 colgada en Internet.

Entre mayo y julio, he sacado las versiones 1.1 y 1.2 de ClockWorksMB que profundizan un poco en los aspectos más necesitados : material didáctico y puntos de partida. También he podido constatar que CubeMovie, una aplicación hecha con ClockWorksMB, que hice en pocas horas, era perfectamente vendible como software comercial, e incluso facturaba más que ClockWorksMB !

Capítulo 4- Presente y futuro

A ClockWorksMB le quedan muchos años de desarrollo por delante. Este software se encuentra en plena crisis de adolescencia, y probablemente la próxima versión tendrá la voz cambiada... Hablar del futuro de ClockWorksMB podría llenar muchas más páginas, y aunque tenga claro lo que quiero hacer en los próximos meses, probablemente sería pura especulación, porque al fin y al cabo son los usuarios que acaban orientando el trabajo a corto y medio plazo. Por lo tanto no haré este ejercicio, pero sí hablaré del presente.

La acogida recibida por ClockWorksMB es de momento muy discreta, a veces fría. Encontrar las palabras para que la gente entienda inmediatemente qué es ClockWorksMB no es fácil. Tampoco lo es el conseguir que una vez descargada la versión de demo, puedan los usuarios dar sus primeros pasos satisfactoriamente, y el despertar su interés por cosas que probablemente valen la pena pero que requieren un cierto aprendizaje. Éstas son las dos asignaturas pendientes para que ClockWorksMB se haga un nombre, y espero que los lectores de este artículo me ayuden a superar este problema con una critica constructiva. Os animo a aventuraros y a descubrir ClockWorksMB. La versión de demo está disponible a la descarga y ampliamente documentada, con 7 tutoriales para aprender paso a paso, y más de 50 ejemplos.

Ya no hay excusas para conformarse. Hoy uno puede crear la aplicación con que ha soñado siempre, entonces adelante !

Articulo escrito por bjoossen@mac.com?subject=Feedback articulo Macuarium" target="_blank">Benoît Joossen, el desarrollador de ClockWorksMB.


Comenta el artículo en los Foros

Vuelta al Menú

 

 

 

Artículos en esta misma edición:

31-8-2004 Una cosa más desde París - Llega el iMac G5
31-8-2004 Schiller da la Keynote en París - Exactamente como se esperaba
27-8-2004 Sustitución de baterías de PowerBook - Todo lo que hay que saber sobre la iniciativa de Apple
27-8-2004 Juegos de la semana - Repaso de títulos y betas anunciadas.
27-8-2004 No queda nada para la Apple Expo de París - Y Jobs en el hospital.
27-8-2004 Beta de 3D-Finder, de Marc Moini - Una forma diferente de ver tus archivos.
27-8-2004 Si le gusta el riesgo, invierta en Apple - Expectativas, miedos y operaciones quirúrgicas.


Otros artículos recientes