Design
~~~~~~
The main challenge for the ``clld`` framework is to balance abstraction and concreteness.
The following goals directed the design:
- There must be a core database model, which allows for as much shared functionality as
possible. In particular, publication of Linked Data and integration with services such
as `OLAC `_ must be implemented by the framework.
- Deployment of ``clld`` applications must be uniform and easy.
- User interfaces of applications for browsers must be fully customizable.
- It must be easy to re-implement legacy applications using the framework.
These constraints led to the following design decisions:
- Use `sqlalchemy `_ and it's implementation of
`joined table inheritance `_
to provide a core database model that can easily be extended.
- Use the `pyramid framework `_ for its
`extensible configuration mechanism `_
and support of the
`Zope component architecture (zca) `_.
- Use `zca `_ for pluggable functionality.
- Allow UI customization via i18n and overrideable templates.