Si vienes de Darktable, puedes estar acostumbrado a esto en el cuarto oscuro:

mientras que Ansel te ofrece esto:

Esto no es accidental, y es hora de explicar por qué, y por qué esto no se extenderá con opciones de personalización.
Las imágenes nacen de los pipelines
Un pipeline de píxeles es una secuencia de filtros en la que los píxeles se procesan para terminar en un medio. Photoshop llama a esos filtros capas , siguiendo una metáfora heredada del papel y la pintura opaca. Da Vinci Resolve, Blender, Natron, etc. los llaman nodos , siguiendo una metáfora basada en grafos dirigidos y diagramas de flujo , bien conocidos por los ingenieros. Ambos tienen una manera de mostrar cómo se organizan esos filtros, ya sea con un apilamiento de capas o con el gráfico de nodos (también conocido como diagrama de flujo).
La parte importante es, el orden importa.
Una breve historia de mal diseño
Darktable llama a esos filtros módulos. Pero ‘módulos’ se refiere a la lógica de programación modular : cada módulo se codifica por separado, usando una API uniforme, y no conoce a los otros módulos. El pipeline en sí no sabe nada sobre los internals de los módulos, solo conecta las entradas y las salidas. Es una manera limpia de desarrollar, pero es totalmente irrelevante para el usuario final.
El problema es que Darktable tiene 2 tipos de módulos:
- los módulos del lighttable (y los módulos en el panel izquierdo del cuarto oscuro), que son cajas de herramientas arbitrarias y, por lo tanto, elementos/marcos puramente GUI,
- los módulos del cuarto oscuro, que son tanto un filtro de píxeles ubicado en algún lugar en el pipeline, como una caja de herramientas GUI (igual que los módulos anteriores).
Y esos diferentes módulos, además de llamarse igual, se ven exactamente igual…


Son 3 errores aquí:
- nombrar un objeto GUI por su nombre técnico de implementación en lugar de su propósito funcional,
- nombrar y representar 2 objetos conceptualmente diferentes de la misma manera,
- no representar el orden de los módulos de manera clara y jerárquica.
Como resultado, muchos usuarios todavía consideran todos los módulos como cajas de herramientas arbitrarias, y han pedido durante años maneras de reordenarlos arbitrariamente en la ventana, lo cual una falta de liderazgo técnico (o su ausencia) cedió a ellos, en forma de un grupo de módulos terriblemente codificado (3500 líneas de código, sutilmente roto) y sobrecomplicado, consumiendo un 3% de tu CPU incluso cuando no interactúas con la aplicación, mientras tu cuarto oscuro permanece inactivo.
La guinda en el pastel es que los grupos están etiquetados por iconos, por el bien de la compacidad, pero esos iconos son absolutamente crípticos y solo los usuarios experimentados fingen saber qué representan (dibujé el que representa los rayos de luz pasando a través de una lente delgada, que la gente toma por un OVNI – aprendí de ese error).
Los buenos flujos de trabajo son conscientes de la línea de producción
Llevo 3 años siendo pagado por usuarios para explicarles los entresijos del software y responder la misma pregunta una y otra vez: dónde comenzar un flujo de trabajo y cómo desarrollarlo. Lo que aún me sorprende es que personas con un título de maestría, que leyeron la documentación y vieron la mayoría de mis videos, aún son incapaces de iniciar un flujo de trabajo de edición de imágenes por sí mismas. O esto grita mal diseño o la mayoría de las personas con educación superior son idiotas. De hecho, incluso si la gente fuera idiota, es más fácil hacer el diseño a prueba de idiotas1 que esperar que desarrollen un cerebro de la noche a la mañana, así que de cualquier modo el diseño es malo con respecto al público objetivo.
Si abres Photoshop, las capas se apilan una sobre otra de manera bastante intuitiva. Todos hemos trabajado con capas en proyectos de arte en la escuela primaria. No te llamaría la atención comenzar a trabajar en la capa más baja después de haber puesto algo nuevo en la parte superior. Bueno, los 70 módulos de Darktable, organizados en pestañas por tema, de una manera que no tiene en cuenta el pipeline ni el flujo de trabajo, están garantizados para desanimar a los recién llegados y promover malos hábitos entre los veteranos.
Flujos de trabajo sensatos son conscientes del pipeline, lo que significa que el orden en el que ajustas los filtros debe estar definido por dónde se ubican esos filtros en el pipeline. Pero digo conscientes del pipeline, y no definidos por el pipeline, porque el comienzo y el final del pipeline (propiedades de la escena y de la pantalla) deben configurarse primero, para tener una buena visión de lo que hacemos en el medio. Especialmente si vas a manipular señales HDR en una pantalla SDR, necesitas ponerte tus gafas de sol HDR primero para ver tu señal en SDR. Pero lo que ves no es lo que hay en tu pipeline. Por eso el flujo de trabajo no sigue 1:1 el pipeline, pero aún está bastante cerca de él.
Imagina que estableces un tono de color en el módulo de balance de color, apuntando a las luces altas a través del ajuste de ganancia. Luego encuentras que la imagen es demasiado oscura y la aclaras con el módulo de exposición. Pero exposición viene (mucho) antes que balance de color en tu pipe, así que ahora necesitas actualizar el ajuste de tono de color porque probablemente será demasiado pesado en los tonos medios. Ahora, convoluciona eso con otro módulo intermedio (o más) que use una máscara paramétrica en cualquier métrica de luz o luminancia… Estás adentrándote en la edición circular, un tipo de experiencia de edición particularmente ineficiente y frustrante donde cualquier nuevo ajuste invalida el anterior. Por supuesto, hay quienes piensan que, siendo la fotografía un arte, todo es cuestión de opinión y preferencias, así que en última instancia nada de esto importa. Arte o no, una casa de naipes caerá completamente en cualquier momento que comiences a jugar con los pisos inferiores, as que en última instancia se trata de cuánto tiempo deseas desperdiciar, y esto no tiene nada que ver con opiniones o preferencias. También argumentaría que los aficionados de fin de semana están igual de limitados por el tiempo que los fotógrafos profesionales: estos últimos por razones económicas, los primeros porque los fines de semana solo tienen 2 días y tendrán que estar de vuelta en la oficina el lunes por la mañana con suficiente diversión en su sistema para soportar otra settimana.
Entonces, ¿cómo sabes cuándo alejarte del orden del pipeline? Bueno, reservas una sesión conmigo para la demostración. Pero hay otra solución (más sobre eso más adelante)…
En cualquier caso, ofrecer a los usuarios más opciones para personalizar la UI (y tal vez reforzando el concepto erróneo inicial de que los módulos son solo cajas de herramientas GUI) no lo va a resolver. De hecho, está dando a las personas más opciones para perjudicarse. Lo que quieres y lo que es bueno para ti…
Re-examinando el problema
Mientras Darktable se ha degradado a un campo de juego para nerds donde nuevo significa mejor y cada problema llama a más código divertido, Ansel trata de resolver problemas simples de la manera simple, para producir un caballo de batalla confiable. Así que empecemos de nuevo desde lo alto.
Tenemos 70 módulos. Aunque Ansel ha deprecado una buena cantidad de ellos, todavía hay ‘demasiados’, en el sentido de que todos son útiles para algún propósito pero no los necesitas todo el tiempo, y no todos al mismo tiempo. Además, el espacio de pantalla es limitado y definitivamente no podemos tener todos ellos visibles al mismo tiempo. E incluso si pudiéramos, presentar un panel de control de Airbus a tu fotógrafo promedio no sería agradable.
Así que necesitamos elegir qué módulos mostrar en qué momento. Énfasis en tiempo.
Desplegando el eje del tiempo
Siguiendo con la idea de justo a tiempo, parece natural que el eje del tiempo se divida en pasos de flujo de trabajo. Así que la selección de todos los módulos visibles en un momento dado coincide con los que necesitarás ahora y en los próximos minutos. Al avanzar al siguiente paso del flujo de trabajo, avanzas en la GUI y cambias la vista. Se llama una presentación de diapositivas.
Esto traza un camino lineal a seguir, para obtener algo de estructura y orientación del aparente desorden. Las GUI no solo están destinadas a exponer controles, también están destinadas a enseñar, comunicar y publicitar las posibilidades disponibles.
Así que cada pestaña es ahora una diapositiva de nuestra presentación de imágenes de flujo de trabajo, que está estrechamente ligada al orden del pipeline. Y apareció estructura del desorden.
Con algunas excepciones. Por ejemplo, los módulos de reducción de ruido tienen que ocurrir temprano en el pipeline para la consistencia de la señal, sin embargo, aparecen después en el flujo de trabajo que el, digamos, calibración de color, porque funcionan a nivel de píxeles y generalmente no cambiarán el tono general (a menos que tengas un daño de ruido grave que pueda cambiar el eje verde/magenta, pero eso es típicamente por encima de 8000 ISO). Lo mismo ocurre con los algoritmos de enfoque: ninguno de estos cambiará dramáticamente la claridad, tono o croma como para invalidar los ajustes globales previos de color y exposición (en términos de flujo de trabajo), y los ajustes adecuados también estarán sujetos a cuánto hayas incrementado la exposición de la imagen (agravando así la fuerza visual del ruido). Esas excepciones a la regla se aclaran con el análisis numérico de los filtros de píxeles, lo que significa que las personas que no leyeron el código fuente con conocimiento previo de procesamiento de señales no tendrán idea.
Implementación
Principio
- Pasos del flujo de trabajo == pestañas de módulos.
- Esas pestañas tienen nombres textuales, que podrían ocupar más espacio en la GUI pero no tienes que leer un documento y/o adivinar lo que significan: está escrito en la etiqueta.
- Las primeras y últimas pestañas son especiales
- Muestran respectivamente la lista de módulos habilitados (pipeline) y la lista completa de módulos disponibles (todos).
- No todas las pestañas son inmediatamente visibles
- Dependiendo del ancho del panel lateral, algunas pestañas estarán ocultas, lo cual está bien porque vas a seguirlas de izquierda a derecha en secuencia, así que realmente no necesitas saber qué viene después
- Dentro de las pestañas, los módulos están organizados como capas en el orden del pipeline
- Eso es de abajo a arriba. Así es como debes configurarlos. Así que la pila de módulos representa la pila de efectos/filtros/capas sobre la imagen original.
Resumen: sigue el orden de la GUI de izquierda a derecha, y de abajo a arriba (porque son capas), y tienes tu flujo de trabajo sin necesidad de leer documentos tediosos.
Los módulos del cuarto oscuro pueden ser reordenados en cualquier pestaña manteniendo presionado Ctrl+Shift2 mientras haces un arrastre y soltado con el mouse, sobre los encabezados de los módulos. Ten en cuenta que esto reordena los módulos en el pipeline también, no debe usarse como una conveniencia GUI. Es mejor hacer esto en las pestañas ‘pipeline’ o ’todos’, donde tienes una visión completa sobre el contenido del pipeline.
Reemplazo de módulos favoritos
El diseño actual no tiene manera de definir módulos favoritos en una pestaña especial. No veo el punto de añadir más sobrecarga para resolver el problema de tener sobrecarga inicialmente.
Para esos módulos especiales, puedes asignar atajos a los eventos “mostrar” (también conocido como abrir, mostrar, desplegar) o “habilitar” (también conocido como activar). Ve al menú Editar, luego en la parte inferior haz clic en Atajos de teclado, luego con el cursor especial que obtienes, haz clic en el encabezado de tu pronto ser módulo favorito (en su nombre). Ejemplo aquí con el módulo de exposición:

Por defecto, se te mostrará el evento “mostrar”, en la columna de elemento (otra etiqueta que debería cambiar). Puedes cambiarlo por el evento “habilitar” o “instanciar” (también conocido como instanciar). El efecto no importa para este, no he probado en qué caso se usa y todo es un lío enredado de todos modos.
En cualquier caso, estos atajos te llevarán instantáneamente a tus módulos favoritos sin contaminar más el espacio GUI.
Conclusión
Esto no resuelve el problema de que los módulos se llamen algo que no interesa a los usuarios, y de que los módulos de procesamiento de imágenes se vean igual que aquellos que no lo son. Tengo algunas ideas respecto a esto, pero eso será para otro momento.
Notas al margen
Muchos otros herramientas previamente ocultas en iconos crípticos han sido integradas en el menú global. Este menú puede ser desplegado presionando Alt seguido de la letra mnemotécnica del menú (que se subrayará una vez que presiones Alt). Una vez desplegado, el menú puede navegarse con las teclas de flecha.
Volver al lighttable ahora está mapeado a la tecla Escape/Return. En el lighttable, la búsqueda de texto de imágenes también está mapeada a Ctrl+F (como esperarías). La navegación de imágenes se puede hacer con las teclas de flecha, la selección con la tecla Espacio, y abrir una imagen en el cuarto oscuro se puede hacer presionando la tecla Enter.
Esto significa que la aplicación ahora es casi enteramente navegable con el teclado sin tener que recordar los atajos. Esos atajos se muestran de todos modos en el menú, a la derecha de las entradas.
La tabla de todos los atajos ahora se puede encontrar en el menú de Ayuda, previamente solo era accesible… a través de un atajo.
Translated from English by : ChatGPT. In case of conflict, inconsistency or error, the English version shall prevail.
And I mean “idiot-proof” in a “prevent pouring water into the acid” way, not in a “cancel chemistry labs because acid can burn” way. It’s not idiot-proof if the idiot is not allowed to do anything. ↩︎
It’s shitty but that’s because Gtk’s way of handling drag and drop events sucks. ↩︎