Recientemente he aprendido sobre Docker y me encanta su enfoque declarativo que me permite poner todo bajo control de versión y hacer que toda la aplicación sea básicamente inmutable.
Entiendo que esto es una tarea mucho más difícil de lograr para un sistema operativo completo como Mac OSX.
Aun así, me encantaría tener más control sobre cómo se ejecuta todo.
Soy desarrollador, así que instalo cosas con frecuencia en mi máquina para probar, usar herramientas de línea de comandos que descargan paquetes, etc. pp.
Un ejemplo reciente fue que instalé una OSX Developer Beta porque un controlador de sonido dejó de funcionar y ya estaba arreglado en la versión beta. Arregló el problema de sonido pero introdujo otros problemas, así que tener la capacidad de "fácilmente" retroceder a un estado anterior hubiera sido realmente útil.
Entonces, ¿cuál es el mejor enfoque para llevar mi OSX desde una instalación limpia en blanco a un estado deseado y a partir de ahí "ponerlo bajo control de versión" para que pueda probar nuevas cosas fácilmente pero revertirlo en cualquier momento?
Tal vez incluir la idea de "aislar" cosas, por ejemplo cuando un familiar o amigo me pide prestado mi MacBook sin tener control sobre qué sitios web visitan y qué pueden descargar e instalar.
Otra cosa que sería agradable tener es si pudiera compartir esos estados entre dos máquinas (por ejemplo, cuando tengo una MacBook y un iMac)
Sé que Time Machine es capaz de hacer algunas de estas cosas, pero tal vez haya algo como "Docker" que lleve esto a otro nivel completamente.
Para ser honesto, nunca he usado realmente Time Machine porque viajaba con frecuencia y era más conveniente hacer copias de seguridad de archivos en la nube en lugar de necesitar un disco duro externo para las copias de seguridad de Time Machine. Esta situación ha cambiado ya que ahora planeo obtener un NAS donde se podrían hacer copias de seguridad de Time Machine.
Tal vez alguien conozca otras mejores prácticas o tenga un buen artículo que responda esas preguntas.
Gracias