# Setup — Working Group OntoRef Lo que tenéis que tener instalado y preparado **antes** de la sesión 1 del working group. Tiempo estimado: 20-30 minutos si todo va bien, 1 hora si toca debuggear instalación. ## Requisitos previos - macOS o Linux (ambos probados; Windows no soportado en este ciclo) - Acceso a terminal y editor de texto cualquiera (vim, neovim, vscode, zed, helix, lo que uséis) - Conexión a internet en la sesión (para clonar repos) ## 1. Instalar Nickel Nickel es el lenguaje de contratos. Se instala como un binario único. ### macOS ```bash brew install nickel-lang ``` Si no usáis brew: ```bash curl -L https://github.com/tweag/nickel/releases/latest/download/nickel-x86_64-apple-darwin --output ~/.local/bin/nickel chmod +x ~/.local/bin/nickel ``` ### Linux ```bash curl -L https://github.com/tweag/nickel/releases/latest/download/nickel-x86_64-unknown-linux-gnu --output ~/.local/bin/nickel chmod +x ~/.local/bin/nickel ``` (Asegúrate de que `~/.local/bin` está en tu `$PATH`.) ### Verificar ```bash nickel --version ``` Debe mostrar `nickel 1.16.0` o superior. ## 2. Instalar la CLI de OntoRef OntoRef es la herramienta que opera sobre `.ontology/` y se construye con `cargo`. Necesitáis tener Rust instalado (`rustup` si no lo tenéis). ```bash git clone https://github.com/jesusperez-pro/ontoref.git ~/dev/ontoref cd ~/dev/ontoref cargo install --path . --bin ontoref ``` (El path del repo y la URL son orientativos — si Jesús os da uno distinto, usad el que os pase.) ### Verificar ```bash ontoref --version ontoref describe --help ``` Si `ontoref describe --help` devuelve la lista de subcomandos, está listo. ## 3. Preparar lo que traéis a la sesión ### Un proyecto vuestro Cualquier proyecto que tengáis vivo y conozcáis bien. **Rust o no, da igual.** Lo que importa es que sepáis hablar de él. Si tenéis varios, traed UNO — el que más os duela en términos de coherencia perdida. ### Una decisión arquitectónica recordada Algo que decidisteis en su momento y que sigue vivo en el código: - "Usamos PostgreSQL en vez de SQLite porque…" - "Todas las APIs públicas tienen rate-limiting porque…" - "El módulo de auth no importa de billing porque…" - "Cualquier campo público de la API tiene que estar versionado porque…" No necesita ser sofisticada. Necesita ser **vuestra** y **viva**. ### Disposición a romperla Vamos a modelar esa decisión como contrato y luego vamos a intentar violarla en vivo para ver el typecheck rechazándola. Si sois posesivos con vuestras decisiones, el ejercicio se hace cuesta arriba. ## 4. Comprobaciones finales (24h antes) Ejecutad esto en una terminal limpia: ```bash nickel --version # debe responder ontoref --version # debe responder mkdir -p ~/tmp/wg-test && cd ~/tmp/wg-test echo '{ x = 1 }' > test.ncl nickel export test.ncl # debe imprimir {"x": 1} ``` Si los cuatro comandos pasan, estáis listos. ## Si algo falla - **Antes de la sesión**: avisad por el grupo de Telegram. Es mejor 30 minutos de troubleshooting compartido que perder 30 minutos de la sesión. - **Durante la sesión**: pareja con quien sí tiene el setup hasta que se resuelva. La sesión no espera, pero tampoco se deja a nadie atrás. ## Recursos opcionales (no necesarios para la sesión 1) - [Nickel Documentation](https://nickel-lang.org/) — para hojearlo si queréis contexto - [OntoRef README](https://github.com/jesusperez-pro/ontoref) — la herramienta por dentro No hace falta leerlos antes. Lo que se necesita aprender, se aprende en sesión.