Reproducibilidad del software
¡Bienvenidos! Hoy hablaremos de un tema crucial: cómo asegurar que nuestro software siga funcionando y siendo útil en el futuro.
Capacidad de recrear exactamente el mismo entorno computacional y obtener exactamente los mismos resultados que en una ejecución original. [8]
Replicabilidad (resultados similares, métodos diferentes) y Robustez (funciona en differentes condiciones).
Definir claramente el concepto y enganchar a la audiencia con la importancia práctica y a largo plazo. Diferenciar de replicabilidad.
El software de ayer no funciona hoy o da resultados distintos [8] [40].
(Las exploraremos a continuación...)
Presentar el problema general y las tres categorías principales que se detallarán.
Putrefacción del Entorno: las condiciones originales desaparecen.
Ej: Control industrial, emulación arcade (MAME).
Ej: Migración Python 2 a Python 3.
Ej: Variables de entorno en modelos climáticos.
Detallar cómo el entorno (SO, hardware, librerías específicas) se vuelve obsoleto o inaccesible. Usar ejemplos concretos por industria.
Los componentes se vuelven inutilizables:
Enfocarse en cómo el propio software (lenguaje, librerías, servicios externos) deja de ser mantenido o accesible.

No podemos obtener/usar lo necesario o leer los datos
Aquí el foco es la incapacidad de acceder al software o, crucialmente, a los datos creados por él debido a licencias, pérdida de código o formatos obsoletos. El ejemplo de Flash es muy potente.
Imposibilidad de verificar/reproducir resultados; crisis de replicación [8] [33] [37] [40].
Costos enormes de mantenimiento legacy [4] [42]; riesgos regulatorios/auditoría [4] [7].
Pérdida irreparable de software y datos; "agujeros negros" de información [1] [18] [20] [28] [29] [30] [36] [44].
Sistemas críticos vulnerables en SOs obsoletos [4] [22] [34].
Resumir las consecuencias negativas en diferentes ámbitos. Enfatizar la pérdida cultural y los riesgos de seguridad.

Emula hardware y SO completos [11] [38].
Empaqueta app y dependencias directas [38].
Definición declarativa y reproducible [14] [16] [23] [38] [39].
Presentar las técnicas para encapsular o definir el entorno de ejecución: VMs (pesado pero completo), Contenedores (ligero, estándar moderno), Gestores de Entorno (declarativo, reproducible).
Guardar todo (código, scripts, config).
Listar versiones exactas (requirements.txt, package-lock.json).
Guardar ejecutables/librerías (Artifactory, Nexus).
Software Heritage (archivo global de código fuente) [2] [5] [6] [12].
Enfocarse en cómo gestionar el propio código y sus dependencias directas: control de versiones, fijar versiones de librerías, archivar binarios y el rol de Software Heritage.
Archivado de Datos y Metadatos: Guardar datos exactos + descripción. Usar DOIs.
Mocking/Simulación de servicios externos.
Abordar el problema de los datos y formatos: archivarlos bien, preferir formatos abiertos, migrar proactivamente y, si es necesario, guardar el software lector junto a los datos.
Instrucciones detalladas (Build, config, ejecución, dependencias). ¡Incluir contexto!
Integran código, datos, resultados y texto. Capturar el entorno subyacente.
Pipelines (GitHub Actions, GitLab CI) que validan reproducibilidad en cada cambio.

Destacar la importancia crucial de la documentación y cómo las metodologías modernas (Notebooks, CI/CD) ayudan a la reproducibilidad.
Resumen práctico de acciones concretas para individuos y organizaciones.
Ser realistas sobre los desafíos, pero también mostrar las tendencias y direcciones futuras prometedoras.

Resumir los puntos clave y dejar un mensaje final inspirador sobre la importancia a largo plazo.
Renich Bon Ćirić
Abrir el turno de preguntas y proporcionar datos de contacto.
Adobe (2020). Adobe Flash Player End of Life. https://www.adobe.com/products/flashplayer/end-of-life.html (Fuente oficial sobre EOL)
Software Heritage. Mission. https://www.softwareheritage.org/mission/ (Descripción oficial)
Di Cosmo, Roberto; Zacchiroli, Stefano (2017). Software Heritage: Why and How to Preserve Software Source Code. iPRES 2017. https://hal.science/hal-01590958/document (Paper fundacional)
Reuters Events (2020). The $3 Trillion Question That Banks Must Answer. (Artículo que menciona la dependencia y costes, aunque el original exacto es difícil de encontrar libre, el tema es recurrente). Ver también análisis como [13].
Construyendo el archivo universal de código fuente. Building the universal archive of source code. https://dl.acm.org/doi/10.1145/3183558 (Comunicado)
UNESCO / Software Heritage (2019). Software Source Code as Heritage for Sustainable Development. https://unesdoc.unesco.org/ark:/48223/pf0000366715 (Colaboración y reconocimiento patrimonial)
FDA (US Food & Drug Administration). Guidance for Industry: Data Integrity and Compliance With Drug CGMP. https://www.fda.gov/regulatory-information/search-fda-guidance-documents/data-integrity-and-compliance-drug-cgmp-questions-and-answers (Relevancia de integridad de datos, aplicable a sistemas legacy)
Peng, Roger D. (2011). Reproducible Research in Computational Science. Science 334 (6060): 1226–1227. DOI:10.1126/science.1213847 (Paper influyente)
IBM. What is COBOL? https://www.ibm.com/think/topics/cobol (Descripción general y relevancia actual)
COBOL on Wikipedia. COBOL https://en.wikipedia.org/wiki/COBOL (Casos de uso, incluyendo banca)
Digital Preservation Coalition (DPC). Technology Watch Report: Emulation for Digital Preservation. https://doi.org/10.7207/twr12-02 (Aborda obsolescencia y emulación)
GitHub Archive Program. https://archiveprogram.github.com/ (Iniciativa relacionada con la preservación de código)
CAST Software (Reporte/Análisis, ejemplo). Mainframe Modernization: Costs, Risks, and Strategies. (Buscar reportes de esta u otras firmas sobre costes de modernización de mainframe COBOL).
Dolstra, Eelco; Löh, Andres; Pierron, Nicolas (2010). NixOS: A Purely Functional Linux Distribution. ICFP 2010. https://edolstra.github.io/pubs/nixos-jfp-final.pdf (Sobre NixOS, base de Nix)
The COBOL Report (Ejemplo de recurso sectorial). https://www.infogoal.com/cbd/ (Sitio dedicado a noticias y análisis sobre COBOL)
Courtès, Ludovic; Wurmus, Ricardo (2015). Reproducible and User-Controlled Software Environments in HPC with Guix. Euro-Par 2015 Workshops. https://hal.inria.fr/hal-01161771/document (Guix y reproducibilidad)
PDF/A Association. Competence Center. https://www.pdfa.org/ (Estándar para archivado a largo plazo de documentos)
Digital Preservation Coalition (DPC). Digital Preservation Handbook: File Formats & Standards. https://www.dpconline.org/handbook/technical-solutions-and-tools/file-formats-and-standards (Guía sobre formatos)
UNESCO. Concept of Digital Preservation. https://en.unesco.org/themes/information-preservation/digital-heritage/concept-digital-preservation (Definición oficial)
Rosenthal, David S. H. (Blog). DSHR's Blog. https://blog.dshr.org/ (Blog influyente sobre preservación digital y sus retos)
Library of Congress. Recommended Formats Statement. https://www.loc.gov/preservation/resources/rfs/ (Recomendaciones de formatos para preservación)
McKinsey (2020). Beyond hiring: How companies are reskilling to address talent gaps. (Discute la brecha de habilidades, relevante para COBOL) https://www.mckinsey.com/capabilities/people-and-organizational-performance/our-insights/beyond-hiring-how-companies-are-reskilling-to-address-talent-gaps
GNU Guix. Features: Reproducible Builds. https://guix.gnu.org/es// (Documentación oficial sobre reproducibilidad en Guix)
Open Document Format (ODF) Alliance. http://opendocumentformat.org/ (Información sobre el estándar ODF)
Hess, Alex (2019). Digital Obsolescence And The Challenge Of Preserving DAW Sessions. Ask.Audio. https://ask.audio/articles/digital-obsolescence-and-the-challenge-of-preserving-daw-sessions (Artículo sobre el problema en música)
National Archives (UK). Guidance: Selecting file formats for preservation. https://www.nationalarchives.gov.uk/information-management/manage-information/preserving-digital-records/selecting-file-formats/
Mozilla Blog (2017). Firefox Roadmap for Flash End-of-Life. https://blog.mozilla.org/futurereleases/2017/07/25/firefox-roadmap-flash-end-life/ (Ejemplo de respuesta de navegador)
Internet Archive. Flash Animations. https://archive.org/details/softwarelibrary_flash (Esfuerzo por preservar contenido Flash)
Consejo Internacional de Archivos (ICA). Principios y requisitos funcionales para registros en ambientes electrónicos (MoReq2010). (Buscar el estándar MoReq relevante para gestión documental electrónica)
UNESCO. Charter on the Preservation of the Digital Heritage (2003). https://unesdoc.unesco.org/ark:/48223/pf0000133171
Conifer (formerly Webrecorder). https://conifer.rhizome.org/ (Herramienta para archivar contenido web interactivo, incluyendo Flash vía emulación)
Ruffle.rs. https://ruffle.rs/ (Emulador de Flash Player escrito en Rust)
Baker, Monya (2016). 1,500 scientists lift the lid on reproducibility. Nature 533, 452–454. DOI:10.1038/533452a (Encuesta sobre la crisis)
Cybersecurity & Infrastructure Security Agency (CISA - US Gov). Alerts & Tips. (Buscar alertas sobre vulnerabilidades en sistemas obsoletos usados en gobierno/infraestructura) https://www.cisa.gov/news-events/cybersecurity-advisories
Archivo General de la Nación (Colombia). Guía para la elaboración e implementación del Plan de Preservación Digital. https://www.archivogeneral.gov.co/caja_de_herramientas/GUIA_PLAN_PRESERVACION_DIGITAL_2021.pdf
Pérez, Karolina; Garduño, Guillermo (2009). Preservación del patrimonio documental digital en el mundo y en México. Investigación Bibliotecológica, vol. 23, núm. 49. https://www.scielo.org.mx/scielo.php?script=sci_arttext&pid=S0187-358X2009000200005
Stodden, Victoria; Miguez, Sheila; Seibold, John (Eds.) (2019). Reproducibility and Replicability in Science. National Academies Press. DOI:10.17226/25303 (Reporte comprensivo)
Boettiger, Carl (2015). An introduction to Docker for reproducible research. ACM SIGOPS Operating Systems Review 49(1): 71-79. DOI:10.1145/2723872.2723882 (Docker en investigación)
NixOS Foundation. Nix: The Purely Functional Package Manager. https://nixos.org/nix/ (Sitio oficial de Nix)
Chirigati, Fernando; Rampin, Rémi; Shaffer, Dennis; Freire, Juliana (2016). ReproZip: Computational Reproducibility With Ease. SIGMOD '16. DOI:10.1145/2882903.2903741 (Herramienta para empaquetar entornos)
Wikipedia. Replication crisis. https://en.wikipedia.org/wiki/Replication_crisis (Resumen del concepto)
Jones, Capers (2010). Software Engineering Best Practices. McGraw-Hill. (Libro clásico que aborda costes de mantenimiento, aunque no específicamente COBOL).
Sneed, Harry M. (Varias publicaciones). (Buscar trabajos de Sneed sobre mantenimiento y reingeniería de software COBOL).
Preserving Virtual Worlds (Proyecto). https://pvw.illinois.edu/ (Ejemplo de proyecto de preservación de entornos complejos)
IBM. Modernize mainframe applications. https://www.ibm.com/thought-leadership/institute-business-value/report/mainframe-modernization (Perspectiva de un proveedor sobre modernización COBOL)
Accenture (Reporte/Análisis, ejemplo). Mainframe Modernization Services. (Buscar análisis de consultoras sobre estrategias de modernización COBOL).
Austin, Colin (Blog - 2019). Music software and hardware: obsolescence and longevity. https://colinaustin.com/2019/10/14/62-music-software-and-hardware-obsolescence-and-longevity/ (Perspectiva personal sobre el tema en música)
Hepworth-Sawyer, Russ; Hodgson, Jay; Paterson, Justin; Toulson, Rob (Eds.) (2019). Innovation in Music: Performance, Production, Technology, and Business. Routledge. (Libro que puede tocar temas de obsolescencia tecnológica en música).
Butler, Mark J. (2014). Playing with Something That Runs: Technology, Improvisation, and Composition in DJ and Laptop Performance. Oxford University Press. (Analiza el rol de la tecnología, incluyendo DAWs, en la performance).
Théberge, Paul (1997). Any Sound You Can Imagine: Making Music/Consuming Technology. Wesleyan University Press. (Libro clásico sobre tecnología musical y su impacto, relevante para entender software antiguo).