# Definiciones de construccin independientes de su origen > [! nota]- > El contenido de esta página se ha generado a partir de la transcripción de audio/vídeo y la transformación del texto del contenido y los enlaces de esta fuente. Fuente: [https://fosdem.org/2025/schedule/event/fosdem-2025-4337-treating-build-definitions-independent-of-their-origin/](https://fosdem.org/2025/schedule/event/fosdem-2025-4337-treating-build-definitions-independent-of-their-origin/) <video src=«https://video.fosdem.org/2025/h2215/fosdem-2025-4337-treating-build-definitions-independent-of-their-origin.av1.webm» controls></video> ## Resumen y aspectos destacados: La charla de Klaus Aehlig en FOSDEM 2025 se centra en la independencia de las definiciones de construcción en software, un enfoque que permite un manejo más eficiente de las dependencias y la ejecución remota de construcciones. Utilizando el sistema de construcción de código abierto justbuild, Aehlig ilustra cómo las definiciones pueden ser tratadas como objetos independientes de su origen, facilitando el almacenamiento en caché y la ejecución remota. **Independencia de las Definiciones de Construcción** Aehlig argumenta que en lugar de referirse a archivos por su ubicación en el sistema, deberíamos enfocarnos en su contenido. Esto permite que las definiciones sean independientes de su origen, lo que facilita su almacenamiento en caché y mejora la eficiencia al construir software complejo. **Ventajas de la Ejecución Remota y el Almacenamiento en Caché** El uso de justbuild permite que las fuentes del proyecto sean suficientes para la ejecución remota, manteniendo los beneficios de una construcción preconfigurada. Esto no solo optimiza el uso de recursos sino que también simplifica la colaboración en proyectos distribuidos. **Implementación en JustBuild** La implementación de estos conceptos en justbuild, disponible en GitHub, demuestra cómo el enfoque puede transformar la manera en que se gestionan las construcciones de software, haciendo la transición entre construcciones granulares y tradicionales más fluida. ## Importancia para una transformación ecosocial La independencia de las definiciones de construcción es crucial para una transformación ecosocial ya que promueve la eficiencia y la sostenibilidad en el desarrollo de software. Al reducir la dependencia de ubicaciones específicas, se optimiza el uso de recursos y se facilita la colaboración en proyectos abiertos. Esto es especialmente relevante para diseñadores ecosociales que buscan minimizar el impacto ambiental de sus proyectos. Las herramientas como justbuild pueden ser aplicadas para mejorar la eficiencia en la construcción de software, reduciendo la necesidad de recursos físicos y promoviendo una infraestructura más sostenible. Sin embargo, quedan retos en la adopción de estos métodos, especialmente en la integración con sistemas existentes y en la aceptación por parte de comunidades que aún dependen de métodos tradicionales. ## Slides: | | | | --- | --- | | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_001.jpg\|300]] | La primera diapositiva introduce el tema central de la charla: cómo tratar las definiciones de construcción de manera independiente de su origen. Klaus Aehlig presenta una visión general de los conceptos clave que se discutirán, incluyendo las definiciones de acción, objetivo y repositorio, así como la importancia de servir objetivos de manera eficiente. Esta independencia permite un enfoque más flexible y eficiente en la construcción de software, evitando las limitaciones de las ubicaciones de archivo tradicionales. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_002.jpg\|300]] | La segunda diapositiva presenta un ejemplo de Makefile, destacando cómo los archivos suelen ser referidos por su ruta en el sistema de archivos, lo que limita la flexibilidad. Aehlig sugiere que en lugar de enfocarse en estos efectos secundarios, deberíamos centrarnos en las definiciones reales. Esto permite una estructura más clara y eficiente, haciendo que las dependencias y acciones sean más explícitas y manejables, lo cual es crucial para optimizar el proceso de construcción. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_003.jpg\|300]] | La tercera diapositiva explica cómo los objetos definidos, como 'foo.o', pueden ser descritos como el resultado de una acción particular. Se detalla cómo estos objetos se identifican por un hash único, lo que permite que las acciones sean independientes de su ejecución local. Esta definición basada en el contenido, en lugar de la ubicación, facilita el almacenamiento en caché y la ejecución remota, mejorando la eficiencia del proceso de construcción. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_004.jpg\|300]] | En la cuarta diapositiva, se detalla cómo se define una acción, incluyendo el comando a ejecutar y las variables de entorno necesarias. Se ilustra cómo las entradas y salidas de las acciones están claramente definidas, lo que permite que las acciones sean evaluadas y almacenadas en caché de manera independiente de su origen. Este enfoque permite una ejecución más flexible y eficiente, esencial para la colaboración en proyectos distribuidos. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_005.jpg\|300]] | La quinta diapositiva muestra cómo 'libfoo.a' puede ser definido como el resultado de una acción específica. Se describe cómo estas acciones son identificadas y gestionadas a través de un sistema de hash, permitiendo que las definiciones de los artefactos sean independientes de su ubicación física. Esto facilita la reutilización y el intercambio de componentes en diferentes entornos de construcción. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_006.jpg\|300]] | La sexta diapositiva detalla la acción específica que produce 'libfoo.a', incluyendo el comando y las variables de entorno utilizadas. Se enfatiza cómo las entradas y salidas están claramente definidas, permitiendo que la acción sea evaluada y almacenada en caché independientemente de su origen. Este enfoque mejora la eficiencia y flexibilidad en la construcción de software, permitiendo una mejor gestión de las dependencias. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_007.jpg\|300]] | La séptima diapositiva introduce las definiciones de artefactos, explicando cómo pueden ser definidos por sus identificadores de blob git. Se detalla cómo el grafo de acciones puede ser evaluado y almacenado en caché de manera independiente de su origen, permitiendo la ejecución remota y la reutilización eficiente de componentes. Este enfoque ofrece una manera más sostenible y colaborativa de manejar las construcciones de software. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_008.jpg\|300]] | La octava diapositiva revisa el mismo Makefile, destacando la estructura implícita de las librerías 'foo' y 'bar', y el binario 'app'. Se discuten las dependencias entre ellas, sugiriendo que hacer explícita esta estructura puede mejorar la eficiencia y claridad del proceso de construcción. Este enfoque permite una mejor gestión de las dependencias y facilita la colaboración en proyectos complejos. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_009.jpg\|300]] | La novena diapositiva presenta una descripción más estructurada de los objetivos, utilizando un formato que especifica las reglas del lenguaje y otras dependencias. Se ilustra cómo esta descripción permite una evaluación más clara y eficiente de los objetivos, facilitando la transición a un enfoque basado en paquetes. Este método mejora la gestión de las dependencias y optimiza el proceso de construcción. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_010.jpg\|300]] | La décima diapositiva muestra el resultado del análisis de 'foo', destacando cómo se definen los artefactos y se evalúan las dependencias. Se detalla cómo se gestionan los argumentos de compilación y enlace, permitiendo una transición fluida entre la construcción y el empaquetado. Este enfoque mejora la eficiencia y flexibilidad del proceso de construcción, facilitando la colaboración en proyectos distribuidos. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_011.jpg\|300]] | La undécima diapositiva presenta el resultado del análisis de 'bar', mostrando cómo se gestionan los artefactos y las dependencias. Se detalla cómo los argumentos de compilación y enlace se gestionan de manera eficiente, permitiendo una transición fluida entre la construcción y el empaquetado. Este enfoque optimiza el proceso de construcción y facilita la reutilización de componentes en diferentes entornos. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_012.jpg\|300]] | La duodécima diapositiva muestra el resultado evaluado del análisis de 'bar', destacando cómo se gestionan los artefactos y las dependencias de manera eficiente. Se detalla cómo los argumentos de compilación y enlace se gestionan de manera efectiva, permitiendo una transición fluida entre la construcción y el empaquetado. Este enfoque mejora la eficiencia y flexibilidad del proceso de construcción, facilitando la colaboración en proyectos distribuidos. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_013.jpg\|300]] | La decimotercera diapositiva detalla cómo se definen las unidades lógicas, como bibliotecas y binarios, mediante reglas específicas del lenguaje y otras dependencias. Se ilustra cómo la evaluación de estas reglas proporciona una descripción intensional que otros objetivos pueden utilizar. Este enfoque permite una gestión más eficiente de las dependencias y facilita la transición a un enfoque basado en paquetes. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_014.jpg\|300]] | La decimocuarta diapositiva presenta una descripción modificada de los objetivos, destacando cómo se gestionan las dependencias y se especifican las reglas del lenguaje. Se ilustra cómo este enfoque permite una evaluación más clara y eficiente de los objetivos, facilitando la transición a un enfoque basado en paquetes. Este método mejora la gestión de las dependencias y optimiza el proceso de construcción. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_015.jpg\|300]] | La decimoquinta diapositiva muestra la descripción del objetivo con 'bar' marcado como exportado, destacando cómo se gestionan las dependencias y se especifican las configuraciones flexibles. Se ilustra cómo este enfoque permite una evaluación más clara y eficiente de los objetivos, facilitando la transición a un enfoque basado en paquetes. Este método mejora la gestión de las dependencias y optimiza el proceso de construcción. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_016.jpg\|300]] | La decimosexta diapositiva describe la configuración del repositorio, destacando cómo se gestionan las definiciones del repositorio y las vinculaciones. Se ilustra cómo este enfoque permite una gestión más eficiente de las dependencias y facilita la colaboración en proyectos distribuidos. Este método optimiza el proceso de construcción y mejora la reutilización de componentes. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_017.jpg\|300]] | La decimoséptima diapositiva presenta la configuración derivada del repositorio, mostrando cómo se gestionan las vinculaciones y las raíces del espacio de trabajo. Se ilustra cómo este enfoque permite una gestión más eficiente de las dependencias y facilita la colaboración en proyectos distribuidos. Este método optimiza el proceso de construcción y mejora la reutilización de componentes. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_018.jpg\|300]] | La decimoctava diapositiva detalla el proceso de análisis de 'bar', mostrando cómo se gestionan las configuraciones del repositorio y las exportaciones de objetivos. Se ilustra cómo este enfoque permite una evaluación más clara y eficiente de los objetivos, facilitando la transición a un enfoque basado en paquetes. Este método mejora la gestión de las dependencias y optimiza el proceso de construcción. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_019.jpg\|300]] | La decimonovena diapositiva presenta la clave de caché, destacando cómo se gestionan las configuraciones efectivas y las claves del repositorio. Se ilustra cómo este enfoque permite una gestión más eficiente de las dependencias y facilita la colaboración en proyectos distribuidos. Este método optimiza el proceso de construcción y mejora la reutilización de componentes. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_020.jpg\|300]] | La vigésima diapositiva muestra la descripción del repositorio referenciada por la clave, destacando cómo se gestionan las vinculaciones y las raíces del espacio de trabajo. Se ilustra cómo este enfoque permite una gestión más eficiente de las dependencias y facilita la colaboración en proyectos distribuidos. Este método optimiza el proceso de construcción y mejora la reutilización de componentes. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_021.jpg\|300]] | La vigésima primera diapositiva detalla el proceso de construcción de algo que depende de 'bar', mostrando cómo se gestionan las configuraciones del repositorio y las exportaciones de objetivos. Se ilustra cómo este enfoque permite una evaluación más clara y eficiente de los objetivos, facilitando la transición a un enfoque basado en paquetes. Este método mejora la gestión de las dependencias y optimiza el proceso de construcción. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_022.jpg\|300]] | La vigésima segunda diapositiva muestra el análisis de 'bar' nuevamente, destacando cómo se gestionan las configuraciones del repositorio y las exportaciones de objetivos. Se ilustra cómo este enfoque permite una evaluación más clara y eficiente de los objetivos, facilitando la transición a un enfoque basado en paquetes. Este método mejora la gestión de las dependencias y optimiza el proceso de construcción. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_023.jpg\|300]] | La vigésima tercera diapositiva explica que ahora no hay nada que construir para 'bar', mostrando cómo se gestionan las configuraciones del repositorio y las exportaciones de objetivos. Se ilustra cómo este enfoque permite una gestión más eficiente de las dependencias y facilita la colaboración en proyectos distribuidos. Este método optimiza el proceso de construcción y mejora la reutilización de componentes. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_024.jpg\|300]] | La vigésima cuarta diapositiva introduce la idea de proporcionar un servicio de mapeo para los identificadores de árbol, destacando cómo este enfoque permite una gestión más eficiente de las dependencias y facilita la colaboración en proyectos distribuidos. Se ilustra cómo este método optimiza el proceso de construcción y mejora la reutilización de componentes. | ![[FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_025.jpg\|300]] | La vigésima quinta diapositiva resume la charla, destacando la importancia de tratar las definiciones como estructuras de datos independientes de su ubicación. Se ilustra cómo este enfoque permite una transición fluida entre la construcción y el empaquetado, mejorando la eficiencia y flexibilidad del proceso de construcción. Este método optimiza la gestión de las dependencias y facilita la colaboración en proyectos distribuidos. ## Enlaces [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_001.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_001.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_002.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_002.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_003.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_003.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_004.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_004.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_005.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_005.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_006.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_006.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_007.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_007.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_008.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_008.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_009.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_009.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_010.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_010.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_011.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_011.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_012.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_012.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_013.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_013.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_014.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_014.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_015.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_015.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_016.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_016.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_017.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_017.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_018.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_018.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_019.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_019.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_020.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_020.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_021.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_021.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_022.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_022.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_023.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_023.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_024.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_024.jpg) [FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_025.jpg](FOSDEM 2025/assets/Treating-build-definitions-independent-of-their-or/preview_025.jpg)