Articulo de referencia

Zope

Zope es una familia de servidores de aplicaciones web gratuitos y de código abierto escritos en Python , y su comunidad en línea asociada. Zope significa "Z Object Publishing En...

Zope es una familia de servidores de aplicaciones web gratuitos y de código abierto escritos en Python , y su comunidad en línea asociada. Zope significa "Z Object Publishing Environment" (Entorno de publicación de objetos Z) y fue el primer sistema que utilizó la metodología de publicación de objetos , ahora común en la web. [ 2 ] [ 3 ] Zope ha sido considerada una aplicación revolucionaria de Python , una aplicación que ayudó a poner a Python en el centro de atención. [ 4 ] [ 5 ]

En los últimos años, la comunidad Zope ha dado origen a varios frameworks web adicionales con objetivos y principios dispares, pero que comparten filosofía, personas y código fuente. Zope 2 sigue siendo el más extendido de estos frameworks, en gran parte gracias al sistema de gestión de contenidos Plone , que se ejecuta sobre Zope 2. BlueBream (antes llamado Zope 3) es menos conocido, pero sirve de base para varios sitios web importantes, incluido Launchpad . Grok se creó como un framework más amigable para los programadores, "Zope 3 para cavernícolas", y en 2009 Pyramid ganó popularidad en la comunidad Zope como un framework minimalista basado en los principios de Zope.

Historia

Zope Corporation se fundó en 1995 en Fredericksburg, Virginia, bajo el nombre de Digital Creations, como una empresa conjunta con InfiNet (una empresa conjunta de cadenas de periódicos). La compañía desarrolló un motor de anuncios clasificados para Internet. En 1997, la compañía se independizó y pasó a ser privada. El equipo de ingenieros de software de la compañía está dirigido por el CTO Jim Fulton. PythonLabs, creadores de Python, se unieron a la compañía en 2000 (el fundador de Python, Guido van Rossum, dejó Zope Corp en 2003). [ 6 ]

Lo que ahora se conoce como Zope 2 comenzó con la fusión de tres productos de software independientes —Bobo, Document Template y BoboPOS— en el servidor de aplicaciones Principia. A petición de su principal inversor, Opticality Ventures, Principia se relanzó como software libre bajo el nombre de Zope en 1998. Bobo, y por lo tanto Zope, fue la primera solución de publicación de objetos web. [ 2 ] [ 3 ]

En noviembre de 2004 se lanzó Zope 3. Zope 3 es una reescritura completa que conserva únicamente la base de datos de objetos ZODB original . Está diseñado específicamente para el desarrollo de aplicaciones web empresariales utilizando los paradigmas de desarrollo más recientes. Sin embargo, Zope 3 no es compatible con Zope 2, por lo que las aplicaciones de Zope 2 no se ejecutan en Zope 3. Inicialmente, se pretendía introducir una capa de retrocompatibilidad para que el software de Zope 2 se ejecutara en Zope 3. En su lugar, un módulo conocido como Five introdujo los nuevos paradigmas de Zope 3 en Zope 2, aunque de esta forma tampoco es posible lograr una compatibilidad total.

La existencia de dos marcos web incompatibles llamados Zope ha causado mucha confusión. En respuesta, en enero de 2010, Zope 3 pasó a llamarse "BlueBream". [ 7 ] [ 8 ] "Zope" y "blue bream" son nombres de un tipo de pez, Ballerus ballerus .

Fundación Zope

La Fundación Zope es una organización que promueve el desarrollo de la plataforma Zope mediante el apoyo a la comunidad que desarrolla y mantiene los componentes de software relevantes. Esta comunidad incluye tanto a colaboradores de software de código abierto, documentación e infraestructura web, como a empresas y organizaciones que utilizan la plataforma. La Fundación gestiona los sitios web zope.org, una infraestructura para la colaboración de código abierto.

Versiones de Zope

Zope 2

Un sitio web Zope suele estar compuesto por objetos en una base de datos de objetos Zope (ZODB) , no por archivos en un sistema de archivos , como ocurre con la mayoría de los servidores web . Esto permite a los usuarios aprovechar las ventajas de las tecnologías orientadas a objetos, como la encapsulación . Zope asigna URL a objetos utilizando la jerarquía de contención de estos; los métodos también se consideran contenidos en sus respectivos objetos. Los datos pueden almacenarse en otras bases de datos o en el sistema de archivos, pero ZODB es la solución más común.

Zope ofrece dos mecanismos para la creación de plantillas HTML : el Lenguaje de Marcado de Plantillas de Documento (DTML) y las Plantillas de Página de Zope (ZPT). DTML es un lenguaje basado en etiquetas que permite implementar scripts sencillos en las plantillas. DTML incluye la inclusión de variables, condiciones y bucles. Sin embargo, DTML puede presentar problemas: las etiquetas DTML intercaladas con HTML generan documentos HTML no válidos, y su uso requiere precaución al incluir lógica en las plantillas para mantener la legibilidad del código. Muchos desarrolladores líderes de Zope desaconsejan el uso de DTML. ZPT es una tecnología que aborda las deficiencias de DTML. Las plantillas ZPT pueden ser documentos XML bien formados o documentos HTML, en los que todo el marcado especial se presenta como atributos en el espacio de nombres TAL ( Lenguaje de Atributos de Plantilla ). ZPT ofrece un conjunto muy limitado de herramientas para la inclusión condicional y la repetición de elementos XML. Por consiguiente, las plantillas suelen ser bastante sencillas, con la mayor parte de la lógica implementada en código Python. Una ventaja significativa de las plantillas ZPT es que se pueden editar en la mayoría de los editores gráficos de HTML. ZPT también ofrece apoyo directo para la internacionalización .

Zope 2 es la base del sistema de gestión de contenidos Plone , así como del sistema de planificación de recursos empresariales de código abierto ERP5 .

Bluebream

BlueBream es una reescritura realizada por los desarrolladores de Zope del servidor de aplicaciones web Zope 2. Fue creado bajo el nombre "Zope 3", pero la existencia de dos marcos incompatibles con el mismo nombre causó mucha confusión, y Zope 3 fue renombrado "BlueBream" en enero de 2010. [ 11 ] [ 12 ] BlueBream se distribuye bajo los términos de la Licencia Pública de Zope [ 13 ] y, por lo tanto, es software libre .

Zope 2 ha demostrado ser un marco útil para el desarrollo de aplicaciones web, pero su uso reveló algunas deficiencias. Por mencionar algunas, la creación de productos Zope 2 implica copiar mucho código repetitivo —código "mágico"— que simplemente tiene que estar ahí, y la interfaz de administración integrada es difícil de modificar o reemplazar. Zope 3 fue una reescritura del software que intenta abordar estas deficiencias manteniendo las ventajas de Zope que llevaron a su popularidad. BlueBream se basa en una arquitectura de componentes [ 14 ] que facilita la mezcla de componentes de software de diversos orígenes escritos en Python . Aunque originalmente se concibió como un reemplazo para Zope 2, la arquitectura de componentes de Zope se ha adaptado a Zope 2, comenzando con Zope 2.8. Muchas plataformas Zope, como Plone, están pasando por el mismo tipo de reescritura por partes. La primera versión de producción del nuevo software, Zope X3 3.0.0, se lanzó el 6 de noviembre de 2004.

Historia

El proyecto Zope 3 comenzó en febrero de 2001 como un esfuerzo para desarrollar una nueva versión de Zope, casi una reescritura completa, con el objetivo de conservar las características exitosas de Zope 2 y, al mismo tiempo, corregir algunas de sus deficiencias. El objetivo era crear una plataforma más flexible y fácil de usar para programar aplicaciones web que Zope 2. El proyecto comenzó con el desarrollo de una arquitectura de componentes , que permite estructurar el código en unidades pequeñas y componibles con interfaces introspectivas. Estas interfaces son compatibles con un paquete de interfaces para proporcionar la funcionalidad de las interfaces declaradas explícitamente al lenguaje Python . La primera versión de producción del software, Zope X3, se lanzó el 6 de noviembre de 2004. En enero de 2010, Zope 3 pasó a llamarse BlueBream. [ 11 ]

Tecnología

El objetivo del proyecto era permitir a los programadores usar Zope para exponer objetos Python arbitrarios como objetos modelo en la web, sin necesidad de que estos objetos cumplieran requisitos de comportamiento específicos. En Zope 2, existían numerosos requisitos de comportamiento para que los objetos participaran en el framework, lo que resultaba en una gran cantidad de clases base mixin y atributos especiales. BlueBream utiliza una arquitectura modelo/vista, separando el código de presentación del código del dominio del problema. Las vistas y los modelos están vinculados mediante la arquitectura de componentes.

Las bibliotecas subyacentes a BlueBream han evolucionado hasta convertirse en una colección de bibliotecas útiles para el desarrollo de aplicaciones web, en lugar de un único servidor de aplicaciones monolítico. BlueBream incluye paquetes independientes para interfaces, arquitectura de componentes, servidor HTTP, publicador, Zope Object Database (ZODB), plantillas de página de Zope, internacionalización ( I18N ), política de seguridad, etc. La arquitectura de componentes se utiliza para integrar estos elementos. Dicha arquitectura se configura mediante ZCML (Zope Configuration Markup Language), un lenguaje de archivos de configuración basado en XML.

El proyecto Zope 3 fue pionero en la práctica de los sprints para el desarrollo de software de código abierto . [ 15 ] Los sprints son sesiones de desarrollo intensivas en las que programadores, a menudo de diferentes países, se reúnen en una sala y trabajan juntos durante un par de días o incluso varias semanas. Durante los sprints se utilizan diversas prácticas derivadas del desarrollo ágil de software , como la programación en parejas y el desarrollo guiado por pruebas . Además del objetivo de desarrollar software, los sprints también son útiles para que los desarrolladores geográficamente dispersos se conozcan en persona y para atraer a nuevas personas al proyecto. También sirven como una forma para que los participantes aprendan unos de otros.

BlueBream se considera un framework estable, utilizado en proyectos de producción en todo el mundo, especialmente en Launchpad .

Kit de herramientas Zope

Como resultado del desarrollo de Zope 3 / BlueBream, ahora existen muchos paquetes Python independientes que se utilizan y desarrollan como parte de BlueBream, y aunque muchos de ellos se pueden usar fuera de BlueBream, otros no. El proyecto Zope Toolkit (ZTK) se inició para aclarar qué paquetes se podían usar fuera de BlueBream y para mejorar su reutilización. Por lo tanto, Zope Toolkit es la base de los frameworks de Zope. Zope 2.12 es la primera versión de un framework web que se basa en Zope Toolkit, y Grok y BlueBream tenían previsto lanzar versiones basadas en ZTK durante 2010.

Comprender

En 2006, un grupo de desarrolladores de Zope 3 inició el proyecto Grok con el objetivo de hacer que la tecnología Zope 3 fuera más ágil y accesible para los nuevos usuarios. Desde entonces, Grok ha lanzado versiones periódicas y su tecnología principal (Martian, grokcore.component) se está incorporando a otros proyectos basados ​​en Zope 3 y Zope 2.

Zope 4

A finales de 2017, comenzó el desarrollo de Zope 4. [ 16 ] Zope 4 es un sucesor de Zope 2.13, que introduce muchos cambios que no son compatibles con versiones anteriores de Zope 2.

Zope 5

Zope 5 fue lanzado en 2020. [ 17 ]

Plantillas de página de Zope

Como se mencionó anteriormente, las plantillas de página de Zope son documentos XHTML , lo que significa que se pueden visualizar y editar con editores HTML estándar o herramientas compatibles con XHTML (una gran ventaja en comparación con otros lenguajes de plantillas utilizados para aplicaciones web). Además, se puede verificar la compatibilidad con XHTML de las plantillas, lo que garantiza que se expandirán automáticamente al formato XHTML correcto.

Sin embargo, estas plantillas de página no están diseñadas para ser renderizadas tal cual. En su lugar, se les añaden elementos y atributos en espacios de nombres XML especiales (véase más abajo). Esta información adicional se utiliza para describir cómo debe procesarse finalmente la plantilla de página.

Aquí tienes algunos ejemplos básicos. Para incluir condicionalmente un elemento en particular, como un divelemento, simplemente añade el tal:conditionatributo al elemento de la siguiente manera:

< div tal:condition = "..." > ... </div>

Para controlar lo que aparece dentro de un elemento, utilice el tal:contentatributo de esta manera:

< h1 >< abarca tal: contenido = "..." /></ h1 > ... 

Finalmente, para introducir o reemplazar valores de atributos, utilice el tal:attributesatributo como se muestra a continuación. Puede usar Python para modificar el atributo href en tiempo de ejecución.

<a href="" tal:attributes="href python:'http://someurl.com/%s'%someobject"> ... </a>

Esta es una explicación muy superficial de las plantillas de página de Zope. El comportamiento de las plantillas de página de Zope se describe casi por completo mediante un lenguaje de plantillas , basado en las especificaciones TAL, TALES y METAL:

Software destacado que utiliza Zope

Véase también

Referencias

  1. "Registro de cambios - Documentación de Zope" .
  2. 1 2 Reuven M. Lerner. "En la forja: evaluación de Ruby on Rails" . Linux Journal . Consultado el 26 de marzo de 2010. Zope también fue pionero en la idea de la publicación de objetos, en la que una URL describe el método que debe llamarse en un objeto en particular.
  3. 1 2 Philip J Eby (11 de diciembre de 2003). "Comentario sobre "Lisp y productividad"" . Joel on Software. Archivado del original el 18-02-2009 . Recuperado el 26-03-2010 . En 1997, Jim Fulton (el CTO de Zope Corp) desarrolló una técnica que denominó "Publicación de objetos" y la implementó en una biblioteca llamada Python Object Publisher (también conocida como Bobo). La metáfora de la publicación de objetos se encuentra hoy en día en muchos conjuntos de herramientas de Python; en otros lenguajes, se encuentra, en el mejor de los casos, de forma limitada.
  4. Lutz, Mark (2006). "18: Temas avanzados de Internet" . Programación en Python (3.ª ed.). O'Reilly Media . ISBN  9780596554613. Consultado el 27 de marzo de 2010. El uso de Zope se ha extendido tan rápidamente que muchos programadores de Python lo han considerado una aplicación estrella para Python : un sistema tan bueno que, naturalmente, coloca a Python en el centro de atención del desarrollo.
  5. Jon Udell (7 de febrero de 2000). "Zope es la aplicación estrella de Python" . BYTE . Archivado del original el 2 de marzo de 2000. Consultado el 4 de junio de 2011 .
  6. «Guido van Rossum abandona Zope.com - Slashdot» . desarrolladores.slashdot.org .
  7. "Documentación de BlueBream" . Archivado del original el 22/01/2010 . Consultado el 17/01/2010 .
  8. "Reunión de la Junta Directiva de la Fundación Zope, 14 de octubre de 2010" . Archivado del original el 21 de enero de 2010. Consultado el 17 de enero de 2010 .
  9. "Registro de cambios" .
  10. "bluebream 1.0" . pypi.python.org. 18 de enero de 2011. Consultado el 4 de noviembre de 2020 .
  11. 1 2 "1. Introducción — Documentación de BlueBream v1.0b4" . bluebream.zope.org . Archivado del original el 22 de enero de 2010. Consultado el 17 de enero de 2010 .
  12. "Zope.dev - Recursos e información de Zope" . Archivado del original el 21/01/2010 . Consultado el 17/01/2010 .
  13. "Preguntas frecuentes - General 5: ¿Cuál es la licencia de Zope 3?" . Archivado del original el 22/08/2009 . Consultado el 17/08/2012 . Zope 3 está licenciado bajo la Licencia Pública de Zope, Versión 2.1 (ZPL).
  14. "Arquitectura de componentes de la wiki de Zope 3" . 9 de mayo de 2008. Archivado del original el 9 de mayo de 2008.
  15. "Zope 3 wiki SprintSchedule" . Archivado del original el 14 de agosto de 2012. Recuperado el 17 de agosto de 2012 .
  16. "Registro de cambios — Zope 4" . github.com .
  17. "Registro de cambios - Zope 5" . zope.readthedocs.io .
  • Sitio web oficialEdita esto en Wikidata