[gugs] transpas seminario slashcode 
    Miquel Vidal 
    miquel en sindominio.net
       
    Lun Sep 24 03:09:40 CEST 2001
    
    
  
para quien esté interesado/a en el seminario sobre slashcode y no
pueda asistir mañana lunes a la Universidad (10,30h, URJC, Móstoles),
aquí van las transparencias de álvaro, en formato MagicPoint y HTML.
saludos,
m.
-- 
Miquel Vidal             |   Using Debian GNU/Linux sid  
miquel en sindominio.net    |   miquel en barrapunto.com
http://sindominio.net    |   http://mi.barrapunto.com/yonderboy 
Key fingerprint = 9816 F967 FD3C A4AA DD67 0DF7 8CD0 6F1A F724 244F
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: /pipermail/gugs/attachments/20010924/c01f0794/slash.html
------------ próxima parte ------------
%include "default.mgp"
%default 1 bgrad
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
%nodefault
%center, size 7, font "standard", fore "white", vgap 20
Slashcode: Un servidor de aplicaciones libre
%image "barrapunto.jpg"
%fore "yellow", size 5
Alvaro del Castillo San Félix
acs en barrapunto.com: http://barrapunto.com
Desarrollador de slashcode de Barrapunto
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Indice de la presentación (I)
	Breve historia de slashcode: Slashdot y Barrapunto
	Problemas con slashcode pre 2.0
	Slashcode 2.0: características principales
		Organización del software
		Integración con Apache con mod_perl
		Sistema de acceso a base de datos
		Presentaciónn de HTML/XML basada en plantillas
		La API de slashcode
		Programación mixta: CGI y aplicaciones son lo mismo
		Sindicación de contenidos
		Rendimiento: 75 páginas/segundo Slashdot 11 de Septiembre
%fore "yellow"
slashcode: servidor de aplicaciones libre
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Indice de la presentación (II)
	Funcionalidad propia de Barrapunto
                Sección EnBruto
                Índices
                MiBarrapunto
                Ecoluciones
		ACL como sustituto de seclev
        Extendiendo slashcode: PLUGINS
		Descripción de un PLUGIN
		Datos, lógica y presentación (MVC)
                Extensiones de Barrapunto como plugins
                Ejemplos: Repositorio de plugins, Bolsa de Trabajo, Estadísticas
        Futuro de slashcode
	Desarrollo abierto
	Referencias
	Conclusiones
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Breve historia de slashcode: Slashdot y Barrapunto
	Barrapunto comienza su andadura en Junio de 1999
	Software de slashdot: estabilidad y escalabilidad
	Potencia de Perl superior a PHP y otras soluciones
	Barrapunto evoluciona de 0.3, a 1.09 y 2.0
	Integración con el equipo de desarrolladores de slashcode
	Migración en Septiembre de 2001 a slashcode 2.0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Problemas con slashcode pre 2.0
	Primera versión 0.2 era el primer programa Perl de Rob Malda
	Mezcla de lógica, visualización y gestión de datos: Perl+SQL+HTML
	SQL no portable específico de MySQL
	Una única librería: Slash.pm
	Funcionalidad repartida por varios ficheros Perl ".pl"
	Difícil de mantener, extender y poco escalable
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Organización del código
	Conjunto de librerías comúnes
	Esquemas de la base de datos comúnes
	Temas personalizables: plantillas, programas Perl y elementos de BD
	El Tema de Barrapunto
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Integración con Apache con mod_perl
	Uso intensivo de la API de mod_perl
	Posibilidad de actuar sobre las fases de petición HTTP
	Abstracción que permite uso de "pl" fuera de Apache
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Sistema de acceso a base de datos
	Definición clara de la interfaz de acceso a datos: Slash::DB
	Parte común para todas las bases de datos: Slash::DB::Utility
	Completa y optimizada implementación de Slash::DB para MySQL
	Soporte de Postgres y Oracle avanzando
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Presentación de HTML/XML basada en plantillas
	Sistema basado en Template Toolkit de Perl: rápido y extensible
	Todo el HTML y mensajes sólo aparece en plantillas y BD
	Slash::Display como librería de visualización
	Programación de plantillas muy potente
	Sencilla traducción a otros idiomas
	Diferentes juegos de plantillas para páginas y secciones
	Separación de mundos: programador y diseñador
	API de Slash disponible desde las plantillas
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
La API de slashcode
	Completa API para la gestión de usuarios y sus características 
	Elementos comúnes disponibles en la API:
		Menús de usuario, administrador y plugins
		Listas desplegables
		Acceso a historias, votaciones, secciones y temas
		Titulares y cajas de datos
		Limpieza y filtrado de datos de los usuarios
	Facilita mucho la extensibilidad por PLUGINS
	API disponible facilmente ampliable por PLUGINS y librerías Perl
	
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Programación mixta: CGI y aplicaciones son lo mismo
	Llamada createEnvironment($virtual_user): simula entorno mod_perl
	Evita el uso del navegador y servidor de web	
	Pruebas unitarias de módulos y plugins
	Mayor facilidad de depuración y detección de errores
	Entorno de desarrollo tradicional
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Sindicación de contenidos
	Desde el inicio de vida de slashcode: ultramode
	Adopción de XML y RSS (RDF) para el intercambio de datos
	Librerías para exportar datos en XML (actualmente RSS)
	Facilidad de importación de contenidos y agregación
	http://newsglut.com: SlashFeed plugin - Agregación de contenidos pura
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Slashcode 2.0: características principales
Rendimiento: 75 páginas/segundo Slashdot 11 de Septiembre
	Grandes mejoras de rendimiento en slash 2.1
	Sistema de cache de información que evita acceso a base de datos
	Peticiones SQL optimizadas
	Tope teórico de 6  millones páginas/días con configuración de slashdot (6 máquinas)
	Tope de 100.000 páginas/día con una sóla máquina (Dual PIII 1 GB RAM)
	Posibilidad de separar servidor base de datos y servidor web
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Funcionalidad propia de Barrapunto
Sección EnBruto
	Necesidad de asegurar que los lectores confiaran en la no censura
	Desarrollo del plugin CrudeStories
	Toda historia recibida es incluída en la sección "EnBruto"
	Problemas legales
	Una de las secciones más visitadas
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Funcionalidad propia de Barrapunto
Índices
	En slashcode una historia sólo pertence a una sección
	Una historia puede organizarse por distintas vistas: tablas de índices
	Índices automáticas de noticias basadas en peticiones SQL
		Más visitadas/comentadas
		Todas las historias
		Todas las historias de los MiBarrapunto
		Todas las historias de las secciones oficiales
		Secciones internacionales
	Mecanismo básico para los MiBarrapunto
	Funcionalidad resumida en el plugin VirtualSections
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Funcionalidad propia de Barrapunto
MiBarrapunto
	Dar a los usuarios de Barrapunto sus propios MiBarrapunto
	Los MiBarrapunto se llenan con noticias originales o seleccionadas
	de otros sitios
	Punto de vista de cada usuario de Barrapunto
	Diversificación de puntos de vista
	Altavoz de la comunidad
	Cientos de periodistas trabajando: Más de 600
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Funcionalidad propia de Barrapunto
Ecoluciones
	Una noticia se recibe, se edita y se publica
	Las noticias se puede actualizar posteriormente por los editores
	¿Cómo podrían los usuarios personalizar las noticias?
	Un usuario puede moficiar a su gusto los contenidos ecolucionandolos
	generando nuevos contenidos más ricos y publicados en los MiBarrapunto
	Los editores oficiales pueden captar noticias de los MiBarrapunto
	y pasarlas a portada ecolucionándolas
	Edición compartida y recursiva
	Mayor contexto y contraste de las noticias: ¿Periodismo del próximo siglo?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Funcionalidad propia de Barrapunto
Sistema de autorización basado en ACLs
	
	Problemas con el actual sistema de seclev
		Intersecciones de autorizaciones
		Falta de granularidad
		Ningún contenido semántico
	ACL: acceso a recursos basado en propiedades (ACLs)
		Lectura, inserción y borrado de secciones
		Administración de ACLs 
		Sistema facilmente extensible
		Sencilla interfaz para la gestión de ACLs
		Alto contenido semántico
	Incluído parcialmente slash 2.0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Extendiendo slashcode: PLUGINS
Descripción de un PLUGIN
	Fichero PLUGIN
	name=Jobs
	description="Jobs manage system"
	mysql_schema=mysql_schema.sql
	mysql_dump=dump
	htdoc=jobs.pl
	...
	template=templates/show;jobs;default
	template=templates/new;jobs;default
	....
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Extendiendo slashcode: PLUGINS
Datos, lógica y visualización
	Datos: esquemas de la base de datos (mysql_scherma) y datos iniciales (dump)
	Lógica: Librería y programas Perl
	Visualización: conjunto de plantillas propio
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Extendiendo slashcode: PLUGINS
Instalación de plugins: PLUGIN
	
	Desarrollo como módulo Perl: h2xs
	Librerías asociadas
	Pruebas unitarias
	Instalación con install-plugin usando PLUGIN
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Extendiendo slashcode: PLUGINS
Extensiones de Barrapunto como plugins
	ACL
	AdminACL
	AutoStories
	CrudeStories
	MySlash
	VirtualSections
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Extendiendo slashcode: PLUGINS
Ejemplos
	Repositorio de plugins (Repository)
	Bolsa de Trabajo (Jobs)
	Caja de patrocinadores (Sponsors)
	Diarios personales (Journal)
	Sistema de seguimiento de fallos (LadyBug)
	Concentrador de RDFs de sitios de noticias (SlashFeed)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
El futuro de slashcode
	Mejoras continuas en el rendimiento
	Extensión a través de plugins
	Congelación de la arquitectura básica
	Migración de funcionalidad hacia plugins
	Soporte de otros tipos de visualización como WML
	Abrir la API a través de SOAP, XML::RPC
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Desarrollo abierto de slashcode
	Software cubierto por licencia GPL
	Desarrollo basado en CVS
	Listas de correo de anuncios, general, desarrollo e internacionalización
	Equipo de desarrolladores muy activos y competentes
	Comunidad reunidad alrededor de slashcode.com
	Fácil colaborar a través de plugins y temas
	Posibilidad de desarrollar plugins cerrados
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Referencias
	http://barrapunto.com: Barrapunto
	http://slashdot.org: Slashdot
	http://slashcode.com: Comunidad de desarrolladores de slashcode
	http://sourceforge.net/projects/slashcode: Desarrollo en Sourceforge
	irc.slashcode.com, #slashcode: Punto de encuentro de desarrolladores
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
Conclusiones
	slashcode ha pasado de ser un gestor de historias a un gestor de contenidos
	La nueva arquitectura le está llevando a ser un gestor de aplicaciones
	Su desarrollo ha sido muy activo durante varios años
	Se asegura la migración sencilla entre versiones
	Es estable, flexible, potente y es muy escalable
	Núcleo de desarrolladores contratado por OSDN/VA Linux
	Comunidad creciente de usuarios y desarrolladores
	Licencia GPL y posibilidad de extensiones cerradas
	Todos los elementos necesarios para el desarrollo rápido de
	sitios muy interactivos en la red
	¿Problema de Perl?
	
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
%nodefault
%center, size 7, font "standard", fore "white", vgap 20
Slashcode: Un servidor de aplicaciones libre
%image "barrapunto.jpg"
%fore "yellow", size 5
Alvaro del Castillo San Félix
acs en barrapunto.com: http://barrapunto.com
Desarrollador de slashcode de Barrapunto
    
    
Más información sobre la lista de distribución Gugs