Ni el idioma ni el acceso pueden quedarse implicitos
Las ultimas 24 horas en Nima Project tuvieron commits en tres repositorios:
world-cup-porrapublish-servicenikki-asteinza-web
No fue un dia de backend pesado ni de una gran feature aislada.
Fue un dia de hacer explicitas dos cosas que hasta ahora aun podian quedarse medio implicitas:
en que idioma se presenta una superficie publicada y bajo que reglas reales se entra a una partida.
Las dos conversaciones del dia apuntaron justo ahi:
- en
Ultimate Porra, el copy ya no podia seguir mezclandopublica/privadacongratis/de pago; - en
Notipad Publish, el sitio ya no podia seguir publicandose como si el locale por defecto, analytics y alternates fueran un detalle de salida.
Ultimate Porra tuvo que separar acceso, precio y tipo de partida
La conversacion que empujo este bloque fue muy concreta.
En una sesion de Codex del 20 de junio quedo dicho asi:
- la frase
Porras de pago = privadas para tu grupoya no era correcta; - tambien habra porras publicas de pago;
- y la web tenia que dejar de sugerir que
publicaequivale agratiso quede pagoequivale siempre aprivada.
Ese matiz se volvio producto en fix: refine home and voting card layout.
El commit no solo toca layout.
Tambien reescribe la entrada a las partidas:
Partidas publicasdeja de presentarse comoAbiertas para jugar sin codigoy pasa a decirSin codigo: algunas son gratis y otras requieren pase.Unirse con codigose restringe semantica y visualmente apartidas privadas con invitacion.Crear partida privadadeja claro que esCon invitacion para tu grupo.- y cada tarjeta gana un subtitulo especifico:
Abierta para unirse,Publica con pase,Con invitacion privadaoPrivada con pase.
Eso parece copy.
Pero no lo es solo.
Es una correccion de modelo mental:
la visibilidad de una partida y su modelo de acceso ya no pueden deducirse uno del otro.
Publica significa que la gente puede descubrirla.
Con pase significa que hay una condicion economica o de entitlement para entrar.
Con codigo significa que la entrada depende de una invitacion privada.
Cuando esos ejes se mezclan mal, el producto promete una cosa y el flujo real ejecuta otra.
La UX de entrada dejo de esconder el dato que realmente se comparte
El segundo commit de world-cup-porra fue Add invite code copy control to entry cards.
Aqui la conversacion posterior tambien fue precisa:
- se desplego el cambio;
- se verifico en produccion que
entry-code-copyestaba servido; - y se confirmo que el control real de
data-action="copy-code"ya formaba parte de la card.
La importancia de ese gesto es mayor de lo que parece.
Hasta ahora, la partida privada seguia dependiendo de que el usuario recordara que el codigo existia y de donde sacarlo.
Con este commit:
- el codigo deja de vivir como dato escondido;
- se convierte en accion primaria dentro de la card;
- y la tarjeta de entrada deja de ser solo resumen para pasar a ser superficie operable.
Es la misma tesis del bloque anterior, pero aplicada a interaccion:
si el acceso depende de un codigo, el producto tiene que tratar ese codigo como primer objeto visible y copiable, no como detalle enterrado en un flujo lateral.
Notipad Publish empezo a tratar el bilinguismo como contrato de salida
El otro frente del dia estuvo en publish-service con Support bilingual Notipad publishing.
Ese commit hace varios movimientos a la vez:
- el locale por defecto deja de resolverse como
espor inercia y pasa a preferirencuando existe; - el
titlepublicado pasa a salir de SEO localizado en vez de una sola cadena generica; brand,contact,actionButtonyanalyticsse empujan al contrato de publish como datos de primer nivel;- las paginas publicadas se ordenan por
logicalPathy por orden de locale para que alternates y salida sean deterministas; - Google Analytics se inyecta en el
headHTML publicado; - y la pagina por defecto puede redirigir a la version espanola cuando el navegador realmente indica preferencia por espanol.
Eso cambia algo importante.
Hasta ahora, el sitio bilingue podia existir como contenido duplicado en carpetas es y en, pero aun con demasiadas decisiones resueltas tarde.
Despues de este commit, el publish empieza a asumir que:
- el locale por defecto importa;
- el orden de variantes importa;
- la analitica tiene que existir en HTML publicado;
- y la alternancia entre idiomas no puede depender solo de convencion de carpetas.
Otra vez, no es un detalle tecnico.
Es pasar de tenemos contenido en dos idiomas a tenemos una superficie bilingue con reglas de salida legibles.
La propia web de Nikki se alineo con esa nueva verdad
El commit complementario en nikki-asteinza-web fue Update Nikki publish locale and blog.
Su papel fue cerrar la distancia entre la capacidad nueva de la plataforma y la configuracion del sitio real:
site-config.jsoncambiadefaultLocaledeesaen;- el
READMEdeja documentado que el locale por defecto ya no vive enSrc/content/essino enSrc/content/en; .notipad/order.jsonincorpora la entrada anterior del blog en ambos idiomas;- y el sitio actualiza sus indices y orden interno para que la salida publicada coincida con la nueva logica del publish.
Eso importa porque evita una trampa comun:
tener una plataforma capaz de publicar bien en dos idiomas mientras el sitio real sigue anclado en supuestos viejos.
La web de Nikki ya no solo contiene contenido bilingue.
Ahora tambien declara cual es su idioma por defecto y deja que publish opere con esa decision de forma consistente.
Lo que realmente cambio en estas 24 horas
La version corta seria esta:
Ultimate Porraaclaro sus reglas de entrada;publish-serviceempezo a publicar bilingue de forma mas estricta;nikki-asteinza-webse alineo con el nuevo locale por defecto.
Pero el cambio de fondo es otro.
Nima Project empezo a tratar idioma y acceso como contrato visible de producto, no como consecuencia derivada del contenido o del flujo.
Eso se nota en dos decisiones gemelas:
- una partida publica puede requerir pase sin dejar de ser publica;
- un sitio con carpetas
esyennecesita un locale por defecto, alternates, analitica y orden de salida escritos de forma explicita.
Lo que me llevo de este tramo
Publica,privada,gratis,de pago,con paseycon codigoson ejes distintos; si el copy los mezcla, el producto tambien.- Cuando un codigo es la llave real de acceso, esconderlo fuera de la card principal degrada la operacion.
- Un sistema bilingue no queda resuelto por tener dos carpetas de contenido: necesita orden, fallback, locale por defecto y salida determinista.
- Inyectar analytics y alternates desde publish convierte HTML final en contrato, no en simple render.
- Cambiar
defaultLocaleen el sitio real importa tanto como soportarlo en la plataforma; de lo contrario, la capacidad nueva queda solo en infraestructura.
Estas 24 horas no anadieron la funcionalidad mas ruidosa del proyecto.
Anadieron algo mas importante:
la disciplina de no dejar implicito ni como entra la gente ni en que idioma aterriza cuando la superficie ya es publica.
Parte de mis notas de producto y plataforma. Sigue el blog o escribeme.