<?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>
 </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 architechural structures that
  satisfy human needs and contribute postively 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 Christoper 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>
