Towards a central repository of Design Patterns

An authoritative central repository of Design Patterns does not exist.  There is a book called The Pattern Almanac 2000 by Linda Rising however this is no more than an index of patterns - nothing of substance except a one line descrtipion.  And furthermore, it leaves out hundreds if not thousands of patterns - scattered across books, websites and people's code. 

Latest News (March 2009): There is a new project starting up - more information can be found by contacting Paris Avgeriou and Uwe Van Heesch

Prerequisites for a repository

Any new effort needs to have broad support and a way of contributing without having to go through vetting.  This way people can contribute their own patterns and the project can utilise the community.  Better to have too many patterns than not enough.  Perhaps a "moderated" category could be added for higher quality entries.

  • A specific "template" for inserting patterns would be a must.
  • A UML diagram (png) - also a must.
  • Code sample (any language / psuedo code) - highly desirable.  
  • You could have a page of thumbnails of uml diagrams - very enticing way to browse the repository.
  • Drop down tags for type of pattern - architectural, design, coding idiom.
  • Tags for related patterns - not sure how the references would work, perhaps like a wiki, so each pattern should have a unique id (no spaces).  e.g. Observer or MVC or NullObject etc.

On the copyrighted design pattern material in books

Getting all the patterns from published design patterns books would be a boon - even if we could at least get the basic UML and idea of each pattern - and leave the copyrighted content alone.  Existing patterns books are a huge source of material if we could mine them.  It could perhaps be pitched to authors as a way of stimulating book sales since people who want to learn more could buy the book via the usual link to Amazon etc.

Other ideas

It might be good to see the existing class libraries of the programming languages (e.g. Java, .NET, Python, Delphi and PHP) mined for patterns - and there is a real opportunity there to form pattern languages of how these patterns fit together within the one language platform. 

The repository should include architectural patterns, design patterns and language and coding patterns (sometimes known as idioms) - forming a wonderful continuum of detail.  Of course the essential ideas in the deep implementation detail would probably be found at the high level and vice vera, such is the nature of reality. :-)

Links

In the absence of a central repository, here are some links to lists of design patterns and books.  I will try to maintain and grow this as much as I can.  Please add your own links as comments.

Amazon.com: The Pattern Almanac 2000: Linda Rising: Books

A list of GOF patterns including part-whole and view-handler

A Theoretically-based Process for Organizing Design Patterns

Hillside.net - Online Pattern Catalog

A pretty good list from Hillside