**Flujos documentales computacionales**
Esta narrativa de datos (es decir, esta combinación de prosa, código, datos y resultados enriquecidos) da cuenta de los flujos y prácticas documentales en la comunidad de [Grafoscopio](https://mutabit.com/grafoscopio/), nacida en el hackerspace [HackBo](https://hackbo.org/), (donde continúan muchas de sus prácticas _in-situ_). Dichos flujos y prácticas están en dialogo con espacios institucionales como el LabCI (Laboratorio de Ciencia de la Información) del [Departamento de Ciencia de la Información](https://comunicacionylenguaje.javeriana.edu.co/departamento-de-ciencia-de-la-informacion), de la Pontificia Universidad Javeriana, Bogotá. Se constituyen así en un ejemplo de innovación abierta y comunitaria, donde bienes y saberes comunes circulan entre comunidades de base e instituciones, potenciándose mutuamente.
# Cómo leer este documento
El presente es un documeno hipertextual y computacional: * Debido a su caracter hipertextual este documento no sólo que cuenta con hipervínculos que apuntan a otros enlaces que extienden la información, sino que también es posible hacer una lectura anotada hipertextual, compartiendo nuestras notas de lectura al margen con otres lectores del mismo. Para aprovechar mejor esta naturaleza hipertextual, aconsejamos que saques una cuenta de Hypothesis, subrayes y anotes las distintas partes del documento, incluyendo visitar enlaces, hacer búsquedas de términos y agregarlas a los márgenes. * Debido a su caracter computacional, este documento soporta cálculos y realiza operaciones, por ejemplo, trayendo información de la web, copiándola en nuestro disco duro y publicándola en un repositorio de código. Para aprovechar mejor esta naturaleza computacional, lo aconsejable es que descargues este documento en la versión de Grafoscopio instalada en tu computador y que vayas ejecutando trozos de código (marcados por la tipografía en `versalitas`), de manera que puedas ver cómo funciona el código y qué transformaciones produce.
También es importante tener en cuenta las siguientes convenciones de lectura: * El texto en `versalitas` corresponde a trozos de código e instrucciones para el computador: `fossil commit -m "Agregando configuración inicial` * Las frases en _cursiva_ corresponden a énfasis o términos en inglés: Hacemos _boostrapping_ del sistema. * Existen, además distintos avisos (_admonitions_) que empleamos para indicar distintos tipos de actividades !!! note Este es un ejemplo de informacion relevante . !!! tip Este aviso lo usamos para ejercicios a realizar por el/la aprendiz. !!! warning Este indica advertencias.
Nuevas versiones del documento serán producidas con el tiempo. Por ello es bueno visitar la versión en línea del mismo.
# 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.
Para leer hipertextualmente y ejecutar interactivamente este documento es necesario: * [Hypothesis](https://web.hypothes.is/): la herramienta de lectura hipertextual y colectiva con la que hacemos anotaciones. Una cuenta en dicho sistema es necesaria para realizar, compartir y discutir nuestras anotaciones. * [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). * [Fossil SCM](https://fossil-scm.org/): Es el sistema donde almacenamos y publicamos nuestras narrativas de datos y sus historiales.
# Documentos computacionales
Debido a la ofimática, pensamos los documentos como aspectos separados y encerrados de nuestra experiencia de cómputo. Si queremos escribir prosa, usamos un procesador de palabra (MS Word, LibreOffice Writer, Apple Pages, etc); si queremos calcular algo, usamos una hoja de cálculo (MS Excel, LibreOffice Calc, Apple Numbers, etc) y, si queremos presentar algo, usamos un programa de presentaciones (MS PowerPoint, LibreOffice Presenter o Apple Keynote).
Hay una idea menos popular pero más poderosa y es que, dadas las capacidades computacionales de estos documentos digitales, sería posible hacer prosa, código, presentaciones y visualizaciones dentro de un mismo documento y ver distintos aspectos del mismo, dependiendo del público y la intensión comunicativa que se tenga. A dichas combinaciones de prosa, código, datos y resultados enriquecidos, ya sea en la forma de visualizaciones, audios embebidos u otros elementos interactivos, se les conoce como narrativas de datos y la interfaz para crearlos, editarlos y extenderlos se les llama como [libretas computacionales](https://en.wikipedia.org/wiki/Notebook_interface).
Si bien las narrativas de datos y sus libretas computacionales tienen ya sus décadas, últimamente ha tomado más fuerza. Acá un listado cronológico de distintas herramientas de libretas computacionales, indicando su año de creación (con un enlace a la fuente del que tomamos dicho año) y su caracter de libre o privativas (consecuentes con las apuestas de Grafoscopio, hemos enfatizado las tecnologías libres), así como los lenguajes y tecnologías desde y para los cuales fue hecho: * [Mathematica](https://www.wolfram.com/mathematica/) ([1988](https://en.wikipedia.org/wiki/Wolfram_Mathematica), privativo): hecho en el [lenguaje Wolfram](https://en.wikipedia.org/wiki/Wolfram_Language). ![Vista previa de libretas en Mathematica.](https://www.wolfram.com/mathematica/img/overview/header-hero.png) * [TeXmacs](https://www.texmacs.org/) ([1998](https://www.texmacs.org/tmweb/help/articles.en.html#bib-TeXmacs:manual), libre) multilenguaje y hecho principalmente en [Guile Scheme](https://www.gnu.org/software/guile/). ![Una sesión de Maxima ejecutándose dentro de TeXmacs.](https://www.texmacs.org/tmweb/images/texmacs-cas.png) * [Grafoscopio](https://mutabit.com/grafoscopio/) ([2014](http://smalltalkhub.com/Offray/Grafoscopio/), libre) hecho en y para [Pharo](https://pharo.org/) Smalltalk, migrado en 2020 a [Glamorous Toolkit](https://gtoolkit.com/) (o GToolkit). ![Extracto de página web de Grafoscopio con algunos casos de uso.](https://i.imgur.com/FpZgz6q.png) * [Jupyter](https://jupyter.org/) ([2015](https://en.wikipedia.org/wiki/Project_Jupyter), libre) multilenguaje y hecho principalmente en [Python](https://www.python.org/). ![Ejemplo de libreta interactiva en Jupyter.](https://jupyter.org/assets/homepage/jupyterpreview.webp) * [Pluto](https://plutojl.org/) ([2020](https://github.com/fonsp/Pluto.jl/commit/f33ed48), libre): hecho en y para [Julia](https://julialang.org/). ![Apartado de la página de Pluto.](https://i.imgur.com/w0BKEJy.png) * [Glamorous Toolkit](https://gtoolkit.com/) / Lepiter ([2021](https://lepiter.io/feenk/introducing-lepiter--knowledge-management--e2p6apqsz5npq7m4xte0kkywn/), libre) hecho en [Pharo](https://pharo.org/) Smalltalk, con soporte para Pharo, JavaScript y Python. ![Libreta interactiva de Lepiter, con navegación facetada](https://lepiter.io/feenk/introducing-lepiter--knowledge-management--e2p6apqsz5npq7m4xte0kkywn/gt-figures/1zgarri2kwh3a53do3d8jsvv1.png) * [Clerk](https://clerk.vision/) ([2021](https://youtu.be/Gnrh7XOt_84), libre) hecho en y para [Clojure](https://clojure.org/). ![Ejemplo de libreta interactiva en Clerk.](https://i.imgur.com/vDvWzJD.png) * [Livebook](https://livebook.dev/) ([2021](https://github.com/livebook-dev/livebook/commit/7979277), libre) hecho en y para [Elixir](https://elixir-lang.org/). ![Ejemplo de libreta interactiva en LiveBook.](https://www.strangeleaflet.com/images/blog/2022/livebook-example.png)
Como podemos ver en esta genealogía, Grafoscopio existió 7 años antes que Lepiter[^libretas-computacionales-sur] y ambos se ejecutan sobre el entorno Pharo Smalltalk. Debido al solapamiento tanto de sus plataformas de base de funcionamiento como de varios de sus propósitos respecto a escritura de libretas interactivas, el autor principal de Grafoscopio decidió portarlo a Lepiter/GToolkit, para continuar atendiendo aquellos flujos documentales e inquietudes de las comunidades de base hacktivistas locales, que el último no cubría ni tenía interés/posibilidad de soportar. De esta manera, contaremos desde la comunidad de Grafoscopio y los beneficiarios de sus prácticas, de las innovaciones de interfaz/funcionalidad de Lepiter/GToolkit, sin perder los aprendizajes y particularidades de Grafoscopio. Diremos por tanto que estamos ejecutando Grafoscopio sobre Lepiter o sobre GToolkit/Pharo y cuando digamos que hacemos algo vía Grafoscopio o usando Grafoscopio, nos referiremos a esa funcionalidad migrada y enriquecida ahora en el entorno de Lepiter/GToolkit. [^libretas-computacionales-sur]: Otra de las cosas no evidentes en la genealogía misma, es que todos esos esfuerzos son liderados por desarrolladores hombres, como nos comentaba una asistente a un taller, y que sólo uno de ellos, Grafoscopio, se realiza desde Latinoamérica, con las consecuentes dificultades particulares de financiación y las ventajas de perspectiva desde los márgenes.
# De la escritura colaborativa síncrona a la asíncrona
[HedgeDoc](https://hedgedoc.org/) es una herramienta de escritura colaborativa hipertextual en tiempo real que nos ha permitido realizar escritura síncrona colaborativa en distintos escenarios: talleres hacktivistas y de tecnologísa cívicas en [HackBo](https://hackbo.org/) y otras comunidades de base, formación de pregrado y postgrado desde el [Departamento de Ciencia de la Información](https://comunicacionylenguaje.javeriana.edu.co/departamento-de-ciencia-de-la-informacion) en la facultad de Comunicación y Lenguaje de la Pontificia Universidad Javeriana. A pesar de todas las ventajas de HedgeDoc, es habitual que en nuestros flujos documentales, queramos una copia fuera de línea y bien presentada de la información contenida allí, que podamos, por ejemplo colocar en nuestros repositorios de [Fossil](https://fossil-scm.org/) o envíar por correo electrónico o mensajería instantánea.
En esta sección veremos cómo usar Grafoscpio para importar un documento desde HedgeDoc hacia un sistema de archivos. Para ello, introduciremos la propiedad autoreferencial del documento y del vocabulario inicial de Pharo Smalltalk y luego avanzaremos progresivamente en cómo se hace el procedimiento con un documento, para luego hacerlo con muchos.
## Un documento que se cambia a sí mismo
Una cosa interesante de los sistemas Smalltalk es que son autorreferenciales y esto se expresa también en las libretas interactivas que han sido construidas sobre él, como Grafoscopio y Lepiter. Por ejemplo, desde un trozo de código podemos invocar a la página que contiene dicho trozo de código:
![ Un trozo de código que apunta a la página que contiene a dicho trozo de código. ](https://i.imgur.com/2LtfnA4.png)
Y podemos, entonces, hacer operaciones sobre la página desde trozos de código en la misma. Por ejemplo, exportarla a formato [Markdeep]
Hay otras partes del vocabulario de Smalltalk, que se refieren a el sistema de archivos. Por ejemplo:
Combinemos estas dos partes del vocabulario, para guardar esta misma página en una subcarpeta dentro del repositorio de la Grafoscopedia.
Definamos las variables para ello:
Guardemos la página, exportada como un archivo Markdeep en la subcarpeta del wiki.
Miremos los contenidos de la subcarpeta donde almacenamos el archivo:
![ Narrativa de datos exportada como archivo en la subcarpeta. ](https://i.imgur.com/C818W7U.png)
## Importar/exportar un documento desde HedgeDoc
Hay dos formas de importar documentos desde HedgeDoc, vía Grafoscopio, hacia Lepiter: * La ícono-enactiva (GUI: Graphical user Interface). * La simbólica (CLI: Command Line Interface) como ya hemos trabajado con la GUI, ahora lo haremos desde la interfaz simbólica (código).
![ Navegación facetada (por columnas de Miller) de la información en un objeto HedgeDoc. ](https://docutopia.sustrato.red/uploads/2f1b2958-b392-449c-910d-4fd164d566fe.png)
Podemos ahora, almacenar ese archivo en nuestro repositorio, en la subcarpeta del wiki
![ Contenido de HedgeDoc exportado como archivo en una subcarpeta del repositorio. ](https://i.imgur.com/jaqGGBt.png)
Con lo cual, tendremos un documento que está listos para ser agregado al repositorio.
## Importar/exportar muchos documentos desde HedgeDoc
Creamos las direcciones para todas las sesiones:
Coleccionamos los documentos de HedgeDoc, con sus contenidos, a partir de dichas direcciones:
Convertimos en bloque el trozo de código donde exporportábamos como archivo un documento HedgeDoc:
Y ejecutamos ese bloque con cada uno de los documentos HedgeDocs que coleccionamos previamente:
![ Subcarpeta con todas las sesiones del ejemplo, importadas y exportadas de modo semi-automático, siguiendo esta narrativa de datos. ](https://i.imgur.com/alkqos5.png)

Overfill container

!!! warning Falta completar con la transformación desde Markdown a [Markdeep](https://casual-effects.com/markdeep/features.md.html) y agregarlos al repositorio desde la [interfaz de Fossil para Pharo](https://code.sustrato.red/Offray/Fossil), incluída en Grafoscopio.
# Futuros pasos
Hasta acá hemos visto sólo unos elementos de la importación y exportación de documentos de manera que pueda pasarse de plataformas en línea y tiempo real a unas fuera de línea y asíncronas, brindándonos un espectro de colaboración consecuente con muchas condiciones de conectividad y formas de trabajo, particularmente en sitios del Sur Global.
Además de terminar lo indicado en los avisos respectivos, a futuro este documento o sus continuaciones, indicarán cómo los flujos documentales permiten integrar los contenidos con sistemas como [mdBook](https://rust-lang.github.io/mdBook/) y [HastyScribe](https://h3rald.com/hastyscribe/HastyScribe_UserGuide.htm). Si bien estamos explorando mdBook en el presente, debido a toda la funcionalidad que viene empaquetada en él y la personalización con extensiones, HastyScribe parece más modular y adecuado a las prácticas que ya tenemos en la comunidad de Grafoscopio y llevamos a otros lugares, en particular la transclusión y la creación de soluciones a la medida con lenguajes fáciles de aprender y extender.
Estos son temas más avanzados y esperamos irlos incorporando de manera más amigable a la funcionalidad pre-empaquetada en futuras versiones de Grasfoscopio. De esta manera seguiremos creando sencillos _scripts_ computacionales de unas pocas líneas, como los mostrados acá, gracias a un vocabulario a medida o DSL (por las siglas en inglés para _Domain Specific Language_) que siga evoluacionando con las necesidades expresivas y documentales de nuestros contextos y comunidades, hacktivistas y académicas, entre otras.