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:
- We target Ubuntu 12.04 with postgresql 9.1 and python 2.7 as primary deployment platform.
As of version 0.13 ``clld`` does also work with python 3.4, the version of python3 that
comes packaged with Ubuntu 14.04.
- 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.