Dataphor.org

Dataphor Manifesto

Modified: 2009/04/08 00:37 by n8allan - Categorized as: Development
The following core principles animate and underly the entire platform. They provided not only the basis for its conception, but the litmus test for every design and architecture decision made along the way; today, they continue to guide the direction of the product.

Edit

Let Laziness Prevail

Good software developers are characterized not by the ability to write code, but by the ability to recognize and implement abstractions. Indeed, we argue that ambitious laziness, the desire to do more with less, is the fundamental driving force behind all forward movement in the software industry; it has certainly been that for Dataphor.

Edit

What Not How

As C. J. Date amply demonstrates in the book What Not How, the declarative approach to application development is fundamentally about raising the level of abstraction at which we describe and interact with applications. The Dataphor platform is an attempt to achieve this new level of abstraction.

Edit

Formalization Enables Automation

In order to automate something, it must be characterized in formal terms such that an algorithm can be developed to perform the task. Recognition and application of this principle forms the basis for the implementation of Dataphor.

Edit

Conceptual Integrity is the Most Important Factor in System Design

This principle is taken straight from the pages of The Mythical Man-Month and it is as true today as it was when it was first written over thirty years ago.

Edit

Logical Differences are BIG Differences

As C. J. Date and Hugh Darwen often point out, logical differences quickly translate to difficulties when dealing with languages and systems.

Edit

Orthogonality is Directly Proportional to Power

Different facets of the system should be as independent as possible, especially with respect to the language. Preserving this independence results in a system that is more intuitive, and more powerful.

Edit

As Simple As Possible, But no Simpler

http://www.entish.org/wordpress/?p=638 Occam's Razor tells us that simplicity is also directly related to power, but tenuously so.

Edit

Accidental Complexity Must Be Eliminated

In another reference to http://en.wikipedia.org/wiki/Fred_Brooks Fred Brooks, complexity often arises from the approach taken to solve a problem. While we agree that there is http://en.wikipedia.org/wiki/No_Silver_Bullet No Silver Bullet, we argue that the declarative approach is one of the best tools for eliminating accidental complexity.

Edit

Generation Must Be Transparent

This principle follows directly from the idea that formalization enables automation. If something can be generated, it has obviously been described in enough detail to be formalized, and should therefore be automated, rather than generated. The subtle distinction is one of levels, if at the end of the day, we can still talk about the solution to the problem in high-level terms, then we are using automation. If we must subsequently deal with the solution at a lower level of abstraction than we expressed it, then we are using generation. In other words, generation is fine, so long as it is always transparent to the developer.

Edit

The Long And Winding Road

These principles form the guidebook for architectural and development decisions made on the Dataphor project. We fully recognize that there are areas of the Dataphor platform that fail to live up to these ideals. At the same time, there are areas where these principles have resulted in a platform that provides unparalleled productivity and expressive power. We are constantly striving to improve all aspects of the Dataphor platform and use these principles as a guide to do that.

ScrewTurn Wiki version 2.0.36. Some of the icons created by FamFamFam.