PEAK: Python Enterprise Application Kit The road less traveled is the way to the top.


Friday, March 27, 2020

 As of March 2020, the mailing lists at have been closed, and the archives moved here.  In addition, the old and sites are in the process of being shut down, so if there is anything you want from that hasn't been migrated to the Github PEAK-Legacy organization, you should grab it before April 1.

For more info on the shutdown and migration, you can read the final message to the PEAK mailing list.

Monday, June 25, 2007

Wondering what's been going on with PEAK lately?  Check out this status report.

Wednesday, May 24, 2006

The breakup of PEAK into separate EasyInstall-able packages has finally begun!  So far this week, BytecodeAssembler, Importing, and DecoratorTools have all been spun off into their own PyPI listings as separately-installable packages.  I've also posted a new roadmap to the mailing list, which describes the work to be done on PEAK-Rules and various other planned package spinoffs.

Friday, September 16, 2005

Wow, I can't believe I've neglected to update this page for almost a year now.  It's not because development hasn't been taking place, though.  For example, I've been doing a pretty major project that roughly corresponds to Java's OSGi crossed with Perl's CPAN shell:

  • setuptools - for packaging Python projects as "eggs"
  • EasyInstall (bundled with setuptools) - for finding, downloading, and installing projects from PyPI (aka the Cheese Shop)
  • pkg_resources (bundled with setuptools) - a runtime package management, resource extraction, and service discovery system akin to OSGi

This project has in fact consumed most of my off-hours this year, so I've done next to nothing on other parts of PEAK, except that a few months ago I updated the data manager interface to inch it a little closer to what peak.schema will someday look like, whenever I get around to working on it again.  There is still so much that needs doing with setuptools just to catch it up to Ruby's Gems as far as package management.  Another big project still to come is the breakup of PEAK into separately-distributed eggs, following our recently completed move to Subversion for source control.

Speaking of which, if you came here from David Mertz' new article on generic functions and are looking for the implementation, here's how to install it:

  1. Download , and then run:
  2. -Zf RuleDispatch

This will install the latest version of the RuleDispatch generic function package along with PyProtocols and setuptools.  I'll probably make an official release to PyPI this weekend, but in the meantime this will let you get started.  (Don't try to download from CVS; we've moved to Subversion!)

The setuptools project is likely to remain my primary focus for a while, though.  In addition to being a key "enterprise" feature for Python, and being something needed for my "day job" at OSAF, it's also a key feature for PEAK's future.  PEAK is as large as it is only because it has historically been difficult to manage dependencies between separately-distributed Python packages.  PEAK contains dozens of useful, narrowly-focused tools and mini-frameworks that would be considerably more attractive as standalone distributions.  The setuptools project finally makes it practical to distribute them separately.

Wednesday, October 27, 2004

An early version of peak.web is now available, as I previously promised.  At this point, it's more of a proof-of-concept than a working web framework, since it only includes features aimed at creating static sites and dynamic read-only sites (e.g. from databases).  In other words, no authentication and no forms handling.  For the moment, however, it's a very easy way to create pages to go with your objects.  Searching or modifying objects, well, that's a bit harder.

I also now have a personal blog at, which will sometimes touch on PEAK-related topics.  The blog, combined with the work I've been doing for my wife's lingerie and adult toy store (not safe for work!), has been taking up a lot of my time lately.  (And no, the store's website isn't written in peak.web, it's using an open source PHP package -- why do you think I've been so motivated to get peak.web working?  PHP the language isn't so much the issue, as it is that adding components to the site equals applying diffs to various segments of it.  Ugh.  peak.web will be much more modular; I guarantee it.)

Tuesday, July 6, 2004

The first release candidate for PyProtocols 0.9.3 is now available.  This release mainly improves compatibility and API symmetry between PyProtocols and Zope, such as the ability to use IFoo(bar) as a shortcut for adapt(bar,IFoo), and the ability to use adapter factories that take only one argument.

I've tried to make it as backwards-compatible with 0.9.2 as possible, but depending on how deeply you've used certain obscure features, you may notice changes.  So make sure that you read UPGRADING.txt and CHANGES.txt before you upgrade any production code to 0.9.3.

Wednesday, February 18, 2004

PEAK 0.5a3 is finally out.  There's no unifying theme to this release, unless "it's been too long since the last release" counts. Lots of new frameworks and other cool features.  But then, if you've actually been using PEAK, chances are good you've been following the CVS version and the mailing list, and so you've already been using all the new stuff for a while.

So, I'm not sure what else I should say here.  I still don't want to excessively promote PEAK to people who aren't willing to do a little digging and experimenting, so I guess I should shut up now.

Friday, December 5, 2003

PyProtocols 0.9.2 is out; I goofed and missed adding a unit test for the new protocols.Variation class.  As a result, it was unusably broken.  Thanks to Radek Kanovsky for pointing this out.  I guess this just shows what happens when you don't write the tests first.

Friday, November 28, 2003

PyProtocols 0.9.1 is out.  Highlights include fixed bugs, compatibility with the latest versions of Python, Zope, and Twisted, and lots of new convenience features for automatically or semi-automatically creating protocols and adapters.  See the full list of changes.

Wednesday, October 15, 2003

There's now a developer wiki available at  There are a few official documentation semi-drafts floating around there, plus some promising volunteer efforts and examples.  Also, a mostly-complete set of IRC channel logs is available at, but keep in mind that most days logged consist mostly of "so-and-so came, so-and-so left", and other days are missing.  The Twisted-based logbot seems susceptible to being bumped offline and never coming back.  I keep meaning to ask for help with it on the Twisted mailing list, but never quite getting around to it.

Work is in progress on developing a full-blown logical query language for PEAK.  Actually, not so much a language as a Python API for creating query objects that can be either executed on objects directly (the way peak.model.queries does now) or translated to other query languages like SQL.  The API's expressive power should be roughly equivalent to that of ConQuer, a conceptual query language that's a superset of SQL in functionality, and much easier to use.  I'm currently posting design notes to the mailing list, and posting links to useful papers in the wiki.