In the DBPL project we tackled the problem of supporting data-intensiv
e applications in a single framework, clean and simple in its conceptu
al foundation and free of technical mismatches. Conceptually, we based
the DBPL language on Modula-2 with three built-in extensions which, a
t that time, were considered necessary (and sufficient) for data-inten
sive applications: a parametric bulk type constructor for ''keyed sets
'' or relations; a module concept which supports sharing across progra
ms and implies persistence; a procedure concept with transactional sem
antics, i.e., serializability and recovery. In implementing the DBPL s
ystem we adopted a rather strict approach by aiming for: full orthogon
ality in our relationally extended type space; type-complete persisten
ce, i.e. longevity of data from Booleans to relations; functional abst
raction for relational expressions including recursion. As a consequen
ce, the DBPL project covers in a quite natural way approaches otherwis
e considered disjoint as, for example, complex objects, multibases and
data deduction. In this paper, besides reporting on project achieveme
nts and spin-offs, we also present our insight in good-quality project
design and its dependency on conceptual simplicity and implementation
al strictness. This also includes early recognition of the essential p
roject ''terminator'' which, in our project, was Modula-2's monomorphi
c type system and its intrinsic restrictions on systems extensibility.
The DBPL project results in a mature product for modular database app
lication programming and a follow-up project based on polymorphic type
s and other higher-order concepts.