Storm is a library for user-oriented configuration. Using Storm, developers can easily create type-safe systems for working with text-based configurations, especially for non-technical users.
- Discord: Development discussion & support
- Navigable node hierarchy with no implicit behavior
- Type-safe serialization system including object mapping
- Custom configuration format and online editor support
- Extensions for JSON, HOCON, YAML, and XML
- Well documented, specified, and SemVer compatible APIs
- Complete test coverage over the API and implementation
The majority of design decisions in Storm are based on experiences working with HOCON as well as non-technical users. The following are some of the primary issues that caused confusion for users (and developers), many of which can be avoided.
- Only
\nis allowed for newlines. Files encoded with\r(MacOS) often result in cryptic error messages which is difficult to debug unless known. - The top-level value must be an object (
{...}), which means HOCON is not strictly compatible with JSON though it intends to be a JSON superset. - The order of object properties is not maintained, thus re-serialization often scrambles the config making it difficult to keep a logical ordering.
- Values are coerced between types, such as:
"true","on", and"yes"all becoming the booleantrue3.5and"3"becoming the integer3and the doubles3.5and3.0- Objects containing any numeric key coercing to a list, excluding non-numeric keys entirely.
Development is currently focused on finalizing the serialization system, particularly with edge cases that just keep getting in the way :/.
If you're interested in contributing, feel free to join the project Discord.