Zope 2 | ||
---|---|---|
Zope management interface desde un navegador Web. | ||
Información general | ||
Tipo de programa | Servidor de aplicaciones Web | |
Autor | Zope Corporation | |
Desarrollador | Zope Corporation | |
Lanzamiento inicial | 1998 | |
Licencia | Zope Public License | |
Estado actual | Estable | |
Idiomas | 1 | |
Información técnica | ||
Programado en | Python. | |
Versiones | ||
Última versión estable | 5.8.6 (info) ( 04 de octubre de 2023 (1 año, 1 mes y 5 días)) | |
Última versión en pruebas | 4.0b1 (info) ( 18 de septiembre de 2017 (7 años, 1 mes y 21 días)) | |
Enlaces | ||
Zope es un proyecto comunitario activista de un entorno de desarrollo para la creación de sitios web dinámicos y/o aplicaciones web usando un servidor de aplicaciones web orientado al objeto, escrito en el lenguaje de programación Python (con algunos componentes escritos en lenguaje C para optimizar su rendimiento) de código abierto publicado bajo la licencia Zope Public License.
Aunque el nombre Zope viene del acrónimo inglés "Z Object Publishing Environment – Zope", su origen se debe a un tipo de pez Cyprinus ballerus es conocido como zope o blue bream.[1]
Históricamente ha sido reconocido como una aplicación determinante que ayudó a colocar Python en el centro de atención de los desarrolladores a nivel mundial.[2][3]
Muchas cosas que son actualmente parte del núcleo de Python originalmente fueron innovaciones en su momento dadas por el desarrollo de Zope a la comunidad de desarrolladores Python, un ejemplo de esto es la librería datetime que proviene del DateTime de Zope 2.
En 1995, Digital Creations fue establecida en Fredericksburg (Virginia), fundada como una empresa conjunta de la fusión de varios periódicos. Los primeros empleados fueron Paul Everitt y Rob Page, bastante pronto se sumaría como empleado Jim Fulton.
En 1996 Jim Fulton, ahora el CTO de Zope Corporation, fue seleccionado para dar una clase de programación sobre Common Gateway Interface - CGI, a pesar de no saber mucho sobre el tema. La programación en CGI fue el modelo web de desarrollo de uso común del momento, el cual a los desarrolladores les permitía construir sitios web dinámicos. Entonces el viajar a la clase, Jim estudió toda la documentación existente en CGI. En el camino de vuelta, Jim considerado lo que no me gustó de entornos de programación tradicionales basados en CGI. A partir de estas reflexiones iniciales, el núcleo de Zope fue escrito durante el vuelo de regreso de la clase de programación en CGI.[4]
En mayo de 1997 se convierte en el consorcio de periódicos del Digital Creations, para ese momento, ya algunas empresas e usuarios estaban usando el producto gratuito Bobo, uno de esos usuarios fue Hadar Pedhazur, el cual tenía el deseo de invertir en el consorcio. Las negociaciones, sin embargo, no tuvieron éxito, porque las diferencias de visiones del futuro que Hadar vio para Digital Creaciones como una empresa de servicios, en cambio Paul y Rob le interesaban que sus productos de software Bobo, un ORB ligero para la web; Document Template, un lenguaje de scripting, BoboPOS, una base de datos orientada a objetos estuvieran dentro del aplicación comercial Principia, un servidor de aplicaciones Web, bajo un modelo de venta como soluciones propietarias.
Un año después, Hadar volvió a Digital Creations, tras el éxito alcanzado (aunque no fue tanto como se esperaba), fue entonces en noviembre de 1998 que llegaron al acordó de publicar el código fuente de sus productos emblemáticos Bobo y Principia, esta decisión fue influenciada por Hadar, principal inversionista en la compañía.[5] La combinación de Bobo y Principia fue rebautizado entonces como Zope. Esta decisión resultó de una empresa de servicios de Digital Creations (hoy en día Zope Corporation), y además proporciona en ese entonces mucha más visibilidad e interés en torno a Zope del que jamás Principia tuvo antes.
En julio de 1999 Zope 1.10.3 fue publicado[6] como primera revisión estable del proyecto y unos meses después en septiembre de 1999 fue publicado[7] Zope 2.0.0 como versión estable. En noviembre de 2004 fue publicado Zope 3, es casi completamente reescrito y contiene sólo la base de datos orientada a objeto ZODB y el motor de plantillas ZPT.
Siendo Zope un servidor de aplicaciones web ofrece una mezcla única de características, algunas son similares y otras muy diferentes de las que ofrecen otros soluciones existentes:
A continuación se presenta las frecuentes ventajas y desventajas de los servidores de aplicaciones web alternativos a Zope:
Otros servidores de aplicaciones | Zope |
---|---|
No tienen una interfaz administrativa sencilla y por lo tanto son algo complicados de manejar. | Posee una interfaz administrativa de usuario muy sencillo. |
Muchas veces requieren una configuración muy compleja. | Es fácil de instalar y no requiere configuraciones ser utilizarlo. |
Requieren de productos adicionales para el desarrollo y además son propietarios. | Trabaja con cualquier Navegador estándar y no requiere herramientas adicionales. |
Algunas aplicaciones no escalan de la misma manera que Zope le permite a un amplio número de usuarios y desarrolladores. | Dispone de un sistema de gestión poderoso y consistente que permite su escalabilidad a múltiples usuarios con una única y fácil gestión de privilegios. |
La mayoría son herramientas comerciales con código cerrado que le impide la extensión, personalización y distribución. | Es un software libre. |
Existente una serie de beneficios al adaptar Zope en su organización a continuación se describen:
La funcionalidad de Zope puede ser extendida gracias a un gran número de extensiones disponibles libremente, estos son comúnmente llamados Productos (del inglés: Products) y para ser adaptados a las necesidades, ejemplo de esto son sistema de Wiki como Zwiki, sistema de publicación de noticias y discusiones como Squishdot, álbum de fotografías como PhotosCommandes, Calendarios corporativos con CorpCalendar entre otros productos que son desarrollados y mantenidos por la comunidad de usuarios en la sección de productos de Zope.org, lista de productos en Open Source Content Management Software.
Estas extensiones están colocadas cada una en su propio directorio en el sistema de archivos y se puede remover completamente mediante la eliminación del directorio y reiniciar nuevo el servicio de Zope. Tendrán toda la extensión de la programación en lenguaje Python que este disponible, incluyendo la integración de bibliotecas escritas en Python o lenguaje C.
Zope es casi enteramente en escrito Python. Sólo algunas partes del sistema están escritas en lenguaje C por críticos de velocidad. Todo el sistema puede así, en principio, estar disponible en todas las plataformas con un intérprete Python y un compilador C para ejecutarse. Para Linux, Windows, BSD, Mac OS X y Solaris hay disponibles paquetes previamente compilados que incluyen Zope y Python.
Se trata de uno de los mecanismos más potentes de Zope. Gracias a él, los objetos pueden obtener atributos, métodos y otros objetos del entorno que están en un "subárbol heredados completamente". Es similar a la herencia, solo que en vez de buscar en la jerarquía de objetos utiliza contenedores jerárquicos. De esta manera, si una variable no se encuentra en el contenedor actual se busca en los contenedores superiores, hasta dar con su valor. De esta forma se pueden centralizar valores que son luego adquiridos por toda una jerarquía de objetos. Este mecanismo es la base principal para decir de tener sitios dinámicos hechos con Zope.
Zope tiene un framework de seguridad que le permite a los llamados roles que construyen una definición detallada sobre "quien, donde y que" puede hacerse. Para cada objeto se puede determinar cuál es el rol que se necesita para el tipo de acceso, estos roles pueden usuarios individuales a los cuales también pueden asignarse localmente, por ejemplo, para conceder acceso únicamente a una determinada sub-árbol.
Además, el trabajo de los internautas no les gusta interactuar con lenguajes scripting clásicos como PHP, Perl, etc, en el sistema de archivos del servidor y menos en un entorno virtual separado. Para romper con esta práctica de como hacer sitios dinámicos Web solamente posible cuando el desarrollador desee adoptar nuevos patrones de trabajo. La tecnología Zope impide el acceso a otra información almacenada en el servidor y por consiguiente alterar los patrones comunes de ataque informáticos.
Zope tiene la capacidad multihilo. La distribución de la carga de una instancia de Zope para múltiples procesadores, sino para prevenir por un global de bloqueo del intérprete Python. Con la ayuda de Zope Enterprise Objects - ZEO, es posible que varios servidores pueden acceder a la misma base de datos. Tales sistemas distribuidos son capaces de hacer uso de múltiples procesadores.
Zope puede configurarse para escenarios donde se requieren funcionamiento de alta disponibilidad a través de configuraciones con Servidores Web como Apache, Nginx, Zope; con Proxies / Balanceador de Carga como HAProxy, Pound, Squid, entre otros; con servidor de Cacheo Web Externo como Varnish, Squid, Apache y Memcache; replicación de base de datos con la librería Relstorage o Neopod.
La comunidad está compuesta por los usuarios y los desarrolladores. Muchos de los miembros de la comunidad son profesionales tales como consultores, desarrolladores y webmasters, que dedican su tiempo y dinero al soporte de Zope. Otros muchos son estudiantes y usuarios curiosos, que aprenden cómo usar esta herramienta.
Los encuentros presenciales formales e informales se dan de vez en cuando en conferencias Python o conferencias Plone pero pasa la mayor parte del tiempo discutiendo sobre Zope en las listas de correo electrónico, por ejemplo la lista de Zope en Español, y los sitios Web de zope.org. Muchos actores que cumplen muchas funciones que a continuación describimos:
Para enero de 2013 cuenta con 230 desarrolladores de núcleo de Zope alrededor del mundo.[10]
Para soporte oficial en Zope puede contactar a la Zope Corporation, a los proveedores de BlueBream[11] o por lo generar los proveedores de servicios de Plone ofrecen también soporte comercial en las tecnologías Zope, adicionalmente ofrece otros medios de asistencia técnica por medio de los recursos comunitarios, que ofrece soporte vía chat IRC, soporte comunitario por medio de grupos activistas en tu región.
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 que componen la plataforma de software.
Sus objetivos son:
La fundación Zope promueve a la comunidad que incluye tanto el software de código abierto, la documentación y la infraestructura Web de los contribuyentes, así como los clientes de negocios y de la organización de la plataforma de software.
Para enero de 2013 cuenta con 49 miembros designados (una afiliación individual y libre) de la Fundación,[13] los miembros si quieres formar parte de la fundación Zope puedes llenar su solicitud cumpliendo con los requerimientos necesarios.
Los miembros que deseen patrocinar económicamente a la Fundación pueden pagar membresías desde sólo $399 por año. Para enero de 2013 la fundación Zope posee miembros patrocinadores que proporcionan apoyo monetario a la Fundación.[14]
Es una empresa que ofrece una serien de productos y servicios basados en el servidor de aplicaciones Zope. La Zope Corporation es miembro patrocinador de la fundación Zope. Debido a que Zope fue una de las primeras herramientas de este tipo que se convirtió en software libre[15] la Zope Corporation desarrolló un modelo único de negocios de código abierto con el cual le permite seguir contribuyendo al continuo control de software a sus clientes y además le permite continuamente seguir apoyando el desarrollado global y vibrante en la comunidad Zope alrededor del sitio zope.org en el cual se enriquece el software, aportando complementos necesarios, suministrando correcciones a errores, respondiendo preguntas.
La comunidad soporta y distribuye sus módulos a través de los sitios web de los proveedores de servicios pero la mayoría están en el PyPI. Los cantidad de paquetes publicados hasta la fecha de enero de 2013 en vía PyPI para Zope2 son de 876 paquetes,[16] para Zope3 son de 930 paquetes ,[17] para ZODB son de 48 paquetes ,[18] para Pyramid son de 84 paquetes [19] y para Buildout son de 428 paquetes ,[20] entre otros más.
Este proporciona infraestructura y servicios que agilizan enormemente el desarrollo, que consiste en varios componentes diferentes que trabajan de manera conjunta para ayudarte a construir aplicaciones Web que se describen a continuación:
Es un servicio de publicación de objeto, que se encarga de servir los contenidos tanto a usted como a sus usuarios, y fue el primer sistema utilizando la metodología objeto de publicación ahora común para la Web. Puede que dispongas ya en su sistema de otro servidor web, como Apache o Microsoft IIS y no le interesa usar el servicio de Zope, no se preocupe, Zope trabaja también con estos servidores web modernos que soportan CGI, HTTP/WebDAV, XML-RPC, FTP y WSGI.
Posee una Interfaz basado en Web, llamada “Zope Management Interface - ZMI” le puede utilizar su navegador para interactuar en la gestión de Zope. Esta interfaz es un entorno de desarrollo bajo el concepto a través de la Web, que le permite hacer cosas como: crear páginas web, añadir imágenes y documentos, interactuar con bases de datos relacionales externas y escribir scripts en diferentes lenguajes.
Posee por defecto un mecanismo de almacenamiento en una base de datos de objetos, llamada “Zope Object Database - ZODB”, cuando usted trabaja con Zope, la mayoría de la veces trabajará con objetos almacenados en la ZODB. La interfaz de gestión de Zope proporciona una manera simple y familiar de administrar objetos que se asemeja bastante a la forma de trabajar con los tradicionales gestores de ficheros, pero cada objeto tiene propiedades, métodos u otros objetos. Esta aproximación es muy diferente de las base de datos relacionales habituales.
Si usted no requiere almacenar su información en la ZODB, Zope dispone de múltiples conectores a diferentes bases de datos relacionales como Oracle Database, MySQL, PostgreSQL, Sybase y entre otras, ofreciendo sistemas básicos de conexión y consulta abstrayéndolos como objetos.
Ofrece soporte de lenguajes basados en scripts, le permite escribir aplicaciones en varios lenguajes diferentes como Python,[21] Perl,[22] PHP,[23] JSP[24] dentro del servidor de aplicaciones de Zope.
La tecnologías de Zope proporciona tres mecanismos para la creación de plantillas HTML:
Document Template Markup Language (DTML) es un lenguaje basado en etiquetas que permite la ejecución de secuencias de comandos simples en las plantillas. DTML ha sido el primero lenguaje de marcado dentro de Zope por un largo tiempo.[25] DTML contiene disposiciones para la inclusión variable, condiciones y bucles. Sin embargo, DTML tiene inconvenientes importantes: etiquetas DTML intercalados con formato HTML no son válidos a los documentos HTML, y la inclusión descuidada de la lógica da como resultados que las plantillas sean un código muy ilegible.
Zope Page Templates (ZPT) es una tecnología que corrige los defectos del DTML, por consiguiente es el lenguaje de marcado recomendado primariamente dentro de Zope es hoy en día.[26] Las plantillas ZPT pueden ser documentos XML bien formados o documentos HTML, debido a que presentan todas las marcas especiales como atributos en el namespace Template Attribute Language - TAL (Lenguaje de plantillas de atributos). ZPT ofrece un conjunto muy limitado de herramientas para la inclusión condicional y la repetición de elementos XML. En consecuencia, las plantillas son por lo general bastante simple, con más lógica implementada en el código Python. Una ventaja importante de las plantillas ZPT es que se puede editar en los editores gráficos de HTML. ZPT también ofrece soporte directo para la internacionalización de software.
Chameleon es un motor de Page Templates escrito en Python el cual se caracteriza por ser más rápido ya que las plantillas son compiladas a byte-code esto lo hace muy optimizado en su velocidad; es extensible ya que es fácil de extender un lenguaje o crearse su propio lenguaje al estilo taglibs[27] y está probado con pruebas automatizadas evitar problemas. Chameleon es una nueva implementación del motor de Page Templates por consiguiente hay que tener en cuentas sus diferencias e incompatibilidades.[28]
El desarrollo principal del proyecto Zope ahora es mantenido por la fundación Zope que está compuesto por miembros de la comunidad de desarrolladores. Actualmente es independiente de cualquier conexión con Zope Corporation. En la actualidad se desarrollará en paralelo y activamente tres ramas principales del desarrollo que se mantienen por separado por la comunidad Zope:
Un sitio web Zope se compone generalmente de objetos en una base de datos de objetos de Zope no son archivos en un sistema de archivos, como es habitual en la mayoría de servidores web. Esto permite a los usuarios aprovechar las ventajas de las tecnologías de objetos, tales como encapsulación. Zope mapea las direcciones URL a objetos utilizando el árbol de contenidos de tales objetos, los métodos se consideran que deben figurar en sus objetos también. Los datos pueden ser almacenados en otras bases de datos, así, o en el sistema de archivos, pero ZODB por defecto. La plataforma de aplicaciones web Zope 2 ha estado en continuo desarrollo como un sistema de código abierto desde 1998.
Formalmente conocido como Zope 3, fue inicialmente publicado bajo ese nombre, como es una nueva implementación del servidor Zope 2, pero debido a la incompatibilidad entre las versiones del framework Zope 2 y 3, entonces fue renombrado[29] a BlueBream el 17 de enero de 2010 para marcar diferencia de Zope 2.
Se convierte en la siguiente generación de la plataforma web desarrollada por la comunidad Zope. Fue publicado en 2005 como una plataforma de desarrollo orientado. Su objetivo es ofrecer una colección de muchos pequeños componentes que lo conforman los cuales se pueden combinar para crear potentes aplicaciones Web.
Con BlueBream un corte se hizo con la compatibilidad atrás con Zope 2, se decidió corregir los errores del pasado, volcando toda la experiencia adquirida en Zope 2 para revisar la estructura interna fundamental del proyecto. Estos cambios incluyen una arquitectura de componentes Zope, un efecto secundario es que muchos componentes también se pueden utilizar fuera de Zope ahora en otros proyectos Python.
Para ofrecer compatibilidad hacia atrás a los componentes hechos para Zope 2 desde BlueBream/Zope 3, puede usar el componente llamado Five.
Es un framework para aplicaciones web de código abierto basado en la tecnología del Zope Toolkit. El proyecto inicio en 2006 de la mano un grupo de desarrolladores Zope.[30] Grok desde entonces ha tenido lanzamientos regulares. Sus tecnologías centrales (Martian, grokcore.component) también se utiliza en otros proyectos basados en Zope.[31][32]
El primer motivo detrás del proyecto Grok, es hacer a la tecnología del Zope Toolkit más accesible y más fácil de usar para los recién llegados y, al mismo tiempo, a la velocidad de desarrollo de aplicaciones, de acuerdo con el paradigma de la programación ágil.[33]
Para ello, utiliza de la convención Grok es usar la convención sobre configuración en lugar de utilizar un lenguaje explícito de configuración basado en XML (ZCML) como el Zope Toolkit y BlueBream hacen. Grok usa código Python para la configuración del componente, y tiene muchos valores por defecto implícitos y convenciones. Grok es similar en sentir a otros marcos Web de Python como TurboGears, Pylons y Django.[34]
Durante más de una década la Zope Corporation y la comunidad Zope han aumentado en un sistema excepcional de productos y tecnologías, que influyen en el desarrollo general de Python, servidores basados en aplicaciones web y herramientas. A continuación se describen las más importantes de ellas:
Este dispone de un framework que soporta el diseño y la programación basada en componentes llamado Arquitectura de Componentes de Zope viene del inglés “Zope Component Architecture - ZCA”. Esta funciona muy bien al desarrollar sistemas de software grandes en Python. La ZCA no es específica al servidor de aplicaciones Zope, se puede utilizar para desarrollar cualquier aplicación Python.[35]
Del inglés "Zope Toolkit - ZTK", es un kit de herramientas para el desarrollo de Zope y fue creado como resultado del desarrollo de Zope 3 / BlueBream, ahora hay muchos paquetes de Python independientes usados y desarrollados como parte de BlueBream, y aunque muchos de estos son utilizables fuera de BlueBream, muchos no lo son. El proyecto Zope Toolkit (ZTK) se inició para clarificar que paquetes eran utilizables fuera BlueBream, y para mejorar la aptitud para la reutilización de los paquetes. Así, el kit de herramientas de Zope es una base para los framework de Zope. Con Zope 2.13[36] fue la primera versión de un framework web que se basa en Zope Toolkit, Grok,[37] BlueBream[38] y Plone[39] también lo adoptaron.
Es un conjunto de componentes construidos encima de Zope 2 para ayudar en la creación de sistemas de gestión de contenidos. Un ampliamente conocido sistema de gestión de contenidos que emplea el Zope CMF es Plone.
El nombre de proyecto Five deriva el juego de palabras: Zope 2 + Zope 3 = Cinco, fue creado para solventar el problema de las incompatibilidad entre versiones Zope 2 y Zope 3 desde el punto de vista del desarrollador de aplicaciones web, producido como resuelto una librería que le permite usar muchos de los conceptos y técnicas de Zope 3 en Zope 2. Gracias a esta un desarrollador puede migrar las aplicaciones a utilizar Zope 2 y adoptar gradualmente la arquitectura de componente Zope 3 a lo largo de una trayectoria continua. Five se incorporó a la distribución original de Zope 2, y cada versión posterior integra un número cada vez mayor de características de Zope 3.
El proyecto Zope ha creado algunas herramientas útiles, a continuación se describen:
Es un sistema de auto-construcción basado en Python para crear, ensamblar y desplegar aplicaciones desde diversas partes a partir de piezas múltiples, algunos de los cuales pueden ser piezas de software no basado en Python.[40]
Una gran cantidad de software se ha construido en la sobre la Zope. A continuación una lista de los proyectos más conocidos:
Existen muchas herramientas disponibles que te ayudan en la construcción de aplicaciones web. Al comienzo de la historia de la web, las aplicaciones web sencillas eran construidas casi de forma exclusiva mediante programas CGIs escritos en Perl u otras lenguajes de la época temprana de la Web. Ahora hay una multitud de opciones que van desde las soluciones código abierto como PHP, Python, Ruby a opciones comerciales como ColdFusion de Adobe (originalmente de Allaire), Java Application Servers o Story Server de Vingette.
|url=
incorrecta con autorreferencia (ayuda) (Web). Consultado el 27 de enero de 2013. «conocido como zope o blue bream».