Podrías copiar esa URL, pegarla a otra persona. Pegada a otra persona, y esa otra persona estaría en el mismo documento contigo colaborando. Y luego, probablemente una década después, Figma comenzó a trabajar en su producto. Estaban creando esta herramienta de design, la hicieron basada en el navegador y lo que hicieron con Figma es que revolucionaron la industria del design para que las personas pudieran trabajar directamente en el navegador. Y ahora no solo los diseñadores podían realmente diseñar archivos o tener acceso a esos archivos de design, hicieron que el proceso de design estuviera disponible para muchos más que los diseñadores.
Ahora tienes desarrolladores que entran en Figma para inspeccionar los elementos con el fin de ayudar a construir esas interfaces de usuario que los diseñadores arman. Tienes stakeholders, fundadores, sabes, personas de nivel C que pueden entrar en los archivos, revisar y experimentar con el design. E incluso tienes, como, personas de producto o prácticamente cualquiera que desee hacerlo puede simplemente entrar en un archivo y jugar con algunos de los componentes que son preconstruidos por el equipo de design y comenzar a diseñar algunas de esas cosas ellos mismos. Figma ha tenido mucho, mucho éxito. Y creo que lo que mostraron con su producto es que puedes hacer una herramienta de alta calidad, de alto rendimiento que normalmente solo estaba basada en el escritorio. Puedes poner eso en el navegador y hacerlo colaborativo. Y de repente obtienes tantos beneficios para que la organización colabore sin problemas juntos en un solo espacio. Y obviamente hay más empresas hoy en día, sabes, que tienen ese tipo de experiencias colaborativas multijugador por defecto.
Canva es una de ellas, Mural, obviamente para hacer pizarras blancas, Notion, Mirror, Linear ha sido realmente genial en eso para el software de gestión de tickets y obviamente Pitch para hacer presentaciones como esta. Y para habilitar la colaboración multijugador, necesitas pensar en la resolución de conflictos. ¿Y qué es la resolución de conflictos? Esencialmente, cuando estás en este mundo donde varias personas pueden manipular el mismo estado del documento, necesitas poder resolver. Acciones conflictivas de diferentes personas que se están procesando al mismo tiempo. Y entonces, si tienes a alguien solicitando hacer ese rectángulo rojo y a alguien solicitando hacerlo un círculo, ¿qué haces en ese punto, sabes, lo haces simplemente rojo o lo combinas, lo haces rojo y lo haces un círculo. Necesitas pensar en esas cosas cuando estás en el mundo multijugador.
Y para hacer eso, hay dos algoritmos principales para habilitar esto. Las transformaciones operacionales, que modifican las operaciones, son típicamente utilizadas por Google Docs para usar OTs. Y luego tienes los CRDTs, que significa, nunca lo recuerdo, Conflict Free Replicated Data Type, y esos modifican el estado del documento. Bueno, eso es bastante confuso y yo también estoy muy confundido, son muchas siglas y es bastante difícil de usar. Y entonces hay algunos marcos de trabajo CRDT por ahí que hacen esto realmente, realmente bien. Yjs es uno de ellos, y básicamente te proporcionan diferentes tipos de data como right array, right map, right text y más para encargarse de esa complejidad y asegurarse de que si interactúas con esos tipos de data, no tienes que preocuparte por la gestión de conflictos. Yjs se encargará de eso por ti. Auto merge también es uno que es genial, viene con diferentes tipos de data, contadores, listas, valores de texto, y básicamente manejan todo eso por ti también. Y son bastante fáciles de usar, ¿verdad? Como, este es solo un ejemplo de por qué si quieres hacer un array, simplemente haces un nuevo wide array, empujas el contenido a él y desplazas el contenido, y también puedes eliminar un índice. Así que es muy similar a cómo interactuarías con un array estándar de JavaScript, excepto que se aseguran de que todos siempre van a ver los mismos data, incluso si hay varias personas manipulando ese array al mismo tiempo. La cosa, sin embargo, es que los CRDTs pueden ser difíciles de usar y escalar en producción.
Comments