Cuando compartes una cuenta en HiBill, algo pequeño pero real cambia de manos. El reparto deja de ser tuyo. Cada persona que abre el enlace decide lo que tomó, y la cifra junto a su nombre es suya: no una cantidad que tú le asignaste, sino una que declaró ella.

Eso resultó importar más de lo que esperábamos cuando intentamos construir el camino de vuelta.
El callejón sin salida
Hasta esta semana, compartir era una puerta de un solo sentido. Podías dejar de compartir, pero eso solo mataba el enlace. La cuenta seguía siendo una división abierta para siempre: los controles del reparto, ocultos; ninguna forma de editar cómo se dividía; ninguna forma de volver a compartirla desde la propia cuenta. Un candado con la llave tirada.
Nadie lo diseñó así. Es la forma que sale cuando implementas «compartir» y «dejar de compartir» como los dos extremos de un interruptor y nunca te preguntas para qué sirve de verdad el interruptor. Dejar de compartir responde a ¿puede elegir su parte gente nueva? No responde a ¿de quién es ahora el reparto?, y habíamos dado por hecho, sin decirlo, que la segunda pregunta se resolvía sola junto con la primera.
No es así.
Dos puertas que parecen una
Piensa en cuál habría sido el arreglo obvio: que Dejar de compartir devolviera la cuenta a como estaba. Un botón, ningún concepto nuevo, adiós al callejón sin salida.
Estuvimos a punto de lanzar exactamente eso. Está mal, y la razón merece explicarse.
Desactivar un enlace y quedarse con el poder de editar las partes que eligieron otros son decisiones distintas, con consecuencias distintas. La primera es poner orden: la cena terminó, no hacen falta más elecciones. La segunda cambia quién decide lo que debe cada uno. Si Dejar de compartir hiciera las dos cosas, alguien que solo estaba recogiendo después de una comida adquiriría en silencio el poder de reescribir lo que otras cuatro personas dijeron que tomaron, y todo por pulsar un botón que solo prometía desactivar una URL.

Así que son dos puertas. Dejar de compartir cierra el enlace. Retomar el control, una acción aparte con su propia confirmación, convierte la cuenta de nuevo en un reparto normal que gestionas tú.

Lo que de verdad cuesta «retomar el control»
Esta es la parte que nos parece interesante: retomar el reparto no mueve ni una sola cifra.
Cada uno conserva el importe que eligió. Lo que nadie eligió, que estaba implícitamente a cargo de quien pagó, se convierte en una línea explícita para quien pagó. Los artículos del recibo se quedan. Calcula los saldos antes y después: son idénticos.
Lo que cambia es la autoridad. Esos importes dejan de ser elegidos por cada uno, lo que significa que ahora puedes editarlos.
Parece poca cosa, y lo es todo. Una cifra que alguien eligió para sí y una cifra que tú le asignaste merecen distinta confianza, aunque sean la misma cifra. Unas cuentas compartidas solo sirven si las dos personas se las creen, y esa confianza nace de saber quién podía escribir qué.
Así que la confirmación dice exactamente eso, en lugar de algo tranquilizador sobre que nada cambia: Cada uno conserva su importe actual, pero ya nadie elige su propia parte: podrás editar la de cualquiera.
Devolver algo a cambio
Hay una simetría de la que solo nos dimos cuenta mientras lo construíamos.
Una parte que alguien eligió por sí mismo no tiene botones para aprobarla o rechazarla. ¿Para qué? No puedes discutir una cifra que elegiste tú. Ese es tu consentimiento, ya dado.
Pero cuando el reparto vuelve a estar bajo tu control, ese razonamiento se viene abajo. La parte ya no es algo que eligieron ellos; es algo que ahora puedes cambiar tú. Así que retomar el control devuelve los controles para aprobar o rechazar a todos los que están en la cuenta.
Tú ganas la capacidad de editar su parte. Ellos ganan la capacidad de decirle que no. Ninguna de las dos mitades funciona honestamente sin la otra, y habríamos lanzado solo la primera si no hubiéramos ido a buscar qué les quitaba de verdad el cambio a las personas.
Un caso que no aceptamos
Si lo elegido suma más que la cuenta (dos personas convencidas de que fueron ellas quienes tomaron lo caro), no puedes retomar el reparto hasta que se aclare.
Podríamos haber hecho que los números cuadraran. Reducirlo todo en proporción, o dejar el resto de quien pagó en cero y seguir adelante. Las dos cosas dan una cuenta que suma bien y que, sin decir nada, falsea lo que dijo la gente.
Elegir de más es un desacuerdo real entre dos personas. El lugar para resolverlo es entre ellas, no dentro de un ajuste aritmético que esconde el conflicto. Así que HiBill dice que no, explica por qué y espera.
La lección general
Seguimos encontrando la misma forma. Una función tiene una dirección de ida obvia, alguien la construye y la vuelta se queda como ejercicio para el lector: no por decisión, solo porque nadie preguntó.
Luego resulta que la vuelta trae una pregunta que la ida nunca tuvo que responder. Compartir solo tenía que preguntar «¿quién puede ver esto?». Dejar de compartir tenía que preguntar «¿de quién es esto ahora?», y no había respuesta en el código porque nunca la había habido en nuestra cabeza.
El callejón sin salida era el síntoma. La pregunta que faltaba era el error.
Sigue leyendo
Cómo funciona HiBill: cuentas claras entre amigos: todo el modelo de una vez, con las personas, los saldos y el lugar que ocupa una cuenta compartida.
Cómo dividir la cuenta en un grupo grande sin calculadora en la mesa: el enlace para que cada uno elija su parte, visto desde la mesa, antes de que nadie retome el control.
Usar divisiones abiertas: el paso a paso para compartir una cuenta, dejar de compartirla y retomar el control.