The Providence Project
The "Eye of Providence" symbol, used among others by the Free-masons,
US Treasury (found on the $1 bill) and attributed to the fabled Illuminati.
The providence
project is a project that aims to handle all manners of
managing structured data. It started as a separate implementation of
Apache Thrift for Java, and has been much expanded since then. It still
uses the thrift
IDL definition as the base for modelling data, but
has expanded upon that to support features not part of thrift. There are
also a lot of different libraries in providence to solve various tasks
that works upon structured data.
Features of Providence
All of providence is structures around a set of data / information models, with
a set of core
features, including:
- Modeling most common structures used in data transfers. Note that some of the most "generic" features that required untyped parts of the structure are not supported.
- Interfacing with service API.
- Structural and information validation. Note that this is currently defined in code, not defined in the schema itself.
- Serialization to a number of different formats. It natively support the
thrift-binary
protocol, plainjson
. Each of these are handled via a number ofSerializer
implementation, which has full access to the model definition, and should thus be able to serialize literally anything.
Other parts of providence are:
- Using providence models in GraphQL and OpenAPI interfaces with
providence-graphql
andprovidence-jax-rs
. - Using providence models as based for application / service configuration with
providence-config
. - Using providence models as storage structures using
providence-storage
andprovidence-jdbi-v2
/providence-jdbi-v3
. The storage module currently has aprovidence-storage-hazelcast
implementation to facilitate storing providence models in hazelcast using it's native storage formats. - Tools to generate providence models based on your own business rules for testing.
- Utilities to use providence in logging.
- Command line tools to parse and convert providence models using known model definitions.
- Command line tools to generate code in other languages than java using the same java framework for handling the models.
Note that providence 2.x requires java >= 8.