Generadores estáticos: ¿sí o no, y por qué?

https://twitter.com/juanluisback/status/1383838200762822656

En español: tengo varios sitios en Pelican, que me parece que no tiene una comunidad muy activa (y por tanto la mayoría de temas y las extensiones están obsoletas) y estoy buscando alternativas. Mis requisitos son:

  • Que sea fácil de usar y configurar, y olvidarme de que existe (no quiero pasar meses afinando)
  • Que tenga una comunidad activa (quiero que haya extensiones mantenidas, y temas bonitos que poder retocar sin tener que estudiar diseño web)
  • Que pueda escribir el contenido en Markdown
  • Que tenga soporte para ecuaciones con MathJax o similar
  • A poder ser, que se integre bien con notebooks de Jupyter (aunque estaría dispuesto a buscar un workaround, por ejemplo exportando los notebooks a Markdown con jupytext y luego retocando)
  • Y a poder ser que sea Python (aunque me parece que esta batalla está perdida)

Me debato entre:

  • Sphinx (últimamente tiene buenas extensiones y temas gracias a un interés renovado de la comunidad, pero ¿tal vez sea demasiado complejo?)
  • MkDocs (más simple que Sphinx, algunos temas muy bien hechos, parece que tiene bastante tracción)

Y, fuera del mundo Python, tenemos:

  • Jekyll (¿“el primero de todos”? parece que sigue activo)
  • Hugo (me he acordado después de escribir el hilo de Twitter, ¡parece muy activo!)
  • Ghost (muy activo también, y además con un modelo de negocio detrás que me gusta mucho y que me permitiría pasar a una versión gestionada de manera sencilla)

Ahora mismo tiendo a Sphinx porque trabajo en Read the Docs, pero no me convence 100 % y estoy abierto a escuchar opiniones. En Pybonacci hace años nos intentamos cambiar de WordPress a Pelican… y nos salió mal la jugada, la verdad :frowning: de hecho, cuando dejé el blog, @kikocorreoso lo pasó a WordPress de nuevo.

¿Qué pensáis?

3 Me gusta

Cuando he empezado a leer tus requisitos he estado pensando en Hugo. Sobre soporte a MathJax no conocía nada porque nunca lo he necesitado usar pero una búsqueda simple te devuelve varias opciones (alguna incluso integrada como módulo de Hugo). Efectivamente, la comunidad es muy activa y la galería de temas muy grande.

Si tienes una cuenta en gitlab puedes hacer una prueba rápidamente a partir de este repo: GitLab Pages examples / hugo · GitLab

1 me gusta

Yo he usado y evangelizado con MkDocs, sobre todo con el tema material de ¿squidfunk (o algo asi)? Está genial, pero creo que es más para documentación, crear un tutorial-taller-curso-libro. Pero como web personal no lo veo.

Por lo demás, yo tmb estuve haciendo estas busquedas hace un tiempo para La Jaqueria, y al final optamos por un Wordpress (tenian que tocarla varias personas sin conocimientos de informática).

Jekyll es como el estandar, ya que lo soporta Github, pero le tengo algo de reticencia por malas experiencias que hemos tenido en el pasado dando talleres con él (instalar la versión de Ruby y/o las gemas acababa siendo un dolor). Pelican parece que está muy dejado. Solo oigo hablar de Hugo y veo webs echas en Hugo. Aunque también está Gatsby por ahí, pero ya igual te toca meterte más a bajo nivel, asi que descartado.

Tira por Hugo si es una web normal, y si es para tutoriales-documentación, MkDocs es una alegria.

2 Me gusta

Pasé por lo mismo, pero en la otra dirección. Comencé con Jekyll, me pasé a Hugo, y terminé en Pelican, lugar de donde no me he movido.

  • Jekyll, cuando se hizo famoso me subí al hype-train y lo comencé a utilizar. Como lamentablemente en mi ficha de nacimiento marcaron la casilla de Python y no la de Ruby, siempre me sentí limitado para poder hacer cambios más profundos en la funcionalidad, configuración, con lo que el acercamiento fue bastante a nivel de usuario: busqué un tema, escribí contenido y deploy.
  • Hugo, muy feliz desde que salió, no por Go, ni por la documentación, la razón principal fue que tenía temas para todos los gustos, y era bastante simple poder comenzar, con lo que no había mucho que “modificar”. Con el tiempo, volví a encontrarme con el mismo problema de Jekyll, quería modificar funcionamiento, conectar otros servicios y adaptar la generación a mi manera, con lo que lo descarté, con dolor, pero tenía que buscar algo que me fuera más familiar y por ende más simple.
  • Pelican, no te voy a mentir, cuando vi los temas, me motivó -1, pero como tenían una guía sencilla de “crea tu propio tema”, y como internamente usaba jinja (del cual tenia un poco de experiencia), comencé a mirar la opción de crear mis propios temas, ya que por lo general era mi problema principal y me llevé una sorpresa bastante buena, porque me ofrecía una opción fácil de adaptar cualquier tema, con un proceso sencillo. No he tenido la necesidad de “instalar plugins”, pues como puedes usar HTML directamente en los posts en Markdown, si necesito mostrar algo “especial”, lo hago en HTML y ya.

Creo que para tener un sitio personal o corporativo, donde el objetivo solo sea “mostrar contenido” y tener algo “blog-alike”, creo que Pelican es suficiente.

Pero hace poco tuve otro requerimiento, crear una página con documentación (sin detalles de API ni nada), y descubrí mdBook, que está inspirado en GitBook, para mostrar información sobre alguna charla, o algo así, creo que es bastante sencillo de usar, pero claro es Rust. Por ejemplo, para una charla solo quería mostrar un par de ejemplos, con un poco de texto y me salió algo así

Otro que nunca probé, fue Nikola quizás vale la pena mirarlo a ver si cumple más requerimientos.

Pero como veo que lo que menos quieres hacer es “modificar cosas”, creo que Hugo es una super buena opción, pero creo que con algo de conocimiento de html, CSS y jinja, pelican sigue siendo mi opción.

1 me gusta

Meme necesario:

https://rakhim.org/honestly-undefined/19/

Mi apuesta HOY, que no tengo mucho tiempo para nada, sería usar WP. Me permite hacer cosas desde un móvil, un PC donde no tengo mis herramientas instaladas,…, en cualquier sitio del mundo, simplemente con una conexión a internet y un navegador. Tiene sus pegas pero es lo que menos fricción tiene entre ‘mi tontuna en la cabeza’ y ‘mi tontuna que os puede brasear a todos en cualquier parte del planeta’.

PROS: Sobrada cantidad de skins, de plugins para muchas cosas, API para subir posts de forma sencilla, posibilidad de añadir usuarios,…
CONS: Necesita backend, no es Python, gente mierda en la internet buscando cómo joder un humilde WP para no sé muy bien qué,…

Mi flujo de trabajo no tiene porque parecerse en nada al de cualquier otra persona.

1 me gusta

Este meme es… tan exacto que asusta :joy:

Aclaración importante: después de investigar un poco me he dado cuenta de que Ghost no es un generador estático, es un CMS para blogs (o sea, más parecido a WordPress en todo caso).

A mí todo el mundo me recomienda Hugo, y creo que en cuanto a temas de diseño y tal probablemente sea uno de los más potentes. Pero claro si te quieres poner a cambiar algo tú y no sabes Golang, estás vendido.

Una opción que también veo molona es usar generadores estáticos que usan directamente Javascript. Échale un ojo a Static Site Generators - Top Open Source SSGs | Jamstack

A mí me paraba también que Hugo estuviera desarrollado en Go. Pero luego pensé que usamos git sin problema (existiendo mercurial). Porque lo importante ahí es el tamaño y lo activa que es la comunidad. No sólo se trata de los temas sino de otras ideas interesantes: CLI más rica (como Nikola), posibilidad de definir estructuras (archetypes) como Lektor (python), también de marcadores personalizados (shortcodes), etc. Por lo tanto, no se me ocurre una sola característica que no tenga cubierta Hugo, más bien al contrario, me descubren ideas nuevas que me acaban pareciendo interesantes.

Por otro lado, edité mi primera respuesta para incluir el gitlab pages con Hugo: clonar un repo, configurar cuatro cosas y a funcionar (incluye despliegue automático). Eso mismo también lo tienes en gitlab con otros generadores estáticos. Si además le añades un headless CMS (como proponen en jamstack), te olvidas de gestionar a nivel de ficheros (cosa que Lektor tiene de serie).

https://www.getlektor.com/

1 me gusta