Возникла мысль, нуждающаяся в доработке, для чего и пишу. Если я что-то пропустил и подобное уже есть - ткните, буду очень благодарен.
Суть идеи - сделать некий обобщенный движок работы с конфигами. как я это себе представляю (по нарастающей).
1) Валидировать конфиг по заданной системе правил (далее схеме). Причем не так примитивно, как в XML-схемах, а более гибко. Минимум - допустимость/недопустимость одних элементов конфига их и значений в зависимости от других. Интерфейс здесь вида сунул конфиг (уже распарсенный, в виде какой-то «деревянной» структуры) - получил ответ - валидно либо где именно не валидно.
Зачем это надо? Чтобы не писать очередной велосипед каждый раз, конечно.
1а) Как расширение - возможность включения схему в нестандартных случаях какой-то логики на полноценном ЯП вроде lua, JS или чего-то ещё.
2) Стандартизированное описание конфига. В смысле - из схемы можно получить для каждого элемента конфига что в нём может быть и хелп по нему. То есть возможен стандартный гуевый редактор конфига, с хелпом и проверкой осмысленности.
По идее это резко снизит число не осиливших толковую конфигурацию пользователей а программистам позволит не писать отдельный гуёвый интерфейс настроек на каждый чих. И, черт возьми, положит документацию туда, где она и должна быть - рядом с документируемыми данными.
3) Фильтры чтения/записи конфигов в различных форматах, с сохранением комментариев. Ну здесь понятно - раз нужно стандратное представление скармливать валидатору то его надо где-то брать, и каждый раз писать с нуля - глупо. С самим парсером - аналогично. Ну и для гуя и для следующего пункта нужна возможность записи конфига.
4) Возможность шарить свои конфиги и их части на каком-то сайте, с рейтингами и тому подобным, и с легкостью их оттуда тянуть и встраивать себе. Причем шарить из самого софта, который конфиг использует. Понятно - сразу надо заложить, что сайт такой может быть не один (лишь бы интерфейс стандартный поддерживали). по идее, сайты сами должны поддерживать некую аггрегацию, чтобы пространство оставалось таки единым. Для этого, кстати, нужна поддержка в схеме, чтобы можно было автоматизированно вычищать приватную часть конфига.
У каждого второго здесь есть хорошие находки в конфигах, которыми крайне неудобно делиться. В результате в половине случаев линуксовый десктоп неудобен не потому что плохой, а потому что таки не собрались его настроить.
В общем, нужны идеи и мнения по осмысленности затеи и возможных путях реализации. Предполагаемый язык - си, с минимумом зависимостей, плюс биндинги как минимум к плюсам, перлу и питону.