From 524d18aba15da3d4128e65c70fe5baa344309874 Mon Sep 17 00:00:00 2001 From: Sergio Date: Thu, 3 Sep 2026 03:47:17 +0000 Subject: [PATCH] =?UTF-8?q?plan=20de=20apps:=20el=20triaje=20preguntaba=20?= =?UTF-8?q?=C2=AB=C2=BFexiste=20la=20receta=3F=C2=BB=20y=20la=20pregunta?= =?UTF-8?q?=20es=20=C2=AB=C2=BFla=20alcanza=20qui=C3=A9n=20la=20usa=3F?= =?UTF-8?q?=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se descubrió usándolo. `wf-recorder` daba 0 faltantes / 0 muros, y al ir a escribirlo resultó que sus dos backends de audio —pipewire y pulse— existen en las TRES colas de escritorio y en NINGUNA en el corpus. Una receta del corpus no ve una cola hermana, así que wf-recorder construye pero graba MUDO, y no tiene backend ALSA con el que caerse. Lo que eso destapa es más grande que wf-recorder y por eso queda escrito como decisión abierta: **el corpus no tiene ningún cliente de audio salvo ALSA**. Ya chocó dos veces en un día — mpv terminó con `--ao=alsa` en vez de su salida nativa, y ahora esto. Las tres salidas posibles (promover UNA pipewire al corpus / aceptar ALSA como la ABI única / que las apps multimedia vivan en las colas) quedan planteadas con su precio; la primera choca con la enfermedad de las dos glib y no se decide de madrugada. wf-recorder NO se escribe hasta entonces: un grabador de pantalla mudo es la clase de media-cosa que conviene no sellar sin que alguien la haya elegido. --- docs/plan-apps-usuario-final.md | 53 +++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/docs/plan-apps-usuario-final.md b/docs/plan-apps-usuario-final.md index 997a4c62..a5d09f04 100644 --- a/docs/plan-apps-usuario-final.md +++ b/docs/plan-apps-usuario-final.md @@ -33,7 +33,7 @@ Dos columnas, y **la que importa es la segunda**: | app | faltan | muros | veredicto | |---|---:|---|---| -| **wf-recorder** | **0** | — | **construible HOY.** Grabar pantalla en Wayland. | +| **wf-recorder** | 0 | *(ver ⚠ abajo)* | construible hoy **sin audio**: su captura de sonido es pulse o pipewire, y ninguno de los dos se alcanza desde el corpus. | | **imv** | 7 | — | barato: los 7 son cargadores de formato opcionales (heif, jxl, freeimage…). Visor de imágenes. | | **zathura** | 8 | — | lector de PDF; `girara` es su propia lib y ya usa GTK4 en Alpine. | | **mupdf** | 9 | X11 | el X11 es del visor `mupdf-x11`; el motor y `mupdf-gl` no. Requiere mirar. | @@ -45,6 +45,47 @@ Dos columnas, y **la que importa es la segunda**: | **chromium** | 38 | **GTK3**, **Qt6**, X11 | peor que Firefox por todos lados. | | **libreoffice** | 59 | **GTK3**, **Qt6**, X11 | 59 recetas y tres muros. No es un ticket, es un año. | +## ⚠ El defecto del método, encontrado al usarlo (y lo que destapó) + +La columna «recetas que faltan» pregunta **¿existe esta receta en el disco?** y esa es la pregunta +equivocada. La correcta es **¿la alcanza el consumidor?** — porque una receta resuelve sus deps +sibling-first (su propia cola) y después el catálogo PADRE, **nunca una cola hermana**. + +Se descubrió al ir a escribir `wf-recorder`, que la tabla daba en 0/0: su `makedepends` pide +`pipewire-dev` y `pulseaudio-dev`, los dos existen… **en las tres colas de escritorio y en ninguna +en el corpus**. Una app del corpus no los ve. wf-recorder construye igual (`-Dpulse=disabled +-Dpipewire=disabled`, `have_audio=false`) pero graba **sin sonido**, y no tiene backend ALSA con el +que caerse. + +### Lo que eso destapa, que es más grande que wf-recorder + +> **El corpus no tiene ningún cliente de audio salvo ALSA.** `libpipewire-0.3` y `libpulse` viven +> sólo en `incoming-{kde,gnome,cosmic}`. Toda app multimedia que llegue al corpus va a chocar acá. + +Ya chocó dos veces en un día: `mpv` terminó con `--ao=alsa` en vez de su salida nativa de PipeWire +(y por eso hubo que dar vuelta `-Dpipewire-alsa` en las tres pipewire, que fue el arreglo correcto +pero fue un rodeo), y ahora `wf-recorder` se queda mudo. + +**La decisión que hay que tomar (no es de madrugada):** promover UNA pipewire al corpus. Construye +—el corpus tiene su propia `glib`, `dbus` y `pcre2`— pero el problema no es construirla: es que una +imagen que hidrate `corpus/pipewire` **y** la de su cola pondría dos `libpipewire-0.3.so` distintas +en la misma ruta, que es la enfermedad de las dos glib. Las salidas posibles, para pensarlas +despierto: + +1. **Una sola pipewire, en el corpus, y las tres colas jubilan la suya.** Es lo más limpio y es lo + que ya se hizo con otras 13 copias que sellaban igual — pero éstas NO sellan igual (difieren en + glib/dbus/pcre2), así que hay que decidir cuál gana y volver a sellar wireplumber y los portales + de las tres colas. +2. **Aceptar ALSA como la única ABI de audio del corpus**, que es lo que hoy quedó funcionando de + hecho: `-Dpipewire-alsa=enabled` hace que un cliente ALSA desemboque en PipeWire. Barato y ya + está hecho; el precio es que las apps del corpus nunca usan la API nativa (sin control por-stream, + sin metadata de sesión) y que las que sólo hablan pulse/pipewire —wf-recorder— quedan afuera. +3. **Que las apps multimedia vivan en las colas**, una copia por escritorio. Es lo que la estructura + empuja hoy y es exactamente lo que no queremos para una app que sirve a las cuatro imágenes. + +Hasta que eso se decida, `wf-recorder` queda **sin escribir**: un grabador de pantalla mudo es +justamente la clase de media-cosa que conviene no sellar sin que alguien la haya elegido. + ## Los dos veredictos que corrigen al ADR ### Firefox NO es montón A @@ -84,10 +125,12 @@ cierre (wayland, ffmpeg, libdrm) quedó completo cuando entró mpv. ## Orden propuesto, en reemplazo del del ADR 1. ✅ **mpv** — hecho (2026-09-03). -2. **wf-recorder** — 0 faltantes. Cubre el caso de uso principal de OBS por una receta. -3. **imv** — visor de imágenes; los 7 faltantes son opcionales y se puede entrar con los mínimos. -4. **zathura** (+ backend PDF) — verificar antes que su cadena sea GTK4 y no GTK3. -5. **Decisión de navegador** — no es trabajo de recetas, es la elección de arriba. No debería +2. **decisión de audio del corpus** (el ⚠ de arriba). Destraba wf-recorder y le da a mpv + su salida nativa. Es una decisión, no una campaña. +3. **wf-recorder** — inmediato una vez tomada esa decisión; cubre el caso de uso principal de OBS. +4. **imv** — visor de imágenes; los 7 faltantes son opcionales y se puede entrar con los mínimos. +5. **zathura** (+ backend PDF) — verificar antes que su cadena sea GTK4 y no GTK3. +6. **Decisión de navegador** — no es trabajo de recetas, es la elección de arriba. No debería entrar a una cola de build hasta que esté tomada. OBS, Firefox, Chromium, GIMP y LibreOffice **salen del montón A** hasta que se decida GTK3 o qorpa.