sutty/doc/crear_sitios.md

165 lines
5.5 KiB
Markdown
Raw Normal View History

2019-07-11 19:00:28 +00:00
# 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
2019-07-11 19:00:28 +00:00
Los diseños son plantillas Jekyll adaptadas a Sutty. Vamos a empezar
2019-07-11 19:00:28 +00:00
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.
2019-07-12 23:40:44 +00:00
## 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.