mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-22 17:26:21 +00:00
227 lines
7.7 KiB
Markdown
227 lines
7.7 KiB
Markdown
# Crear sitios
|
|
|
|
Para que les usuaries puedan crear sitios, vamos a tener el siguiente
|
|
flujo:
|
|
|
|
* Nombre del sitio, en minúsculas, sin puntos.
|
|
|
|
* Descripción, una descripción de qué hace el sitio para Sutty y otres
|
|
usuaries del sitio.
|
|
|
|
* Plantilla. Lista de plantillas disponibles, con captura, nombre, link
|
|
a vista previa, link a autore, licencia y usos posibles (blogs, medios
|
|
alternativos, denuncias, etc.)
|
|
|
|
Tengo mi propio diseño! Explicar que vamos a dar esta posibilidad más
|
|
adelante, pero que necesitamos financiamiento. Esto permitiría
|
|
agregar un repositorio o gema de plantilla.
|
|
|
|
* Licencia. Elegir la licencia del contenido de un listado con
|
|
licencias piolas:
|
|
|
|
* PPL
|
|
* CC-BY
|
|
* CC-BY-SA
|
|
* CC-0
|
|
|
|
* Lugares donde se van a subir los sitios. Por defecto nombre.sutty.nl,
|
|
otras opciones en un desplegable:
|
|
|
|
* Tengo mi propio dominio: Explica que todavía no tenemos esto
|
|
autogestionado pero que si quieren apoyar el trabajo que hacemos
|
|
pueden donarnos o ponerse en contacto.
|
|
|
|
Más adelante pide los dominios, explica cómo comprarlos en njal.la y
|
|
qué información poner los DNS para poder alojarlos. Cuando Sutty
|
|
tenga su propio DNS, indica los NS.
|
|
|
|
* Neocities: Explicar qué es neocities y permitir agregar una cuenta.
|
|
Podríamos varias pero queremos estar bien con neocities y además no
|
|
tiene mucho sentido tener varias páginas en el mismo host.
|
|
|
|
Pedir usuarie y contraseña o API key. Dar link directo a dónde
|
|
sacar la API key y explicar para qué es.
|
|
|
|
**En realidad esta sería nuestra primera opción?**
|
|
|
|
* Zip: Descargar el sitio en un archivo zip, proponiendo posibles usos
|
|
offline (raspberries, etc!)
|
|
|
|
Da una URL desde donde se puede descargar el sitio.
|
|
|
|
* SSH/SFTP: Explicar que permite enviar el sitio a servidores propios.
|
|
Permite agregar varios servidores, pide usuario, dominio y puerto.
|
|
Da la llave pública SSH de Sutty y explica cómo agregarla al
|
|
servidor remoto. También da un link de descarga para que puedan
|
|
hacer ssh-copy-id.
|
|
|
|
**Esto todavía no**
|
|
|
|
* IPFS: Da la opción de activar/desactivar soporte para IPFS.
|
|
Explica qué es y para qué sirve. Vincula a documentación sobre
|
|
instalar IPFS de escritorio y cómo pinear el hash de sutty, instalar
|
|
el companion, etc.
|
|
|
|
**Esto todavía no**
|
|
|
|
* Torrent: Genera un torrent y lo siembra.
|
|
|
|
**Esto todavía no**
|
|
|
|
* Syncthing: Explica qué es y da la ID del nodo introductor de Sutty.
|
|
|
|
**Esto todavía no**
|
|
|
|
* Zeronet: Idem syncthing?
|
|
|
|
**Esto todavía no**
|
|
|
|
* Archive.org
|
|
|
|
**Esto todavía no**
|
|
|
|
* Crear sitio!
|
|
|
|
## Sitios
|
|
|
|
Tenemos un sitio esqueleto que tiene lo básico para salir andando:
|
|
|
|
* Gemas de Jekyll
|
|
* Gemas de Sutty
|
|
* Gemas de Temas
|
|
* Esqueleto de la configuración
|
|
* Directorios base (con i18n también)
|
|
|
|
El sitio esqueleto es un repositorio Git que se clona al directorio del
|
|
sitio. Esto permite luego pullear actualizaciones desde el esqueleto a
|
|
los sitios, esperamos que sin conflictos!
|
|
|
|
## Diseño
|
|
|
|
Los diseños son plantillas Jekyll adaptadas a Sutty. Vamos a empezar
|
|
adaptando las que estén disponibles en <https://jekyllthemes.org/> y
|
|
otras fuentes, agregando features de Sutty y simplificando donde haga
|
|
falta (algunas plantillas tienen requisitos extraños).
|
|
|
|
Las plantillas se instalan como gemas en los sitios, de forma que
|
|
podemos cambiarla desde las opciones del sitio luego.
|
|
|
|
Para poder cambiar el diseño, necesitamos poder editar la configuración
|
|
del sitio en _config.yml y colocar el nombre de la gema en `theme:`
|
|
|
|
## Internamente
|
|
|
|
Al crear un sitio, clonar el esqueleto en el lugar correcto. Al
|
|
eliminarlo, eliminar el directorio.
|
|
|
|
Lo correcto sería preguntar a todes les usuaries si están de acuerdo en
|
|
borrar el sitio. Si una no está de acuerdo, el borrado se cancela.
|
|
|
|
### Licencias
|
|
|
|
Las licencias disponibles se pueden gestionar desde la base de datos.
|
|
Los atributos son:
|
|
|
|
* Titulo
|
|
* URL
|
|
* Descripción, por qué la recomendamos, etc.
|
|
|
|
El problema que tenemos es que las queremos tener traducidas, entonces
|
|
hay varias opciones:
|
|
|
|
* Incorporar columna idioma en la base de datos y cada vez que se
|
|
muestren las licencias filtrar por idioma actual (o idioma por
|
|
defecto).
|
|
|
|
Esto nos permitiría ofrecer licencias por jurisdicción también, aunque
|
|
empezaríamos con las internacionales...
|
|
|
|
* Incorporar la gema de traducción y poner las traducciones en la base
|
|
de datos. Esto permite tener una sola licencia con sus distintas
|
|
traducciones en un solo registro.
|
|
|
|
Pensábamos que necesitábamos cambiar a PostgreSQL, pero la gema
|
|
[Mobility](https://github.com/shioyama/mobility) permite usar
|
|
distintas estrategias.
|
|
|
|
* Incorporar las traducciones a los locales de sutty. Esta es la opción
|
|
menos flexible, porque implica agregar licencias a la base de datos y
|
|
al mismo tiempo actualizar los archivos y re-deployear Sutty... mejor
|
|
no.
|
|
|
|
Pero es importante que estén asociadas entre sí por idioma.
|
|
|
|
Permitir que les usuaries elijan licencia+privacidad+codigo de
|
|
convivencia e informarles que van a ser los primeros artículos dentro de
|
|
su sitio y que los pueden modificar después. Que esta es nuestra
|
|
propuesta tecnopolítica para que los espacios digitales y analógicos
|
|
sean espacios amables siguiente una lógica de cuidados colectivos.
|
|
|
|
## Actualizar skel
|
|
|
|
Cuando actualizamos el skel, sutty pide a todos los sitios
|
|
consentimiento para aplicar las actualizaciones. Antes de aplicar las
|
|
actualizaciones muestra el historial para que les usuaries vean cuales
|
|
son los cambios que se van a aplicar. Este historial viene del
|
|
repositorio git con lo que tenemos que tomarnos la costumbre de escribir
|
|
commits completos con explicación.
|
|
|
|
## Alojamiento
|
|
|
|
Para elegir las opciones de alojamiento, agregamos clases que
|
|
implementan el nombre del alojamiento y sus opciones específicas:
|
|
|
|
* Local (sitio.sutty.nl): Deploy local. Genera el sitio en
|
|
_deploy/name.sutty.nl y lo pone a disposición del servidor web (es
|
|
como veniamos trabajando hasta ahora). También admite dominios
|
|
propios.
|
|
|
|
Solo se puede tener uno y no es opcional porque lo necesitamos para
|
|
poder hacer el resto de deploys
|
|
|
|
* Neocities: Deploy a neocities.org, necesita API key. Se conecta con
|
|
neocities usando la API y envía los archivos.
|
|
|
|
Solo se puede tener uno (pendiente hablar con neocities si podemos
|
|
hacer esto).
|
|
|
|
* Zip: genera un zip con el contenido del sitio y provee una url de
|
|
descarga estilo https://sutty.nl/sites/site.zip
|
|
|
|
Solo se puede tener uno
|
|
|
|
* SSH: Deploy al servidor SSH que especifiquemos. Necesita que le
|
|
pasemos user@host, puerto y ruta (quizás la ruta no es necesaria y
|
|
vaya junto con user@host). Informar a les usuaries la llave pública
|
|
de Sutty para que la agreguen.
|
|
|
|
No hay límite a los servidores SSH que se pueden agregar.
|
|
|
|
La clase Deploy::* tiene que implementar estas interfaces:
|
|
|
|
* `#limit` devuelve un entero que es la cantidad de deploys de este
|
|
tipo que se pueden agregar, `nil` significa sin límite
|
|
* `#deploy` el método que realiza el deploy. En realidad este método
|
|
hay que correrlo por fuera de Sutty...
|
|
* `#attributes` los valores serializados que acepta el Deploy
|
|
|
|
Son modelos que pueden guardar atributos en la base y a través de los
|
|
que se pueden tomar los datos a través de la API (cuando tengamos un
|
|
método de deployment).
|
|
|
|
El plan es migrar todo esto a <drone.io> de forma que la compilación se
|
|
haga por separado de sutty. Este es un plan intermedio hasta que
|
|
tengamos tiempo de hacerlo realmente.
|
|
|
|
|
|
# TODO
|
|
|
|
* aplicar la licencia al sitio!
|
|
* ver las estadisticas de compilación en lugar del log (el log también)
|
|
|
|
agrupar los build stats para poder ver todos los pasos de una
|
|
compilación juntos
|
|
* comitear en git los articulos (igual no es de esta rama...)
|
|
* link a visitar sitio
|
|
* editor de opciones
|
|
* forkear gemas
|