Case-sensitivity y HFS+ (macOS)

Un archivo TypeScript con el siguiente código fuente compila en mi ordenador:

import Member from "../../Member";

Sin embargo, mi código de CI de GitHub Actions falló con el siguiente mensaje de error:

Error: src/lib/http/middlewares/member.ts(6,20): error TS2307: Cannot find module '../../Member' or its corresponding type declarations.

Después de darle un par de vueltas, el veredicto es que, como por defecto el sistema de archivos de macOS no diferencia entre mayúsculas y minúsculas, en macOS, import Member from "../../member" e import Member from "../../Member" son equivalentes. GitHub Actions por defecto utiliza GNU/Linux, donde sí se diferencia por defecto entre mayúsculas y minúsculas, así que no lo tiene tan claro.

Ugh. Lo peor es que hay software para macOS que espera que el sistema operativo no sea case-sensitive y que puede dar problemas si el disco duro en el que se instala macOS se configura para sí diferenciar mayúsculas de minúsculas.

Downgradeando a macOS Mojave

Después de hacer una balanza de beneficios vs incompatibilidades, estoy haciendo rollback a mi ordenador portátil para dejar de usar macOS Big Sur. En vez de volver a macOS Catalina, que sería la versión inmediatamente anterior a la Big Sur, voy a volver a macOS Mojave. En el fondo Catalina nunca funcionó bien, mientras que macOS Mojave sí funcionaba bien.

Algunos de los problemas que me encuentro usando macOS Big Sur en mi MacBook Pro de 2014; viejo pero que intenta dar todavía:

  • Lentitud general de toda la interfaz de usuario y de las aplicaciones principales del sistema operativo. También al levantar la tapa y sacarlo del modo sueño tarda bastante en pedirme la contraseña.
  • Entiendo que en nombre de la seguridad me pida algunas confirmaciones o me intente impedir que haga ciertas cosas avanzadas de vez en cuando. Sin embargo, cuando el sistema de seguridad pone la zancadilla cada dos por tres y cuando ya estás acostumbrado a hacer clic derecho + Abrir en vez de doble clic para abrir aplicaciones y lo haces mecánicamente, igual es que algo no va bien.
  • El proceso kernel_task escribe en disco una cantidad absurda de bytes, y temo que esté haciendo daño a mi SSD. Aquí una captura de pantalla teniendo un uptime del sistema de 20 minutos.
Monitor de actividad.

La interfaz de usuario es cuca, debo admitirlo. Normalmente soy muy crítico con los cambios hechos en las interfaces de usuario y suelo tratar estos cambios como regresiones, pero el diseño estético de macOS Big Sur me gusta. Una pena que lo haga a cambio de comprometer el rendimiento del sistema. Funciones como «Tintar las ventanas con el color del fondo de escritorio» noto que hacen que vaya todo aún más lento de lo que debería.

Incompatibilidades que me voy a encontrar al bajar a Mojave:

  • Recordatorios para iCloud no funcionará, ya que cambió el formato con el que se sincronizan en macOS Catalina. Como uso Recordatorios vía CalDAV a través de Fastmail, no será un problema.
  • Probablemente Pages, Keynote y Numbers funcionen raro, ya que las últimas versiones de ese software requieren mínimo Catalina. Como prácticamente mi portátil se ha convertido en una máquina de grabación y edición de vídeo y a veces de programación, no espero notarlo demasiado. Donde hoy en día uso Keynote, Pages y Numbers es en mi iPad de todos modos.
  • iTunes. Sigue funcionando, porque en Windows también existe iTunes todavía, pero probablemente Apple Music no funcione para siempre.

Sorprendentemente, aunque macOS Mojave ha desaparecido del buscador de la AppStore y de la lista de aplicaciones compradas, se puede encontrar el enlace en el sitio web de Apple, ya que tienen un artículo dedicado a descargar versiones viejas de macOS y MacOS X. 🤔

Una vez se descarga a través del sistema de actualizaciones, te avisa de que no puede ejecutar automáticamente lo que ha descargado porque los downgrades no están soportados oficialmente, pero en la carpeta Aplicaciones queda la descarga igualmente.

Para crear un pendrive booteable, se pueden seguir las instrucciones que también están en el sitio web de Apple. Esencialmente pasa por formatear un pendrive de tal modo que se pueda montar desde el sistema operativo (la guía pide formatealo como HFS+, MacOS Extended, pero yo lo he formateado como MS-DOS), y luego desde la terminal ejecutar:

sudo /Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

Cambiando /Volumes/MyVolume por el nombre del volumen, como podría ser /Volumes/Dani o /Volumes/TDK.

Por supuesto hay que hacer backup antes de los archivos, cosa que en mi caso es fácil gracias a que tengo pocos archivos en el sistema de todos modos. No he utilizado mucho este ordenador portátil para cacharrear desde que instale Big Sur en noviembre, de todos modos y el resto está en la nube, por lo que mi backup local se limita a mis claves SSH, la carpeta con mis repos, y hacer git push de mis dotfiles y de mi vimrc.

Con el pendrive grabado, se reinicia el ordenador manteniendo pulsada la tecla ALT para que salte el cargador de arranque extendido y en el menú se elige la unidad USB conectada. A partir de ahí, a instalar.

Hasta siempre, «Asignar app a espacios»

Una opción discreta pero útil que había en versiones anteriores de macOS era la posibilidad de fijar ventanas de una aplicación a todos los espacios o escritorios virtuales. Así, daba igual en qué escritorio virtual te colocases, podías tener algunas ventanas mostrarse en todas partes. Útil si organizas ventanas en escritorios pero hay momentos en los que necesitas mostrar una ventana concreta en todas partes. (Por ejemplo, en el escritorio 1 tienes una hoja de cálculo, en el escritorio 2 un navegador web, pero quieres tener visible la calculadora tanto en el escritorio 1 como en el 2).

Pues bueno, parece que esta opción ha desaparecido en la última versión de macOS. Quería fijar mi llamada de Google Meet a todos los escritorios virtuales, para tener el botón del micrófono a mano mientras miraba cosas, pero al ir al menú contextual ya no aparece.

Captura de pantalla del dock de macOS.
Esto es lo que veo al hacer clic derecho en el icono.

No encuentro comentarios al respecto en Reddit, lo cual me resulta llamativo porque siempre hay alguien en Reddit que critica este tipo de regresiones argumentando que «es el fin de macOS como lo conocemos y Apple no nos escucha» o cosas así.

Pero en el manual de usuario de macOS sí que ha desaparecido. En el manual de instrucciones de macOS 10.15 hay un epígrafe llamado «Asignar apps a espacios». En el manual de instrucciones de macOS 11.0 ya no está esa sección.

Triste.