Some years ago, in 2004, I came up with the following quote to promote the Five project, which was the first step towards the inclusion of Zope 3 technologies in Zope 2. Zope 3 technologies are now heavily used in Zope 2 projects, and Zope 3 code has been part of Zope 2 for a while now, but back then we were just at the start of this process. The quote itself was creatively adapted from the first season intro of Babylon 5, a 90s scifi TV show: "It was the dawn of the third age of Zope. The Five project was a
dream given form. Its goal: to use Zope 3 technologies in Zope 2.x by creating a Zope 2 product where Zope 3 and Zope 2 could work out their differences peacefully." I realized today we are now at the dawn of a new age of Zope: the fourth age. What are the ages of Zope? A community needs its mythology, its history and storytelling, so let's tell them to each other and everybody else. Zope's First Age: The Age of Through-the-web Development. (1998-2001) In 1998, Digital Creations (now Zope Corporation) open sourced their Principia web application platform, renaming it to Zope. This open sourcing was a rather unprecedented move for the times and drew much attention from the press. The web was hot, and the Zope community grew quickly. It was an age of discovery and exploration. Much of Zope development was done using the Zope Management Interface (ZMI) and through the web. People would write DTML templates, ZSQL expressions, later ZPT templates and Python Scripts in a web browser to put together web applications. You could also install so called "Products" to extend Zope with new features, but how exactly to do this remained a mystery to most members of the community. Zope's Second Age: The Age of Product Development (2001-2004) Slowly the Zope community started to figure out how to do Product development. A Zope "Product" is basically a special kind of Python package you can install in a special place to have Zope pick it up. A Product can register new content types with Zope. These could be used to extend the ZMI development platform's abilities. This age saw the rise of the CMF, the Content Management Framework, which worked this way. More and more also we saw the creation of whole new applications in Product form. The major CMS projects of Zope, such as Plone and Silva, started somewhere in this age. The second age also saw the start of the Zope 3 project, an undertaking to rewrite the Zope platform taking into account the lessons learned from Zope 2. At this time we did not yet know what shape Zope 3 would eventually take. "Zope 3" shows we were still expecting a pattern of replacement: Zope 3 would be a successor that would replace our Zope 2, and we'd somehow move our code over to the new platform. It didn't happen that way. The second age was an age of building. It was in many ways an age of diversification and parting of the ways. Different projects building on Zope would move in quite different directions and the community started breaking apart into different sub-communities with their related but slightly different ways of doing things. Zope's Third Age: The Age of Zope 3 Technologies. (2004-2007) The Zope 3 platform developed and matured, and the first applications started to be developed on this platform. It was realized that it would not be a clean successor to Zope 2. Zope 2 was there to stay. Instead, the community started integrating the Zope 3 technologies within Zope 2 itself, starting with the Five project. This was an age of a coming together of ways. The different sub-communities started sharing more again. The main way this was done was through the increased use of Zope 3 technology: the Plone, Silva projects, and Zope 2 and CMF themselves, started integrating Zope 3 technologies heavily into their codebases. Zope's Fourth Age: the Age of the Rebirth of Zope (2007-) During the third age, outside the Zope world, other web technologies had started to become more and more popular. Projects like Ruby on Rails, Django, TurboGears and Pylons started gathering significant mindshare. Zope would have to adapt, reinvent itself, or be consigned to irrelevance. This process of adaptation had been long underway with the Zope 3 project. The previous ages have shown that the Zope community has a magnificent ability to adapt itself. It was now time to apply the lessons from the competition: start to actively reach out to the outside world. Communicate better. Accomplish the goal we set out to reach long ago with Zope 3: to work with the broader Python community instead of being isolated in our own community. This is the age we find ourselves in today. It is the age of the eggification of Zope 3, and slowly also Zope 2: the splitting up of Zope technologies into more independently reusable and evolvable packages, using common Python technologies such as setuptools and the Python package index. It is the age of WSGI, allowing Zope to be integrated with other Python web technologies more easily. The Grok project set out to make Zope 3 technologies more easy to use for beginners and experts alike. The Repoze project set out to bring Zope 2 kicking and screaming into the modern egg and WSGI age. We are taking a fresh new look at ourselves. We are just at the dawn of this new fourth age. We still need to drastically improve both the quality and quantity of our communication with the rest of the world. We need to reach out to the world and say "Zope is back. It is new again, reforged, but forged within it are hard-earned lessons of the past. Please come and join us." I hope the effort of the fourth age will be successful, and that many newcomers will join the Zope community in the next years. Who knows what the fifth age will bring us? In a large part, it will be up to the newcomers.
(10) Thu Nov 15 2007 23:56 At the Dawn of the Fourth Age of Zope:
- Comments:
Posted by Philipp von Weitershausen at Fri Nov 16 2007 00:53
For all those impatient people who're too lazy to read this boring long post (kidding!), here's Martijn's must more exciting preview slash summary from EuroPython: http://youtube.com/watch?v=LAZZC7nvD2ESeriously now: Thanks, Martijn, for writing this excellent article. With these and other posts you're communicating important wisdoms from inside the Zope community to the outside world. We need more of such posts, from more people!I, for one, sure hope that we can once again draw a consistent picture of Zope in the fourth age: an application server (Zope 2), a web framework (grok), a set of libraries (zope.*), WSGI components (repoze). Who knows, perhaps we can even make Zope seem not so complicated and horrid as everybody out there thinks it is...
Posted by Bmark at Fri Nov 16 2007 03:57
Zope will be succesfull when it does not look like zope anymore.I cringe when I see Grok, no doubt it simplifies Zope and yet it is still so much more complicated than Django, Pylons or TurboGears.As Guido said it once, to use Zope you need to drink lavish quantities of their Koolaid, man does not taste good
Posted by Martijn Faassen at Fri Nov 16 2007 05:15
Bmark: I'm glad to hear you've looked at Grok! Why do you think Grok is more complicated than Django, Pylons or TurboGears? What bits of Grok did you look at? What made you cringe exactly?You'll have to actually give us some details, otherwise we can't fix it, right?
I've worked extensively with TurboGears in the past, and I can't see it being easier myself, but then I got a Zope background so it's not an altogether fair comparison. I just remember having to dig quite deeply into some not very well documented areas to make various bits work.I came away from a talk on Pylons at EuroPython with the impression that like with Zope 3, you need to do a significant amount of research and cobbling together to make a lot of the stuff work. That's something we've been trying to fix for Zope 3 with Grok, and I imagine TurboGears 2 does something similar with Pylons.I haven't looked much at Django yet, so I can't really compare much there.Note that it's rather odd to imply that Zope isn't succesful: there are plenty of deployments, after all. I'm fairly sure there is more business organized around Zope and Plone than around the other frameworks, too.Posted by Chris McDonough at Fri Nov 16 2007 07:37
+1. I think that we're on the right track now. Damn, it took long enough. ;-)
Posted by Sascha Welter at Fri Nov 16 2007 09:50
"We still need to drastically improve both the quality and quantity of our communication with the rest of the world."Amen.Frankly, when I look at the repoze page, all I see is a big, steaming buzzword soup.IMHO some of the more visible web frameworks are visible not because of "marketing", but because of tutorials and documentation coming first.
Posted by Kamon Ayeva at Fri Nov 16 2007 14:11
Cool to see such a post, Martijn.The new age seems really exciting, in terms of all the possibilities we have at hand with WSGI and the rest of Python.
Posted by Chris McDonough at Fri Nov 16 2007 16:15
Sascha: I help run the Repoze site, and I sympathize with your "buzzword" comment, inasmuch as I believe the big green bar on the homepage is useless. I complained but got overruled. ;-)But note that there is a lot of "there there" already... e.g. documentation in the form of http://static.repoze.org/misc/developingwithrepoze-zope2.pdf , a tutorial in the form of http://repoze.org/tmdemo.html .. screencasts in the form of http://blog.repoze.org/installing-repoze-screencast-20071025.html and the actual software... http://repoze.org/quickstart.html .
Posted by Lennart Regebro at Fri Nov 16 2007 17:02
Although I started with Zope Christmas 1999, I completely missed out of the First Age. :) But the first Age, the New Hope, The dawning of Aquarius, The second coming, whatever you want, will no doubt be awesome! Yay for us!
Posted by Bmark at Fri Nov 16 2007 18:06
Martijn: I'm glad to hear you've looked at Grok! Why do you think Grok is more complicated than Django, Pylons or TurboGears? What bits of Grok did you look at? What made you cringe exactly?When I go to any nontrivial tutorial I don't understand anything at all. Take the "Permissions Tutorial" it is choke full of features that are completely meaningless to someone who it not versed with Zope.Or take the Search Tutorial, I'm left completely clueless as to just what is going on. First and foremost I'd need to see how one adds and displays text, then I would add the search to it. Without that the whole thing is meaningless.
Posted by Martijn Faassen at Fri Nov 16 2007 20:23
Bmark: thanks for replying.It looks like you're complaining about the quality of the tutorials. That's a good point: I think we need to do work on improving those further. There is not enough explanatory background information given for someone to know what is going on. I'd like to start integrating some of this material into the main tutorial and add more explanatory background.By the way, if you want to find out how to add text at all (with an add form presumably), you should read the main tutorial first:http://grok.zope.org/tutorial.htmlThe search tutorial discusses how to add indexes and search, not on how to create the actual objects to search for.
