A schema-based configuration system for OpenWrt
- Mentors
- federicocapoano@gmail.com, Andreas Bräu
- Organization
- Freifunk
I'd like to create an alternative to OpenWrt's UCI configuration system, improving on the following points:
- Structured (JSON-based) configuration inspired by gconf/dconf (instead of flat package/section/option config of UCI)
- Configuration schema that defines which keys with which value types are valid
- Saner upgrade behaviour (separate default values and user configurations, allow to upgrade defaults wichout overwriting user config; possibility to clean up obsolete configuration on upgrades based on the schema)
- Handling of different configuration sources (package defaults, firmware defaults, user settings, ...)
- Efficient configuration storage (binary database instead of text files; one single file instead of one per package; store only differences from default values)
While the technical realization of this plan is not set in stone yet, I think this project will consist of the following parts (and their corresponding documentation):
- Configuration daemon
- C library (using ubus to communicate with the daemon)
- CLI configuration tool
- Lua binding for the C library
- (UCI config generator to allow using the new configuration system for normal UCI-based OpenWrt packages)