Spanish Translation of the summary of the talk “Erico Andrei: Building a Collaborative News Platform with Plone” at Plone Conference 2020, taken from Maurits van Rees‘ Weblog.
Traducción del resumen de la charla “Erico Andrei: Building a Collaborative News Platform with Plone” en Plone Conference 2020, tomado del Weblog de Maurits van Rees.
Building a Collaborative News Platform with Plone
Plone es una increíble combinación de visión, software y comunidad. Pero qué define a Plone, cuál es la esencia y cómo cambia con el tiempo.
Junto a otras personas he creado pendect.com . La idea era construir una plataforma TL; DR (Too Long, Did not Read). Cree tarjetas breves con enlaces a artículos extensos. Las tarjetas son enviadas por nuestra comunidad (Pentributors). Además: por cada tarjeta, plantamos un árbol.
Requerimientos técnicos:
- Flujo de trabajo colaborativo.
- Control de permisos, quién puede hacer qué, dónde y cuándo.
- Metadatos, categorización.
- Somos un emprendimiento, por eso necesitamos SEO.
- Código abierto.
Nos decidimos por Plone como Content Management System. Tiene la mayoría de funciones listas para usar. Conozco a Plone, por supuesto. Pero consideré construir una API simple sobre Pyramid. Pero con Plone podríamos salir al mercado de inmediato. Tiene un historial probado con portales de noticias y también una comunidad amigable con gente inteligente.
Usamos DBpedia para metadatos y categorización. Esto funciona en un conjunto de datos de Wikipedia. Tienen una herramienta Spotlight para detectar entidades en textos. Usamos una conexión Sparql a DBpedia para consultar más información.
Usamos un poco de todo lo demás: Cloudflare, nginx, Varnish, HAProxy, Ansible, Thumbor, Sentry, Mailgun, IFTTT, Zapier, Gravatar. Ya sobrevivimos a doce subidas de tráfico diferentes de Reddit. Tenemos decenas de miles de usuarios. Usamos Thumbor para escalas de imagen. Realmente fácil de integrar en Plone.
Conjunto de herramientas
Nuestro conjunto de herramientas y complementos:
- Tenemos velocidad de desarrollo gracias a algunos amigos, como Python 3:
- Uso de las técnicas f-strings.
- Uso de las técnicas type hints (las puse desde el principio, ayudándome a pensar en mi código).
- Uso de clases de datos (es mejor que devolver diccionarios en todas partes).
- Además se uso las siguientes herramientas:
- black, proporciona un formateador de código inflexible. Al usarlo, acepta ceder el control sobre las minucias del formateo manual, le brinda velocidad, determinismo y libertad frente a las molestias del pycodestyle sobre el formato.
- isort, proporciona una utilidad/biblioteca de Python para ordenar las importaciones alfabéticamente y automáticamente separadas en secciones y por tipo.
- flake8, proporciona un verificador de código fuente modular para pep8, pyflakes y co.
- PyCharm, el IDE de Python para desarrolladores.
- No utilizamos muchos complementos de Plone:
- colectivo.z3cform.datagridfield, proporciona para contenido similar a campos con cuadrícula de datos repetible (en forma de tabla) para la libreria z3.cform.
- collective.sentry, ofrece integración de Plone 5.2 / Zope 4 para comunicarse Sentry, el cual es un software de seguimiento de errores y supervisión de aplicaciones.
- contentrules.slack, proporciona una acción de reglas de contenido de Plone para publicar un mensaje en un canal de Slack.
- souper.plone, ofrece integración de souper para Plone, el cual ofrece un contenedor para almacenar muchos registro ligeros consultables de datos pequeños.
Tipos de contenido
Los tipos de contenido usados son:
- Carpetas, documentos, imágenes, colecciones predeterminadas.
- Categoría: comportamiento de colección con sub-objetos.
- Tarjeta: similar a la noticia, pero con más categorías.
Adaptaciones hechas
Las adaptaciones realizadas a Plone fueron:
- Browser views: el panel se convirtió en “Mi feed”.
- La página por defecto del autor se convirtió en el perfil.
- Algunas nuevas de reglas de contenido.
Nuevas características:
- Páginas de agregación para etiquetas, personas, ubicaciones, organizaciones.
- Desarrollo con souper.plone: puede seguir categorías, etiquetas, personas, ubicaciones, organizaciones y Pentributors (comunidad de Pendect).
Sincronizar con archive.org. Lleva demasiado tiempo, por lo que debe ser asincrónico. También otros servicios externos, como la traducción.
Lecciones aprendidas
- Siempre cree pasos de actualización con GenericSetup. Tenga en cuenta las configuraciones de registro existentes: use purge = false.
- Los materiales de formación de Plone son la documentación de fábrica de Plone.
- Odio los registros de recursos (resource registries) actuales.
- Plone carece de una solución asincrónica/retardada simple y funcional.
- Las imágenes de WebP no son para todos. Tenga cuidado con almacenarlos en caché.
Futuro
- Traducción y auto resumen a todos los Pentributors (comunidad de Pendect).
- Hilos de tarjetas, similares a los hilos de Twitter, que utilizan relaciones de contenido.
- Utilizar ElasticSearch.
- Mover a RelStorage, el cual proporciona un backend para ZODB que almacena pickles en una base de datos relacional SQL.
- Plone como headless CMS, con Volto CMS para el frontend y aplicaciones móviles.
- Aléjese de la carpeta de usuario predeterminada, ya se está volviendo más lento.
Referencias
- Erico Andrei: Building a Collaborative News Platform with Plone.
- Building a Collaborative News Platform with Plone — Plone Conference Online 2020, December 5-13, 2020.
- Building a Collaborative News Platform with Plone on Speakerdeck.
¡Haz tu donativo!
Si te gusto este articulo, por favor, ayúdame a seguir escribiendo este tipo de articulo, haciendo donativos en Dólares vía el servicio Paypal haciendo clic aquí o en la siguiente imagen.
También puede realizar su donativo con Bitcoin (BTC) en escaneando el siguiente código QR:
O usando en la siguiente dirección:
bitcoin:13uZUXXqLP3Ct3ksWHXnDqSrbMbhDV9hGz