De la redacción
El Buen Tono
Una nueva propuesta tecnológica busca cambiar la manera en que las aplicaciones almacenan y utilizan la información personal. Se trata de .me, un marco criptográfico desarrollado por Sui Gn que plantea un modelo diferente al de las plataformas tradicionales: en lugar de guardar los datos en servidores externos, propone organizarlos en una estructura de árbol directamente en el dispositivo del usuario.
El proyecto parte de una idea: que cada persona tenga el control de su propia información y que esta pueda almacenarse, relacionarse, actualizarse y procesarse sin depender de un servidor intermediario.
A diferencia de los sistemas convencionales, .me no necesita una estructura de tablas o esquemas previamente definidos. Los datos se incorporan mediante rutas que pueden consultarse o modificarse utilizando instrucciones sencillas de programación.
¿Cómo funciona .me?
El sistema utiliza una estructura de árbol en la que cada dato ocupa una ruta específica. Por ejemplo, para registrar el nombre de una persona, el código permite crear un perfil y posteriormente consultar su contenido.
El artículo presenta el siguiente ejemplo:
import Me from "this.me";
const me = new Me();
me["@"]("jabellae");
me.profile.name("Abella E.");
me("profile.name");
En este caso, se importa la herramienta, se crea una instancia y se registra el nombre de una persona. La última instrucción permite consultar el dato almacenado, cuyo resultado es:
"Abella E."
La característica principal es que no necesita definir previamente una tabla o una estructura rígida para almacenar la información. La propia ruta crea el espacio correspondiente.
Los datos pueden actualizarse automáticamente
Otra de las funciones destacadas es la posibilidad de establecer reglas que calculan valores a partir de otros datos.
Por ejemplo, el desarrollador muestra cómo calcular la densidad de población de una ciudad utilizando su número de habitantes y su superficie.
me.city.population(700000);
me.city.area(200);
me.city["="]("density", "population / area");
me("city.density");
El resultado es de 3 mil 500 habitantes por unidad de superficie.
Sin embargo, la función no se limita a realizar el primer cálculo. Si posteriormente cambia la población, el sistema actualiza automáticamente el resultado:
me.city.population(900000);
me("city.density");
El nuevo resultado es 4 mil 500.
Esto significa que las aplicaciones pueden establecer relaciones entre diferentes datos y recalcular únicamente aquellos valores que dependen de la información modificada.
También permite conocer de dónde proviene cada resultado
Una de las características interesantes del proyecto es la posibilidad de explicar cómo se obtuvo un determinado valor.
Para ello, el ejemplo utiliza:
me.explain("city.density");
El sistema devuelve información sobre el cálculo, incluyendo la ruta consultada, el resultado, la fórmula utilizada y los datos que intervinieron.
La respuesta incluye elementos como estos:
{
"path": "city.density",
"value": 4500,
"expr": "population / area",
"derivation": {
"expression": "population / area",
"inputs": [
{
"label": "population",
"path": "city.population",
"value": 900000
},
{
"label": "area",
"path": "city.area",
"value": 200
}
]
}
}
Esta función permite identificar qué información intervino en una operación y por qué se obtuvo determinado resultado.
Permite relacionar usuarios sin duplicar información
El sistema también incorpora enlaces entre diferentes ramas de datos. Esto permite que una información pueda consultarse desde distintos lugares sin necesidad de crear copias.
El artículo utiliza un ejemplo con dos usuarios:
me.users.ana.age(20);
me.users.pablo.age(15);
me.friends.ana["->"]("users.ana");
me("friends.ana.age");
En este caso, se registra la edad de Ana y Pablo. Posteriormente, se crea un enlace entre la sección de amistades y el perfil de Ana.
Al consultar la edad desde la sección de amistades, el resultado sigue siendo 20, porque el sistema accede al dato original en lugar de duplicarlo.
Reglas que pueden aplicarse a múltiples usuarios
Otra posibilidad es establecer una sola regla para todos los elementos de una categoría.
Por ejemplo, el desarrollador plantea identificar automáticamente cuáles usuarios son mayores de edad:
me.users["[i]"]["="]("isAdult", "age >= 18");
me("users[isAdult == true].age");
La primera instrucción establece una condición: cualquier usuario cuya edad sea igual o superior a 18 años será considerado adulto.
Al ejecutar la consulta, el resultado es:
{
ana: 20
}
De esta manera, la regla se aplica a todos los usuarios sin necesidad de programar una condición individual para cada perfil.
Ramas privadas para proteger información
La privacidad también forma parte de la propuesta. .me contempla la posibilidad de crear secciones protegidas mediante cifrado.
El ejemplo presentado utiliza una cartera digital:
me.wallet["_"]("wallet-key");
me.wallet.balance(1000);
me("wallet");
me("wallet.balance");
En este caso, se crea una rama denominada wallet y se establece una clave para proteger su contenido.
Cuando se consulta la rama completa, el resultado es undefined, debido a que su contenido no se revela mediante esa consulta. Sin embargo, el ejemplo muestra que la ruta específica del saldo puede devolver el valor almacenado, que en este caso es 1000.
La intención es permitir que determinadas secciones permanezcan protegidas y que la información pueda manejarse bajo reglas de acceso específicas.
¿Cómo se instala?
El proyecto también proporciona una vía para que los desarrolladores comiencen a utilizarlo mediante el administrador de paquetes de JavaScript.
La instalación se realiza con el siguiente comando:
npm i this.me
Posteriormente, puede incorporarse a un proyecto utilizando:
import Me from "this.me";
El desarrollo forma parte del ecosistema neurons.me y cuenta con un repositorio público en GitHub.
Una propuesta que busca cambiar el control de los datos
La diferencia fundamental de .me frente a los modelos tradicionales es su planteamiento de una estructura de información que permanece en el dispositivo del usuario y que puede almacenar, relacionar, calcular y explicar datos sin un servidor intermediario.
No obstante, se trata de una propuesta tecnológica cuyo alcance dependerá de su implementación, adopción y de las garantías que pueda ofrecer en materia de cifrado, seguridad y protección de información.
La publicación de Sui Gn presenta el funcionamiento conceptual mediante ejemplos de código, relaciones entre usuarios, cálculos automáticos y almacenamiento privado, con la intención de mostrar una alternativa para desarrollar aplicaciones centradas en los datos de cada persona.
Es gratis. Solo escribe tu correo y presiona Sign Up para suscribirte.
