OASIS_MOBILE/README.md

238 lines
11 KiB
Markdown

# OASIS_MOBILE — rama de desarrollo experimental
> ## ⚠ ESTO NO ES OASIS OFICIAL
>
> Esta es una **rama de desarrollo experimental** mantenida por el hacklab, **no
> afiliada** al proyecto original.
>
> ### El repositorio oficial de Oasis es el de epsylon: https://github.com/epsylon/oasis
>
> Si quieres **usar Oasis de verdad, instala el oficial**. Lo que hay aquí puede
> romperse, cambiar de forma incompatible o desaparecer sin aviso. No está auditado y
> no tiene garantía de ninguna clase.
>
> **Los fallos de esta rama se reportan aquí, nunca a epsylon.**
Si vas a desarrollar, lee antes la [guía de desarrollo](GUIA_DE_DESARROLLO.md). Ahí
está qué se puede tocar y qué no. En corto: el backend, el middleware, los modelos y
las traducciones son de epsylon y no se tocan; lo nuestro va en hojas, vistas y rutas
propias.
Versión base: **Oasis 1.3.3** · Rama: `PRUEBAS` ·
[Documentación completa](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki) ·
[Versión de escritorio](https://gitea.laenre.net/hacklab/OASIS_LINUX)
![Oasis Mobile: lanzador, Karvan, filtros y barra de atajos](docs/capturas/00-portada.png)
**[⬇ Descargar la APK](https://gitea.laenre.net/hacklab/OASIS_MOBILE/releases)** ·
Android 7 o superior, 64 bits · se instala junto al Oasis oficial sin pisarlo
### Novedades de esta versión
- **Al día con Oasis 1.3.3**: karma en el perfil, salas con directo, fotos selladas en
chats privados y tribus, visibilidad de menciones y las traducciones nuevas.
- **Tema Acampada por defecto**: blanco, negro y cian, títulos en Anton y botones que
se hunden al pulsar, con los colores de acampada26s.net. Los otros temas siguen en
*Ajustes → Tema*.
- **Arranca en modo activistas**: chats, Karvan, pads, foro, imágenes, vídeos, wiki y
blogs. Todo cabe en una pantalla; el resto se activa en *Ajustes → Workflows*.
- **Filtros en fichas**: en chats, feed, foros o pads los filtros ya no son botones
gigantes que tapan el contenido, sino fichas pequeñas en fila.
- **Tarjetas más limpias**: borrar, fijar, enlazar y abrir van en una fila de iconos.
- **Karvan**: tus mensajes salen a la derecha también al volver a entrar en la sala.
- **Fotos más seguras**: si una foto no se puede limpiar de metadatos (ubicación,
cámara…), no se sube y se avisa. Antes se subía tal cual.
- **DNS**: primero el resolutor del sistema, que respeta la VPN y el DNS privado de
Android; los públicos quedan de respaldo.
---
## Lo que añade
| | Oasis oficial | Esta rama |
|---|---|---|
| **Salas efímeras** | — | Karvan: mensajes que solo viven en memoria y se autodestruyen |
| **Videollamadas** | — | Audio y vídeo por WebRTC, sin servidores de terceros |
| **Interfaz de móvil** | El menú de escritorio en una pantalla pequeña | Tema Acampada, lanzador de módulos, filtros en fichas y barra de cuatro atajos |
| **Primer arranque** | Casi sesenta módulos encendidos | Modo activistas: lo justo para organizarse |
| **Varias identidades** | Una por instalación | Varias en el mismo móvil, con aviso si dos comparten clave |
| **Respuesta citada** | — | Responder a un mensaje concreto dentro de un chat |
| **Envoltorio Android** | APK sin permisos de cámara ni micrófono | Proyecto Gradle propio: permisos, subida de ficheros, servicio que sobrevive |
| **Metadatos de las fotos** | Se quitan solo si está `sharp`; en Android **nunca** | Se quitan siempre: GPS, marca, modelo, número de serie |
| **Servidor STUN** | Uno de Google, por defecto | Ninguno. TURN propio si lo configuras |
Los nombres de las categorías, los módulos y el resto de la aplicación son los de
epsylon, sin tocar.
---
## Qué es Oasis, en cuatro dibujos
Una red social **sin servidor**: publicas en tu propio equipo y los demás se traen una
copia. No hay cuenta, no hay contraseña y nadie puede borrarte.
![Qué es Oasis](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/raw/img/esq/01-red.png)
Los mensajes viajan **de vecino en vecino**, así que llegan a gente con la que nunca te
has conectado. Por eso funciona incluso sin internet, entre dos móviles en la misma wifi.
![Cómo llega un mensaje](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/raw/img/esq/02-gossip.png)
Un **pub** es solo un nodo que no se apaga nunca. No es un servidor con tus datos: no
guarda tu identidad, no decide qué ves y no puede borrarte.
![Qué es un pub](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/raw/img/esq/04-pub.png)
Todo lo que publicas se encadena y va **firmado con tu clave**. Nadie puede colar un
mensaje en tu nombre ni cambiar lo que dijiste.
![Tu registro](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/raw/img/esq/14-registro.png)
> La explicación completa —los saltos, las tribus, el LARP, los módulos— está en
> **[Entender Oasis en diez minutos](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Entender)**.
---
## Karvan: salas que se borran solas
![Cómo funciona Karvan](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/raw/img/esq/11-karvan.png)
Lo que se dice dentro **no toca el disco**, no entra en tu registro y no se replica a
nadie. Dos relojes corren a la vez —inactividad y tiempo absoluto— y la sala muere con
el que llegue antes.
<p align="center">
<img src="docs/capturas/07-karvan-salas.png" width="270">
<img src="docs/capturas/03-karvan.png" width="270">
</p>
---
## Videollamadas sin terceros
![Cómo funciona una llamada](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/raw/img/esq/12-llamadas.png)
El servidor solo sirve para que os encontréis: **la voz y el vídeo van directos** entre
los participantes, cifrados de extremo a extremo. Sin STUN de Google.
<p align="center">
<img src="https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/raw/img/12-permiso-camara.png" width="270">
<img src="https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/raw/img/15-llamada-controles.png" width="270">
</p>
Esto **no es posible con la APK oficial**: no declara los permisos de cámara y su
navegador interno los deniega. Por eso esta rama trae su propio envoltorio Android.
---
## La interfaz
![La interfaz por dentro](docs/capturas/esquema-interfaz.png)
<p align="center">
<img src="docs/capturas/01-portada.png" width="240">
<img src="docs/capturas/04-foros.png" width="240">
<img src="docs/capturas/06-barra.png" width="240">
</p>
Casi sesenta módulos no caben en la pantalla de un teléfono: la portada los ordena por
secciones en una rejilla de iconos, como el cajón de apps del móvil. Abajo
queda una barra de cuatro atajos que eliges tú. Dentro de cada módulo los filtros van en fichas pequeñas,
para que el contenido se vea sin tener que bajar.
Solo aparecen los módulos activos. En **Ajustes → Workflows** se eligen de golpe: el de
**activistas** deja lo justo para organizarse (chats, Karvan, pads, foro, imágenes,
vídeos, wiki y blogs). En el móvil un workflow cambia los módulos, no el aspecto.
---
## Empezar desde cero
![De cero a estar dentro](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/raw/img/esq/05-empezar.png)
| | |
|---|---|
| **[oasis-project.pub](https://oasis-project.pub)** | Directorio de pubs, con invitaciones y estado de cada uno |
| **[0asis.net](https://0asis.net)** | El proyecto explicado desde el principio |
| **[wiki.solarnethub.com](https://wiki.solarnethub.com/socialnet/overview)** | La documentación oficial, módulo por módulo |
---
## Instalar
La APK **no está en ninguna tienda**: se descarga de las *releases* de este repositorio
y se instala a mano, con orígenes desconocidos activado. Se instala **junto al Oasis
oficial** sin pisarlo —el identificador es `net.laenre.oasis`—, así que puedes tener
los dos y comparar.
Necesita unos **350 MB libres**. El primer arranque tarda entre 15 y 60 segundos porque
descomprime el servidor.
> **Verifica la huella de la firma** antes de instalar una APK bajada de un servidor
> propio: `apksigner verify --print-certs`
### Compilar
**Con Android Studio**, lo más fácil:
```sh
./android/scripts/android-studio.sh # trae el Oasis oficial y su APK, y empaqueta el backend
```
Después, en Android Studio: *File → Open →* la carpeta `android/`, esperar al Gradle
Sync, y *Build → Build App Bundle(s) / APK(s) → Build APK(s)*. Si cambias algo en
`src/` o en `main.js`, vuelve a lanzar el script antes de compilar.
**Desde la terminal**, paso a paso:
```sh
cd android
# la primera vez hace falta la APK oficial de la MISMA versión (ahora la 1.3.3):
# de ella salen las librerías nativas y el node_modules podado del móvil
OASIS_APK_BASE=/ruta/oasis-v1.3.3.apk ./scripts/release.sh # compila, verifica y calcula la huella
```
![Qué hay dentro de la APK](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/raw/img/esq/16-arquitectura-movil.png)
---
## Documentación
Para desarrollar, en el propio repositorio:
| | |
|---|---|
| [GUIA_DE_DESARROLLO.md](GUIA_DE_DESARROLLO.md) | Qué se toca, qué no y cómo hacer cada cosa |
| [docs/FRONTERA_UPSTREAM.md](docs/FRONTERA_UPSTREAM.md) | Cuánto cambia el dev en cada versión, medido |
| [docs/USABILIDAD_PAD.txt](docs/USABILIDAD_PAD.txt) | Pruebas de usabilidad en el móvil |
Todo lo de arriba, en detalle, está en la
**[wiki](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki)**:
| | |
|---|---|
| [Entender Oasis](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Entender) | La red, el gossip, los saltos, los pubs, las tribus y el LARP |
| [Empezar desde cero](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Empezar) | Invitación, seguir gente, abrir tu blog o tu tienda |
| [Karvan](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Karvan) | Salas efímeras, paso a paso |
| [Llamadas](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Llamadas) | Cómo se llama y cómo montar un TURN |
| [La interfaz](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Interfaz) | Botón por botón |
| [Identidades](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Identidades) | Varias cuentas en el mismo móvil |
| [Compilar la APK](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Compilar) | Y cómo se publica una versión |
| [Estructura del código](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Estructura) | Dónde vive cada fichero y por qué ahí |
| [Si algo va mal](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Problemas) | Los fallos que han pasado de verdad |
| [Qué NO tiene](https://gitea.laenre.net/hacklab/OASIS_MOBILE/wiki/Limitaciones) | Lo que falta respecto al oficial, sin adornos |
---
## El proyecto original
Esta rama existe **gracias a** y **por encima de** el trabajo de epsylon. El código, la
arquitectura, los módulos y la red son suyos.
- **Código:** https://github.com/epsylon/oasis
- **Proyecto:** https://solarnethub.com
- **Wiki:** https://wiki.solarnethub.com/socialnet/overview
## Licencia
AGPL-3.0, la misma que el proyecto original.