Contributor
NeoRaider

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)