=======
Credits
=======

Zope 3 has been a Zope Community effort!  It wouldn't exist without
the many fine contributions, in many forms, by many people.  In fact,
so many people have helped out in so many important it's impossible to
give everybody the credit they deserve, but I'll make a start.

Sprints
-------
  
A good bit of the Zope 3 development has taken place in Zope 3
sprints. 

- The earliest sprints were held at Zope Corporation. Tres Seaver
  was instrumental in helping us figure out this format and
  teaching me the XP process.

- Chris Withers and NIP hosted the first European sprint in
  London in February 2002.

- Alastair Burt hosted a workflow sprint in Saarbruecken, Germany,
  in March 2002. 

- NetAid (Josh Kutz, Nikheel Dhekne) hosted a sprint in New York
  in March 2002.

- Beehive hosted a sprint in Berlin in April 2002.

- EuroPython/EuroZope hosted a large sprint in conjunction with
  the EuroPython conference.

- ZeOmega hosted an extended development session in Bangalore.
  We worked out a number of ideas for the (still early) through
  the web configuration and development environment.  We moved
  file-system synchronization forward. And we ported several
  facilities from Zope 2.

- Infrae (Kit Blake, Martijn Faasen and others) hosted a truly
  amazing and productive event, the Infrae Sprintathon,
  http://www.infrae.com/sprintathon, in December 2002. I think
  that this qualifies as the first Zope 3 Hackers Workshop. I hope
  there will be more.

- Code Works hosted a sprint, led by Steve Alexander, in Vilnius,
  immediately after the sprintathon.

- Solutions Linux hosted a UI sprint, led by Paul Everitt and 
  Sidnei da Silva.
  
- The German Zope User's Group hosted a sprint in conjunction with the
  DZUG meeting in Berlin in March 2003.  

- Godefroid Chapelle hosted a sprint at Louvain-la-Neuve, Belgium in
  April 2003. 

- Matt Hamilton and Bristol University hosted a sprint in Bristol
  in April 2003.

- Zope Corporation hosted a sprint in F12b in early June 2003.

- Zope Corporation hosted a sprint in F12b in late June 2003.

- OzZope in combination with several sponsors held a sprint at the Trinity
  College at the Melbourne University.


Contributors
------------

- Jim Fulton (a.k.a "The Pope of Zope")

  Jim is the chief-architect of Zope 3. Any attempt to list his contributions
  in a list like this would be an understatement of his work.

- Steve Alexander

  Providing much technical leadership and documentation in the TUV
  security certification effort.

  Provided major improvements to the implementation of context
  wrappers, context descriptors, and worked out the decorator ideas.

  Implemented many enhancements for error reporting, including
  implementing views on exceptions.

  Much work on the event services, object hub and searching
  infrastructure.

  Much work on maintaining the traversal APIs.

  Helped a lot on interfacegeddon, refactoring the way that interfaces
  are declared.

  Created (with Marius) a framework, within the registration framework
  for dealing with the common case of objects registered solely by
  name.

  Created (with Martijn Faassen) the schemagen system for generating
  content implementation code from a schema definition.

  Implemented permission field/widgets.

  Implemented much of the framework for getting object sizes.

  Enhances the standard macros to support multiple pages.

  Helped develop the schema, widgets and forms frameworks.

  Made various improvements and fixes to the session service.

  Refactored the ZServer hit logging code.

  Many bug fixes. Much help trying to keep the code clean.
  

- Stephan Richter

  Leading the Zope 3 Cookbook documentation effort.

  Implemented the on-line help system.

  Created the early formulator-inspired Zope 3 frameworks that
  eventually became the schema system. Did much of the early schema
  implementation.  Stephan MADE ME pay attention to this. :)

  Created much of the i18n implementation, including the translation
  service and the ICU-based localization libraries.

  Internationalized and localized Zope 3 to German with Philipp von
  Weitershausen.

  Implemented a mail service.

  Implemented XML-RPC.

  Created (with Simon Michael) a Zope 3 version of zwiki.

  Did a lot of early implementation work for supporting FTP and
  WebDAV.

  Ported (with folks from Codeworks) DTML to Zope 3.

  Much work on the RDB-Connection and SQL-method frameworks and implementation.

  Worked with Shane on early server implementations.

  Implemented the basic content types, such as files, images, and so
  on.
 
  Many bug fixes and cleanups.

- Marius Gedminas

  Working (with others at Codeworks) on a new mail service.

  Created the functional testing framework.

  Implemented (with others at CodeWorks) virtual hosting.

  Contributed to the indexing framework.

  Implemented (with others from Codeworks) the Cache framework based
  on ideas from the Zope 2 caching framework.

  Created (with Steve) a framework, within the registration framework
  for dealing with the common case of objects registered solely by
  name.

  Helped Steve on much of the context-wrapper and decorator work.

  Specified and prototyped Python's time time in the datetime module.

  Added a progress counter to the test runner.

  Added code to support <include package="foo.bar.*" /> in zcml.  This
  will include every subpackage of foo.bar which contains a
  'configure.zcml' file.

  Made contributions to the traversal APIs.

  Created z3checkins: a Zope 3 product that tracks
  zope3-checkins@zope.org and formats a summary of checkin messages as
  a Mozilla sidebar or an RSS feed.

  Much work on the RDB-Connection and SQL-method frameworks and implementation.

  Numerous bug fixes and cleanups.

- Albertas Agejevas

  Working (with others at Codeworks) on a new mail service.

  Implemented (with others at CodeWorks) virtual hosting.

  Implemented (with others from Codeworks) the Cache framework based
  on ideas from the Zope 2 caching framework.

  Much work on the RDB-Connection and SQL-method frameworks and implementation.

  Added named-adapter support to the local adapter service.

  Made contributions to the traversal APIs.

  Numerous bug fixes and cleanups.

- Viktorija Zaksiene

  Working (with others at Codeworks) on a new mail service.

  Much work on the RDB-Connection and SQL-method frameworks and implementation.

  Implemented (with others from Codeworks) the Cache framework based
  on ideas from the Zope 2 caching framework.

  Numerous bug fixes and cleanups.

- Jeremy Hylton

  Created the initial setup.py with Barry.

  Leading the ZODB development effort. 

  Started implementation of local interface service.

  Implemented persistent modules.

  Helped create the job board example.

  Amazing number of bug fixes and cleanups throughout the code in
  seemingly random places.

- Guido van Rossum
   
  Major work and progress on file-system synchronization and bundles.

  Refactored and cleaned up the registration framework and related UI.

  Ported the TextIndex (with Christian Zagrodnick) from Zope 2.

  Implemented security proxies (with Fred).

  Added initial bootstrapping implementation to install standard
  services in the root folder.

  Integrated the Python logging module.

  Helped build the utility service.

  Helped with the grand renaming!

  Helped create the job board example.
  
  Made a number of UI improvements.

  Many bug fixes and cleanups.

- Fred Drake

  Implemented vocabulary fields and widgets.

  Implemented context wrappers and base proxy objects.

  Implemented ZConfig.

  Implemented (with Barry) i18n in ZPT.

  Implemented security proxies (with Guido).

  Helped build the utility service.

  Helped with the grand renaming!

  Helped create the job board example.
  
  Various bug fixes and cleanups.

- R. David Murray

  Documented how to write ZCML directives.

  Created a system for generating documentation for ZCML directives
  from meta-configuration directives.

  Helped with name geddon!

  Helped with form-generation code and schema.

  Made enhancements to the simple authentication service.

  Many fixes and cleanups.

- Martijn Faassen

  Provided the idea of using interfaces to represent schemas. 
  
  Contributed implementation and many ideas for schemas, widgets and
  form generation.

  Much work on Zope 3 XML support.

  Created tool to detect unused imports and used it to clean up Zope 3
  code. 

  Created (with Steve Alexander) the schemagen system for generating
  content implementation code from a schema definition.

  Many bug fixes and cleanups.

- Philipp von Weitershausen

  Much work on i18n

  Implemented (with Jim Fulton) and introduced immutable i18n messages

  Reworked undo support and the Undo UI

  Implemented a static tree API as used in the APIDoc tool

  Fixed lots of HTML bugs in the page templates.

  Much work on Zope 3 XML support.

  Much work during and after interfacegeddon, zcmlgeddon, packagegeddon

  Translated (with Stephan Richter) Zope3 to German

  Created (with Christian Theune) the initial process controller UI.

  Kept many Zope add-on packages up-to-date with geddons

  Many bug fixes and cleanups.

- Sidnei da Silva

  Implementing WebDAV support.

  Implemented copy and move.

  Implemented the ZopeTop skin.

  Helped with the great renaming!

  Many bug fixes and cleanups.

- Barry Warsaw

  Much work on ZODB.

  Created the BerkeleyDB storage.

  Created memory storages needed by the functional testing framework.

  Much work on I18n.

  Helped on the Job Board example.

  Created a system for managing future Python modules or changes in
  the source tree.

  Helped on the mail service.

  Helped create the setup script.

  Helped with the great renaming!

  Many bug fixes and cleanups.

- Tim Peters

  Created the Python datetime type used by Zope 3. A lot of testing
  of this type was done in Zope 3.

  Much work on ZODB and, especially, BTrees.

  A number of bug fixes and cleanups.

- Ulrich Eck

  Created, with help from many others, the workflow service for Zope 3!

  Worked on the NewsSite demonstration product.

  A number of bug fixes and cleanups.

- Godefroid Chapelle 

  Provides leadership and has done much of the implementation of the
  Zope 3 UI.

  Helps us keep Zope 3 compiling on cygwin. :)

  Helped internationalize code.

  Many bug fixes and cleanups.

  Worked on the initial french translation (2003 - 2005)

- Shane Hathaway

  Implemented the first server logic for Zope 3, zope.server.

  Created the earliest Component Architecture prototypes.

  Help build the initial code for Zope 3.

  Helped build the ZopeTop skin.

  A number of bug fixes and cleanups.

- Tres Seaver

  Built much of the earliest Zope 3 infrastructure.

  Created the NewsSite demonstration product.

  Added the password field type.

  Added the debug skin.

  Added the ability to use schema adapters in schema-driven edit views.

  Fixed the navigation box so text stays in the box.

  Many bug fixes and cleanups.

- Gary Poster  

  Did much of the early work implementing the event and object hub services.

  Many bug fixes and cleanups.

  Added a basic interface field.

  Prototyped running Zope 3 in Zope 2.

  Helped create the object introspector.

  Did a lot of early work on the container framework.

- Christian Theune

  Helped out on the workflow implementation.

  Helped out on the NewsSite demo.

  Added support for tracking object creators as Dublin-core meta data.

  Added a type-conversion framework for use with database adapters.

  Added security documentation.

  Created *many* initial database adapters.

  Created (with Philipp von Weitershausen) the initial process controller UI.

  Created the XXX report for finding XXX comments.

  Worked on the query/indexing framework.

- Alan Runyan

  Made RDB search result accessible in ZPT.

  A number of bug fixes and cleanups.

  One of the creators of the Rotterdam skin, the default skin for Zope 3.

- Andreas Jung

  Created field indexes.

- Kapil Thangavelu

  Wrote the scripts that automated most of the grand renaming.

  Helped with the grand renaming.

  Whipped the initial documentation in shape for the first milestone
  release. 

  Wrote debugging and security documentation.

  Created the earliest prototypes of local services.

  A number of bug fixes and cleanups, especially for the RDB connection code.

- Florent Guillaume

  Implemented the initial principal-role management view.

  Contributed to the translation service and implemented a translation
  service for Zope 2.

  A number of bug fixes and cleanups.

- R. Sean Bowman

  Created standard versions of service names to avoid repeating the
  same string literals throughout code.

  A number of bug fixes and cleanups.

- Axel Bringenberg

  Worked on the demonstration News Site product.

- Christian Heimes

  A number of bug fixes and cleanups.

- Paul Everitt

  Created skins documentation.

  One of the creators of the Rotterdam skin, the default skin for Zope 3.

- Itamar Shtull-Trauring

  Implemented the session service.

  Implemented the principal annotation service.

  Worked out the design of the pluggable authentication service.

- Naveen P and Rakesh Naidu 

  Ported Zope 2 error logger to Zope 3 as the error logging service.

  Created first prototype of the registration manager.

- Suresh Babu Eddala and Sushant Kumar Rath

  Created early prototypes of registration objects and dependency
  framework. 

- Deb Hazarika and S. Raju 

  Filled out the initial file-system synchronization prototype.

- Paul Winkler

  Helped on I18n.

  One of the creators of the pluggable authentication service.

- Chris McDonough

  One of the creators of the pluggable authentication service.

- Ken Manheimer

  One of the creators of the pluggable authentication service.

- Nathan R. Yergler

  Worked on I18n.

- Michael Howitz

  Helped implement workflow in Zope 3. 

- Roger Ineichen

  Made improvements to and helped create documentation for the on-line
  help system.

  Bug fixes on widget and views.

  Added the pagelet framework

- Benjamin Saller

  Helped implement the searching/indexing framework.

- Joachim Werner

  Helped create the Rotterdam skin.

- Matt Hamilton

  Added machinery in TALES to support path expressions of the form
  'a/b:c'.  

  Created some of the earliest prototype code for indexing in Zope 3.

- Volker Bachschneider

  Helped on the NewsSite demo product.

- Casey Duncan

  Helped with the earliest security policy implementation.

  A number of bug fixes and cleanups.

- Anthony Baxter

  Helped with the earliest security policy implementation.

  Implementation of the Catalog.

  A number of bug fixes and cleanups.

- Gregoire Weber

  Helped implement workflow in Zope 3. 

  Worked in the NewsSite demo CMS.

- Holger Krekel

  Write documentation for schemas.

  Refactored schemas to improve standard field names.

- K.Narasimha Murthy 

  Helped with the initial implementation of the adapter service.

  Ported Zope 2 mailhost to Zope 2.

- Alexander Limi

  One of the creators of the Rotterdam skin, the default skin on Zope 3.

- Jan-Wijbrand Kolman

  Helped create the Rotterdam skin.

- Phillip Eby

  Contributed some machinery for supporting class initialization
  though meta-class trickery.

  Several bug fixes and cleanups.

- Christian Zagrodnick

  Helped on the searching/indexing framework.

  Helped with the XXX report.

- Vincenzo Di Somma

  One of the designers of the workflow support.

  Created the friendlyfolder product.

- Yvo Schubbe

  Helped with the news site demonstration.

- Bernhard Buehlmann

  Helped create the Rotterdam skin

- Heimo Laukkanen

  Helped write schema documentation and took lots of pictures.

- Magnus Heino

  Some bug fixes.

- Guido Wesdorp

  Helped create the Rotterdam skin.

- Martijn Pieters

  Fixed unittest setup.

- Richard Jones

  Work on Schemas and Form generation: new "Object" fields, and wizards.

- Paul Roe

  Work on Schemas and Form generation: new "Object" fields, and wizards.

- Stuart Bishop

  Work on Schemas and Form generation: new "Object" fields, and wizards.

- Kiki Pruvot

  Work on Schemas and Form generation: new "Object" fields, and wizards.

- Kevin Littlejohn

  Implementation of the Catalog.

- Andy Hird

  Implementation of the Catalog.

- Garrett Smith

  Some refactoring of the widget/schema machinery.

  Miscellaneous bug fixes.

- Dmitry Vasiliev

  Did the Russian translation all by himself

  Much work on i18n.

  Fixed many bugs in PageTemplates.

  Miscellaneous bug fixes.

- Eckart Hertzler

  Miscellaneous bug fixes.

  Work on the Cookbook

- Julien Anguenot

  Work on the WFMC implementation.

  Many bug fixes.

- Egon Frerich

  Kept the German translation up-to-date

  Work on i18n.

- Sebastien Douche

  Worked on the french translation (2005, 2006)

- Christophe Combelles

  Worked on the french translation (2007, 2008)

Other Contributions
-------------------

  o Steve Alexander has provided tremendous leadership, along with his
    many other contributions, in design, code, to say nothing of moral
    support. 

  o Stephan Richter helped launch Zope 3 with abundant energy and
    enthusiasm, as well as many software and documentation contributions. 

  o Shane Hathaway created some of the initial prototypes of Zope 3
    and was an important brainstorming partner before we went "public"
    with Zope 3. He has remained a stalwart but quiet contributor,
    despite his heavy workload at Zope Corporation.

  o Python Labs: Guido van Rossum, Fred Drake, Jeremy Hylton, Tim
    Peters, and Barry Warsaw have been crucial contributors to Zope 3
    since it was just a bunch of stray ideas floating around.

  o Gary Poster has made significant contributions in a variety of
    areas, including the object hub and event service.

  o David Murray has been a constant source of well-thought feedback,
    suggestions, and ideas. 

  o Sidnei da Silva created the first attractive skin for Zope 3. 

  o Kapil Thangavelu, David Murray, Sidnei da Silva, and PythonLabs
    made the grand renaming possible. Kapil wrote the scripts that did
    most of the work and the team made Zope work again.

  o The folks at Codeworks, Albertas Agejevas, Marius Gedminas, and
    Viktorija Zaksiene and contributed major parts of Zope, especially
    the relational database support and caching infrastructure. Much
    thanks to M Carling for making their time available.

  o Much thanks to Alexander Limi, Alan Runyan, Godefroid Chapelle,
    Joachim Werner, Paul Everitt, and others for the "Rotterdam Skin",
    the default skin in Zope 3.  Special thanks to Godefroid
    for the finishing work just before the alpha.


Much thanks!
Jim Fulton
