**Infocompostaje**
Aca se documenta la parte de infraestructura tecnológica para el taller+exposición [Rostros Compostados](http://rostros-compostados.tiddlyhost.com/).
# Prerrequisitos
Esta narrativa de datos está escrita desde [Lepiter](https://lepiter.io/feenk/introducing-lepiter--knowledge-management--e2p6apqsz5npq7m4xte0kkywn/), en el [Glamorous Toolkit](https://gtoolkit.com/). Una familiaridad inicial con ambos entornos es necesaria para ejecutar dicha narrativa. En caso de que no se tenga, recomendamos vincularse a la comunidad de [Grafoscopio](https://mutabit.com/grafoscopio/) para aprender con ella y los distintos canales de comunicación y materiales educativos que han preparado, en clave de alfabetismos críticos en datos y código usando estas plataformas.
**Necesario**: * [TiddlyWiki](https://tiddlywiki.com/): el motor de microwikis minimalista y autocontenido en un archivo HTML. * [Glamorous Toolkit](https://gtoolkit.com/) (o GToolkit): El entorno interactivo de cómputo donde se escribió y ejecuta la narrativa. * [MiniDocs](https://code.tupale.co/Offray/MiniDocs/): Herramientas de documentación minimalista, utilizadas para compartir y publicar esta narrativa, así como para interactuar con sistemas exteros de documentación ligera (HedgeDoc, Markdown, Markdeep). * [TiddlyWikiPharo](https://code.sustrato.red/Offray/TiddlyWikiPharo): Herramienta para gestionar microwikis, hechos en TiddlyWiki, desde el entorno de programación Pharo/GToolkit. * [Nim](https://nim-lang.org/): Lenguaje de programación para escribir rutinas de optimización en la lectura y transformación de archivos. Algunas veces usamos MiniDocs en interacción con Nim para escribir pequeños programas autocontenidos y multiplataforma, que no están disponibles en el ecosistema de Pharo, que es la plataforma sobre la que está construido GToolkit o que se ejecutan más rápido o de modos más robustos. La intensión es que este requerimiento sea temporal y a futuro MiniDocs descargue los binarios para cada plataforma donde se ejecuta (Windows, Gnu/Linux y/o Mac) de manera automática. * [Fossil SCM](https://fossil-scm.org/): Es el sistema donde almacenamos y publicamos nuestras narrativas de datos y sus historiales.
# Gestión de actividades y reportes
!!! info **Enlaces rápidos** - Ver la [última versión del informe de actividades](https://chiselapp.com/user/visonte/repository/rostros_compostados/doc/tip/wiki/actividades.txt).
Es prioritario tener una mirada panorámica de las actividades del proyecto, para visibilizar y resolver parte de sus complejidades, hasta donde cada iteración lo permita, e incrementar la claridad sobre lo planeado, lo hecho y lo pendiente. Para ello, hay muchas más partes de Rostros Compostados que se gestionan de diversas maneras, desde dibujos con marcadores en ventanas a calendarios compartidos, o, como en este caso, gestores especializados que funcionan desde la consola de comandos y se pueden conectar a otros sistemas.
Esta sección muestra la parte que se está gestionando en [[Taskwarrior]]. Es decir, suponemos que para esta sección la audiencia tiene Taskwarrior instalado en su máquina y cierta familiaridad o interés en cómo crear actividades en este software. **Importante** Taskwarrior no es necesario para leer los reportes que esta sección genera, como se puede ver en los enlaces rápidos de arriba.
Un reporte de rostros compostados se puede ver, desde la consola de comandos con: ~~~bash task project:Rostros ~~~ ~~~bash ID Age P Project Tag Due Description Urg 24 3d H Rostros.Admin 2d Crear reporte de tareas realizadas, en proceso y pendientes. 14.6 22 3d Rostros.wiki foroTW máscaras 2d Mejorar filtro de exportación de recientes. 9.51 21 3d Rostros.wiki máscaras 2d Previsualización de galerias. 9.41 25 3d Rostros.Admin Adri 2d Mensaje con avances hasta el momento y posibles horarios de reunión. 9.41 23 3d Rostros.wiki 2d Narrativa de datos para versionar tiddlers 8.61 ~~~
Y podemos exportar el reporte anterior con ~~~bash task project:Rostros > actividades.txt ~~~ y publicarlo las [actividades iniciales en el wiki del proyecto](https://chiselapp.com/user/visonte/repository/rostros_compostados/doc/ac426298dc537168/wiki/actividades.txt): ![Tabla sencilla, en formato de texto, con las actividades en el proyecto](https://i.imgur.com/hDBIvah.png)
Modifiquemos el reporte inicial con más información relevante, agregando estas líneas al archivo `~/.taskrc`: ```bash # Reporte para Rostros compostados report.rostros.description=Lista de tareas para Rostros Compostados report.rostros.columns=id,description.count,status,due,project,tags report.rostros.labels=ID,Descripción,Status,Plazo,Subproyecto,Etiquetas report.rostros.sort=project+\/,priority-\/,status+ report.rostros.filter=project:Rostros ```
Con lo anterior, podemos ver el reporte en la consola de comandos: ~~~bash task rostros ~~~ ~~~bash ID Subproyecto Status Iniciada Plazo Etiquetas Descripción 24 Rostros.Admin Pending 2024-07-24 2024-07-30 Crear reporte de tareas realizadas, en proceso y pendientes. 25 Rostros.Admin Pending 2024-07-30 Adri Mensaje con avances hasta el momento y posibles horarios de reunión. 21 Rostros.wiki Pending 2024-07-19 2024-07-30 máscaras Previsualización de galerias. 22 Rostros.wiki Pending 2024-07-30 foroTW máscaras Mejorar filtro de exportación de recientes. 23 Rostros.wiki Pending 2024-07-30 Narrativa de datos para versionar tiddlers 5 tasks ~~~ o en el [reporte en la web](https://chiselapp.com/user/visonte/repository/rostros_compostados/doc/tip/wiki/actividades.txt) ![Reporte de actividades actualizado.](https://i.imgur.com/DGhof2o.png)
Dada la premura del tiempo, el reporte en texto plano será lo que usaremos por lo pronto. Sin embargo, se alcanzó a iniciar un modelo de reportes que pueda ser personalizado desde Pharo y haga parte de la distribución Grafoscopio/[MiniDocs](https://code.sustrato.red/Offray/MiniDocs/).
!!! warning La parte siguiente de este sección está sólo en borrador. Se deja a continuación como ayuda de memoria para retomar luego. Si quieres seguir la lectura de este documento, continúa en la [siguiente sección](#copiasderespaldo,versionadoycolaboración).
Creemos el reporte detallado de actividades para Rostros
![ Actividades del proyecto Rostros Compostados, en formato JSON. ](https://i.imgur.com/iZlhBcs.png)
Ahora exportemos este archivo como en formato Markdeep
# Copias de respaldo, versionado y colaboración
!!! info Esta parte indica cómo conectar TiddlyWiki con Fossil, de manera que se tenga copias de respaldo y control de versiones sobre la información del wiki y así podamos realizar cambios en el mismo con la tranquilidad de que podemos volver siempre a versiones previas.
Esta narrativa es una versión más aǵil de la desarrollada para las [Cartofonías del proyecto Amanecer la Palabra](https://mutabit.com/repos.fossil/amanecer-palabra/doc/tip/wikis/cartofonias--e45j7.md.html) y adaptada para este contexto. Para más detalles se recomienda visitar esa página.
Definimos el wiki
Si cargamos el wiki por primera vez, para cargar sus tiddlers hacemos:
Definamos además la subcarpeta donde almacenaremos el wiki
!!! tip Recuerda cambiar la subcarpeta dependiendo de la ubicación en nuestro disco duro donde almacenamos el wiki. Usualmente dicha carpeta contiene una subcarpeta llamada `tiddlers/`
Si ya hemos descargado y exportado los tiddlers del wiki a alguna (por ejemplo, si esta _no_ es la primera vez que ejecutamos este documento), también podemos cargar los tiddlers como:
Bien sea que carguemos los contenidos del wiki desde su dirección en línea, o desde una subcarpeta en el disco duro, una vez cargados lucirán así:
![ Microwiki con todos los tiddlers importados. ](https://i.imgur.com/WwYW5nf.png)
Miremos todos los autores, para crear una subselección de los que nos interesan:
`>>> an OrderedCollection(a Tiddler( Adriana Castrillón Arango ) a Tiddler( África Peláez ) a Tiddler( Aleyda Londoño Botero ) a Tiddler( Angie Daniela González Celemín ) a Tiddler( Apertura taller 3 ) a Tiddler( Aplicaciones de la imagen ) a Tiddler( Archivación del Rostro ) a Tiddler( Arrullo ) a Tiddler( Beatriz Elena Largo Guapacha ) a Tiddler( Botiquín de escritura ) a Tiddler( Cierre ) a Tiddler( Contexto fabulativo ) a Tiddler( Cosificación ) a Tiddler( Creación base máscaras ) a Tiddler( Creando parentescos en las comunidades del compost ) a Tiddler( Cristian Guaya ) a Tiddler( Draft of 'Taller 2' by Adri ) a Tiddler( Draft of 'Un mundo feliz en el campo' by Adri ) a Tiddler( Ecosimbiosis ) a Tiddler( Ejercicio de escritura ) a Tiddler( El nacimiento de Lagártica en playa Lagártica ) a Tiddler( El renacer de la finca Dorada ) a Tiddler( El rostro como símbolo ) a Tiddler( Elefante azul del mar Mediterráneo ) a Tiddler( Elementos gráficos ) a Tiddler( Emérita Rentería Valencia ) a Tiddler( Esperanza-cacao ) a Tiddler( Evelin Bocanegra ) a Tiddler( Fabulación especulativa y mundos posibles ) a Tiddler( GaleriasMacros ) a Tiddler( Gloria María Castrillón Murillo ) a Tiddler( Guerra multiespecie ) a Tiddler( Historias de simbiontes ) a Tiddler( Humanos No Humanos ) a Tiddler( Idealización y marginación del rostro ) a Tiddler( Identidad del proyecto ) a Tiddler( Imagen ) a Tiddler( Inicio aleatorio ) a Tiddler( Inventando un diccionario ) a Tiddler( Irma Arango Botero ) a Tiddler( Jhonathan ) a Tiddler( Jhonathan montaña – caudal del Qu… ) a Tiddler( La cara como índice ) a Tiddler( La faz como ícono ) a Tiddler( Lady Arango Botero ) a Tiddler( Lagártica de la resistencia ) a Tiddler( Lagartica de playa lagártica a los 20 años ) a Tiddler( Lagártica de playalagártica a los 10 años ) a Tiddler( Laura Lotero ) a Tiddler( Leer por la ventana ) a Tiddler( Letras de canciones ) a Tiddler( Lista de mercado ) a Tiddler( Logotipo ) a Tiddler( Lucena Gongora Carvajal ) a Tiddler( Maria Edilma Guapacha ) a Tiddler( Máscara ) a Tiddler( Máscaras y simbiontes ) a Tiddler( Mesas sensoriales ) a Tiddler( Metamorfosis de un Guardián ) a Tiddler( Mi nombre es ) a Tiddler( Mi reflejo en el Río Gris ) a Tiddler( milpiés-hormigas, lagartijas-humanas-quebradas ) a Tiddler( Mística y presentación del proyecto ) a Tiddler( Monpari “MontañaPáramoRío” ) a Tiddler( Moodboard ) a Tiddler( Naturaleza - Cultura ) a Tiddler( Niñas y niños del compost ) a Tiddler( Olga Arango Botero ) a Tiddler( Palabras en Poemas ) a Tiddler( Paleta de colores ) a Tiddler( Pesca de palabras ) a Tiddler( Pescando en la máscara ) a Tiddler( pruebas ) a Tiddler( PruebasYEjemplos ) a Tiddler( Receso Kombuchero ) a Tiddler( Referentes de imagen ) a Tiddler( Retrofuturismo ) a Tiddler( Rostro y empatía ) a Tiddler( Rostros Compostados ) a Tiddler( Rostros Compostados para la Cura y la Reconciliación ) a Tiddler( Ruleta de palabras ) a Tiddler( Salomé Ballesilla Valencia ) a Tiddler( Seguimiento ) a Tiddler( Significados del rostro ) a Tiddler( Simpoiésis, vínculos y parentescos ) a Tiddler( Simpoiésis. Crear parentescos no parejas ) a Tiddler( Taller 1 ) a Tiddler( Taller 2 ) a Tiddler( Taller 3 ) a Tiddler( Talleres ) a Tiddler( Territorio ) a Tiddler( Un mundo feliz en el campo ) a Tiddler( Una especie diversa ) a Tiddler( Vamos a transcribir ) a Tiddler( Viviana M. Ospina Restrepo ))`
Ahora seleccionemos todos los autores:
`>>> a Set('Adri' 'Offray')`
Dado que no hay autores nuevos que correspondan a tiddlers viejos, como ocurre cuando se han traído macros de otros wikis, es posible simplemente guardar los tiddlers que están en la variable `tiddlerWithNamedEditors`, en una subcarpeta del repositorio.
!!! tip Y el siguiente código guarda los tiddlers creados. Si se crean nuevos tiddlers, es necesario volver a calcular la variable `tiddlerWithNamedEditors`
![ Tiddlers exportados como archivos. ](https://i.imgur.com/RiylyQW.png)
Ubicados en la carpeta raíz del repositorio, agregamos todos los tiddlers al repostorio: ~~~bash fossil add wiki/tiddlers/* ~~~ ~~~bash ADDED wiki/tiddlers/Taller-1--cFW4p8JGjC2y.ston ADDED wiki/tiddlers/Taller-2--188rHAYVFV4S.ston ADDED wiki/tiddlers/Taller-3--1HguDMNo6G3f.ston ADDED wiki/tiddlers/Talleres--ubXM7fsYovcG.ston ADDED wiki/tiddlers/Territorio--AtXVhE8QYv5d.ston ADDED wiki/tiddlers/Un-mundo-feliz-en-el-campo--KzYyrQeP8kw7.ston ADDED wiki/tiddlers/Una-especie-diversa--1zfHPJ1WxxMj.ston ADDED wiki/tiddlers/Vamos-a-transcribir--BZZAmNsVHAv6.ston ADDED wiki/tiddlers/Viviana-M.-Ospina-Restrepo--jsVuBUhgig6f.ston ADDED wiki/tiddlers/milpiés-hormigas,-lagartijas-humanas-quebradas--5z7VSgcJ4jVY.ston ADDED wiki/tiddlers/pruebas--1LMUNqVx5jux.ston ADDED wiki/tiddlers/África-Peláez--83oaygAUcuf4.ston ~~~ y les hacemos un commit: ~~~bash fossil commit -m "Copia de los Tiddlers en formato STON." ~~~
Con lo cual tenemos una [copia en línea de los tiddlers en el repositorio](https://chiselapp.com/user/visonte/repository/rostros_compostados/tree?ci=tip&type=tree&name=wiki/tiddlers):
![ Tiddlers en el repositorio en línea. ](https://i.imgur.com/b91I1of.png)
Con la copia de seguridad ya en línea, podemos crear un wiki extra, que nos sirva para sincronizar copias y expotarlas, sin compartir la misma dirección remota del que usamos como base.
Ahora exportemos los tiddlers en un único archivo JSON que podamos arrastrar entre distintas versiones de los wikis
!!! tip El archivo JSON que produce la anterior exportación puede ser arrastrado desde la carpeta donde se genera a cualquiera de los microwikis de las co-autoras. Esto sincronizará los wikis entre sí. Ahora necesitamos explorar cómo hacer que sus contenidos se puedan ver fuera de línea.
# Del microwiki al micrositio
!!! info Esta parta mostrará como conectar TiddlyWiki con plantillas de HTML5Up vía [Brea](https://mutabit.com/repos.fossil/indieweb/), para pasar de wikis dinámicos a sitios estáticos.
Ahora que tenemos las copias de seguridad, procedamos a crear las página del evento. Iremos en órden de complejidad, creando la página más sencilla, que es la de artistas y luego las más complejas, que son las páginas de cada una de las obras. Para ambas usaremos el [tema Helios, de HTML5 Up](https://html5up.net/helios).
## Crear la página de artistas
Para la página de artistas, empecemos por recolectar todos los tiddler etiquetados como "Artista" y "Perfil":
`>>> an Array(a Tiddler( Adriana Castrillón Arango ) a Tiddler( África Peláez ) a Tiddler( Aleyda Londoño Botero ) a Tiddler( Angie Daniela González Celemín ) a Tiddler( Beatriz Elena Largo Guapacha ) a Tiddler( Cristian Guaya ) a Tiddler( Emérita Rentería Valencia ) a Tiddler( Evelin Bocanegra ) a Tiddler( Gloria María Castrillón Murillo ) a Tiddler( Irma Arango Botero ) a Tiddler( Jhonathan ) a Tiddler( Lady Arango Botero ) a Tiddler( Laura Lotero ) a Tiddler( Lucena Gongora Carvajal ) a Tiddler( Maria Edilma Guapacha ) a Tiddler( Olga Arango Botero ) a Tiddler( Salomé Ballesilla Valencia ) a Tiddler( Viviana M. Ospina Restrepo ))`
Creemos ahora la página de artistas en formato DokuWiki, que, para este hack rápido, es suficientemente parecido a TiddlyWiki, para luego convertirla a HTML, dentro de la plantilla Helios.
![ Página de artistas en formato DokuWiki. ](https://i.imgur.com/fQAzcaf.png)
Exportemos esta página en la misma carpeta donde estará el micrositio web
![ Folder con los contenidos del micrositio. ](https://i.imgur.com/gPTZpA7.png)
Ubicanos en este folder, exportamos de DokuWiki a Markdown desde la consola de comandos: ~~~bash pandoc --from dokuwiki --to markdown artistas.doku -o artistas.md ~~~
Con la página base para nuestra primera prueba, procedemos a instalar Brea y crear una plantilla de página para los artistas.
!!! warning El comando anterior falla. Debe hacerce la instalación manual de Brea, hasta que no se depure en ExoRepo la detección de repositorios ya instalados .
Con los elementos anteriores y adaptando las [instrucciones del libro IndieWeb con Brea](https://mutabit.com/repos.fossil/indieweb/doc/trunk/docs/es/abrebocas.html) ya podemos crear una página en Brea, para l@s artistas:
Y el resultado en HTML se ve cómo:
![ Página de artistas importada desde TiddlyWiki y exportada desde Brea. ](https://i.imgur.com/UTRXU3u.png)
## Creación de páginas de obras
!!! warning **Pendiente**: No se ha implementado.
## Integrando información de múltiples microwikis
Por convención, estaremos trabajando en múltiples wikis, todos ellos iniciando en `rostros-compostados` y terminando en el nombre del autor principal de ese wiki, por ejemplo `rostros-compostados-offray`. En estos contextos, es posible que variantes el mismo wiki se desincronicen y que debamos volver a hacer consistentes las distintas copias. Acá exploramos esos esenarios empezando con la sincronización de variantes del wiki en las cuales una tiene los identificadores únicos para los tiddlers y el otro no. Al primero le llamaremos `microwikiExternal` y al segundo `microwikiLocal`, pues, de acuerdo a las intrucciones anteriores, es posible que tengamos un wiki en el repositorio local con identificadores, mientras que el remoto puede no tener información sobre los mismos
![ Microwiki con tiddlers importados desde una carpeta local. ](https://i.imgur.com/53K7I00.png)
Importemos todos los tiddlers en el microwiki externo:
!!! info **Puede demorar**: Debido a que el wiki remoto incluye archivos de imagen de alta calidad embebidos dentro del mismo, en lugar de vinculados como recursos externos, esta importación puede demorar varios minutos.
![ Microwiki con tiddlers importados desde un enlace externo. ](https://i.imgur.com/xYhk1hq.png)
Ahora, tomemos todos los tiddlers del wiki externo y miremos si tienen homónimos, es decir tiddlers con el mismo título, en el wiki local, de manera que podamos colocar los identificadores únicos de esos tiddlers "locales", también como identificadores de los tiddlers "externos".
![ Explorando el resultado de la integración de identificadores únicos en dos variantes del wiki. ](https://i.imgur.com/0YjWmhy.png)
Exportemos los tiddlers con identificadores únicos integrados al repositorio
![ Tiddlers una vez ha terminado la exportación integrada al repositorio local. ](https://i.imgur.com/JZqDtoU.png)
Una vez hemos integrado las dos variantes de los wikis, podemos guardarlas en el sistema de control de versiones. Para ello, desde la carpeta raíz del wiki ejecutamos: ~~~bash fossil add wiki/tiddlers/*.ston ~~~
# Depuración de errores
## No importar las imágenes embebidas dentro del wiki
Embeber imágenes grandes dentro del wiki es considerado una mala práctica, pues: * Hace lenta la carga del mismo. * Imposibilita el control de versiones del wiki, dado que ya no consta sólo de elementos de texto plano. * Dificulta la importación de tiddlers a otros entornos, específicamente a Pharo/GT. Esta subsección corrige esta parte, al excluir las imágenes y otros tiddlers grandes del proceso de importación.
Después de los arreglos hechos en el commit [cc865a6b29](https://code.sustrato.red/Offray/TiddlyWikiPharo/commit/cc865a6b29c2c62bed7447592e65083fdd547dd9), es posible importar todos los tiddlers con el comando:
![ Microwiki con todos los tiddlers importados después de la depuración del error. ](https://i.imgur.com/WwYW5nf.png)
{{overfil-container}} !!! info **Puede demorar**: Debido a que el wiki remoto incluye archivos de imagen de alta calidad embebidos dentro del mismo, en lugar de vinculados como recursos externos, esta importación puede demorar varios minutos.
## Reformatear las etiquetas
Por el momento, cuando las etiquetas son exportadas, estas se convierten en una cadena de texto, cuando, en realidad, deberían deberían ser convertidas en un conjunto de etiquetas (de manera que se eliminen las repetidas). Esta parte realiza esta corrección.
![ Tiddler de pruebas con etiquetas de varias palabras. ](https://i.imgur.com/66Y8yM4.png)
El commit [4fab465](https://code.sustrato.red/Offray/TiddlyWikiPharo/commit/4fab465883455ffb411c6bdbc6b0958d2f7ce553) arregla el trabajo con etiquetas, incluyendo aquellas entre brackets dobles (`[[ ]]`), que es la forma en que TiddlyWiki expresa enlaces que contienen espacios. Con este arreglo, es posible convertir todas las etiquetas de cadenas de caracteres a conjuntos con: