After reading an ACM article about plugin architectures and some pre-release articles about Apple iWork I started thinking about writing a generic page layout program that could handle different data types via plugins (or, loadable object modules). A few weeks later I had a preliminary design for the API that the plugins must present to the host program, and the API presented to the plugins by the host program. After a few more weeks I had a skeleton of source files and function prototypes for the host program itself.
The Pele host program will be a relatively simple affair: its only responsabilities will be to load the data-type plugins, manage placement of data items on the page, and present an interface that allows the user to select data classes and manipulate pages. Everything else the program might do — drawing vector graphics, editing pixel images, word processing, spreadsheets, etc. — is handled by plugins via the published host and plugin APIs.
Pele is still in the pre-alpha stages, but you can download what there is of it here. Much of the support work for Pele is being done in stdgui.