<?xml version="1.0"?>

<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->

<document>

 <properties>
  <title>The Turbine Experiment</title>
  <author email="jvanzyl@apache.org">Jason van Zyl</author>
 </properties>

<body>

<section name="The Turbine Experiment">

<p>

  The following principles have been excerpted from
  <em>The Oregon Experiment</em>. <em>The Oregon Experiment</em>
  is the third volume in a series of books written by
  Christopher Alexander describing methodologies and patterns
  for designing healthy architectural structures that
  satisfy human needs and contribute positively overall
  to the surrounding ecology.

</p>

<p>

  Many people in OO design have drawn from the works of
  Christopher Alexander and I thought it would be a fun
  (and hopefully beneficial) experiment to systematically
  apply Christopher Alexander's ideas to the development
  of Turbine.

</p>

<p>

  <em>1. The principle of organic order.</em>
  <br/>
  Planning and construction will be guided by a
  process which allows the whole to emerge
  gradually from local acts.

</p>

<p>

  <em>2. The principle of participation.</em>
  <br/>
  All decisions about what to build, and how to
  build it, will be in the hands of the users.

</p>

<p>

  <em>3. The principle of piecemeal growth.</em>
  <br/>
  The construction undertaken in each budgetary
  period will be weighed overwhelmingly toward
  small projects.

</p>

<p>

  <em>4. The principle of patterns.</em>
  <br/>
  All design and construction will be guided by
  a collection of communally adopted planning
  principles called patterns.

</p>

<p>

  <em>5. The principle of diagnosis.</em>
  <br/>
  The well being of the whole will be protected
  by an annual diagnosis which explains, in detail,
  which spaces are alive and which ones dead, at
  any given moment in the history of the community.

</p>

<p>

  <em>6. The principle of coordination.</em>
  <br/>
  Finally, the slow emergence of organic order in
  the whole will be assured by a funding process
  which regulates the stream of individual projects
  put forward by users.

</p>

<p>
  <a href="mailto:dl@cs.oswego.edu">Doug Lea</a> has written an
  excellent article on the writings of Christopher Alexander and how
  they relate to the practice of OO software development:
  <a href="http://gee.cs.oswego.edu/dl/ca/ca/ca.html">
  Christopher Alexander: An Introduction for Object-Oriented Designers
  </a>

</p>

</section>

<section name="References">

<p>

  1. Alexander, C., M. Silverstein, S. Angel, S. Ishikawa, and D. Abrams, <em>The
  Oregon Experiment</em>, Oxford University Press, 1975. ISBN: 0195018249.

</p>

<p>
  Alexander, C., <em>Notes on the Synthesis of Form</em>, Harvard University Press,
  1964. ISBN: 0674627512.
</p>

</section>


</body>
</document>
