You are not logged in Log in Join
You are here: Home » DevHome » Resources » Zope Development Roadmap

Log in
Name

Password

 

Zope Development Roadmap

This page has not been updated for a while and contains outdated information. If you want to use any information from this page, please make sure it is still valid.

This roadmap outlines the direction of Zope development in the near to mid term. Note that some of the most important things that we want to accomplish have nothing to do with writing code, so the roadmap is structured as a set of high-level goals (which are the really important part) that will guide work on the platform going forward. The idea is that the projects going on in DevHome will work in support of these high level goals.

High level goals

  • Opening the Zope development process

There is a lot of untapped potential in the Zope community. There are many developers out there who are able and willing to actively contribute to core development, but we at DC have not yet put in place the needed technical and process infrastructure required to allow the community to contribute effectively.

There are many aspects to this, and they will not be solved all at once. We are now poised to make progress in this area, and I want to take an iterative approach to opening the process. The first steps will involve:

  • establishing a Zope development-centric area on Zope.org to make the above information available (the moral equivalent of what mozilla.org does for mozilla) for now
  • beginning to use that area to plan, coordinate and execute further zope development (roadmap, projects, status reports, design, planning, etc.)
  • identifying our process for allowing checkin priveleges and an initial group who should be given those privileges
  • identify and capture the absolute key elements of process that we will follow (config mgmt, how projects work, who owns what, who should you clear checkins with, etc.)
  • establishing some good process examples in the developer area
  • getting cvs infrastructure set up (cvs armegeddon)

This will give us the core things needed for the community to begin expressing its potential. Over time this core will certainly evolve; the pains we'll have with experience will help us set priorities for improving the fishbowl environment. I expect to work closely with Ethan to integrate this intelligently with our overall Web presence.

  • Define Zope as a platform and its audience

    We have heard very clearly lately that complexity is a problem in Zope, and that it is not just a documentation problem. Zope does a lot of things, and we are at a point where we will have to be very careful about what Zope is and what it isn't. This is particularly true once we truly work in a fishbowl. More people will mean more opinions. If there is not a general agreement on what Zope is as a platform and what does and doesn't belong in that core a lot of energy will be wasted arguing this point over every proposal.

    Drawing distinct lines around the platform and defining the audience of that platform will be key to making the right strategic decisions going forward. If we can't agree on what it is and who it is for, we cannot possibly make good decisions on related things like documentation and training and we will never be able to measure whether we are doing a good job or not.

  • Simplifying the Zope experience

    This is not so much a specific project as an ongoing philosophy. There has been quite a bit of discussion about this lately, and there are several themes that come through totally clear:

    • simple tasks should be simple!
    • flatten the curve for productivity
    • couch our story in familiar terms
    • reduce Pycentrism (index_html, et. al.)
    • less magic, even at the expense of more typing!

I think that the increased involvement of the community will be indispensible to helping us comply with these themes. We need to give ourselves an attitude adjustment and make simplicity and familiarity a priority going forward (even at the expense of elegance!). Many people have taken the time to tell us what is wrong, and we ignore that at our peril. We can do a much better job of making complexity an option rather than a necessity without compromising our core ideas. This jihad extends beyond the core software - documentation, training materials and web site content can contribute greatly by changing how we go about introducing complexity to the audience.

  • Simplify the developer experience

    Like the through-the-web experience, creating add-on products is more difficult for developers than it should be. The decisions that we made in the past were appropriate for the situation at the time, but we need to change with the environment. It was ok for us to sacrifice clarity for magic and expediency when we were the only ones who had to puzzle it out, but we have to stop that now. We need to give developers a clear roadmap, clear interfaces to work with and clear guidelines for product development. This applies both to Python and through-the-web products.

    We have been making some progress in this area with things like the SecurityManager interface and explicit product initialization calls that remove some of the black magic that was there before. We need to make our future architectural decisions reflect this progess. We should also work with the developer community to identify the biggest current problem areas and work to address them.

  • Continue working on scalability and reliability

    While some progress has been made on things like mountable databases, this work is very preliminary and we will increasingly need to think about our architecture with an eye toward large scale distributed systems. Some of our existing ideas (like the control panel object) probably need to be rethought to provide better through-the-web system information and management for a much more ambitious deployment model. Packaging of the Zope core and add-on products probably also need to evolve to support scalability.

    We need to get the initial release of ZEO "finished", meaning hardened, documented and packaged. Related to that, we should get PythonMethods finished to make it easier for developers to take full advantage of the 3-tier distribution story that ZEO represents.

    The "big folders" problem should be solved to give developers a little more headroom for in-ZODB applications.

  • I18N support and Python 2.0

    Probably a little longer term goal, but there will be a number of things to think hard about once Python 2.0 is finalized. We will need to assess the impact of 2.0 on Zope and plan to support it, particularly the unicode aspects.

    With Python 2.0, the core infrastructure will be finally be there to begin defining and architecting I18N support for Zope. Community involvement will obviously be key in this.