~herlock_sholmes/PensamientoComputacional

1085e67fdfb1eae3795bc09b7a730613b2a9cba8 — Herlock Sholmes 7 months ago d3b2c76
0018: se edita la presentación IntroaGNUGuix

Cerrando ya la parte histórica de Nix, y entrando en el tema de Guix,
además de generar dos imágenes utilizadas en la presentación.
A Presentaciones/IntroGuix/TesisNix.png => Presentaciones/IntroGuix/TesisNix.png +0 -0
A Presentaciones/IntroGuix/coreutils.png => Presentaciones/IntroGuix/coreutils.png +0 -0
A Presentaciones/IntroGuix/dag.pfd => Presentaciones/IntroGuix/dag.pfd +0 -0
M Presentaciones/IntroaGNUGuix.org => Presentaciones/IntroaGNUGuix.org +79 -4
@@ 4,21 4,96 @@

* Estructura de la presentación
** Declaración de intenciones
Este escrito tiene por finalidad mostrar las bondades del sistema GNU Guix mediante la recapitulación histórica, demostración de funciones relevantes, y guiar en el mantenimiento de la distro. Todo desde el punto de vista de un usuario no técnico de esta distribución (y gestor de paquetes) avanzada del sistema GNU.
Este escrito tiene por finalidad mostrar las bondades del sistema GNU Guix mediante la
recapitulación histórica, demostración de funciones relevantes, y guiar en el
mantenimiento de la distro. Todo desde el punto de vista de un usuario no técnico de
esta distribución (y gestor de paquetes) avanzada del sistema GNU.
** Partes relevantes
- Historia :: Orígenes y motivaciones del proyecto GNU Guix.
- Funcionamiento :: Detalles de lo que convierte a Guix en un gestor de paquetes avanzado.
- Configuración :: Utilizar las herramientas vistas para tener una distro ajustadas a tus necesidades.
- Mantención :: Peculiaridades a las que dedicar atención para el correcto funcionamiento del SO.
- Funcionamiento :: Detalles de lo que convierte a Guix en un gestor de paquetes
  avanzado.
- Configuración :: Utilizar las herramientas vistas para tener una distro ajustadas a
  tus necesidades.
- Mantención :: Peculiaridades a las que dedicar atención para el correcto
  funcionamiento del SO.
- Palabras de cierre :: Compromiso y alineamiento con la filosofía de GNU guix.

* Historia
** Antecedentes
*** El origen de Nix
El 18 de Enero del 2006, se publica la tesis doctoral de Eelco Dolstra titulada

[[./IntroGuix/TesisNix.png]]

*** ¿Cómo logra esto Nix?
Todos los programas se dirigen al directorio =/nix/store/= y hay sólo un
directorio por paquete instalado en la tienda.

Por ejemplo:
- =/nix/store/=
  + =./$HASH....emacs-26.3/=
  + =./$OTRO_HASH......texlive-20190410/=
  + =./$TERCER_HASH......stumpwm-19.11/=

*** Esto permite
La *tienda* es un directorio inmutable, y sólo puede ser intervenido por el gestor de
paquetes /nix/. Así, tenemos un sistema con componentes declarados antes de su
instalación.

Además, el hecho de que tengan una serie numérica para diferenciar cada directorio,
permite que más de una versión para un mismo programa esté en el sistema.

*** Entonces
Todo el sistema son enlaces simbólicos a los programas que están en la *tienda*.

** ¿Funcional?
*** El gestor de paquetes Nix
=dpkg= funciona bien, pero cuando se habla de funcional en este contexto se está haciendo referencia tanto al paradigma de programación, como al concepto matemático del que proviene.

*** Un ejemplo
El conjunto de dependencias de las coreutils de GNU:

[[./IntroGuix/coreutils.png]]

*** Así
El lenguaje Nix para estas definiciones puede resultar hostil, por lo que un grupo de
hackers de GNU decide utilizar la implementación Guile de Scheme.

*** En resumen
El modelo de gestión de software que implementa Nix es /funcional/ porque:

+ Las instalaciones son *inmutables*.
+ Las compilaciones/instalaciones *no tienen efectos secundarios*.
+ Construcción y despliegue de software :: llamar a la función *build*.
+ La tienda :: almacenamiento de los resultados de llamar a las funciones.
+ Recolección de basura

** GNU Guix
*** Primeros objetivos
En 2012, Ludovic Cortés presenta GNU Guix, con la idea de conservar el modelo de construcción y despliegue que hizo, pero:

- Utilizando una implementación de scheme llamada Guile para los paquetes.
- Agregando hackers de GNU.

[[./IntroGuix/Guix.png]]
Logo de Guix por sirgazil (CC-BY-SA 4.0)

*** Propósitos de la distribución
En la presentación, titulada "Guix, functional package management for the people, and
for GNU?" se establecen 2 motivaciones:

+ Tener un gestor de paquetes funcional.
+ Utilizarlo para construir una distribución GNU/Linux (u otras variantes de GNU) que
  sea 100% software libre, práctica, y que esté fuertemente integrada con el sistema
  GNU.

Eventualmente, se presentarían 2 nuevos objetivos centrales:

+ Que las usuarias de la distribución puedan tener una Libertad 1 facilitada por Guile.
+ Tener ambientes de desarrollo reproducibles (desde la declaración de la configuración, hasta el bootstrap de inicio).

* Funcionamiento
** Configuración declarativa

* Configuración