(Updated after IRC conversation 10.04)
Name: Krzysztof Tyszecki
Background: I am student from Poland, finishing 3rd year of my computer science studies this summer. I have good knowledge of Perl, especially when it comes to it's regular expressions engine. I'm using Linux since about six years, and tried many different distributions, including Gentoo, openSUSE, Ubuntu, Arch, and Debian (currently, I'm using the last two of them). That gave me some experience in different packaging systems. I must admit, that the problem of having to merge config files by hand, or having them merged automatically, sometimes with unexpected results is one of the most annoying issues with Linux package systems in general.
Project title: Improve Package config upgrade.
Synopsis: When a package, that needs config files is upgraded, config file often needs to be upgraded too.The process is quite hard to automate - user can modify settings and will want these settings to be preserved. As it was mentioned in project idea, 3-way merge is a good solution, but not "bulletproof". Since this method is simply basing on text matching, it is possible that resulting config file will be invalid, for example when user settings conflict with new default ones.
Benefits to Debian: Greatly improve user experience in the field of upgrading packages.
Deliverables: Config::Model models for config files of popular packages, improved config upgrade process.
Project details: By using Config::Model it is possible to replace text-matching with a more sophisticated approach. Model describing config file structure and methods for reading and writing can make upgrade process much less complicated, especially to non-experienced users. Models for popular packages will be created, and will be integrated with upgrade process. Config::Model also allows easy editing of config files via GUI.
Update: Arthur Liu suggested today, that instead of focusing only on Config::Model, this project should result in creation of tool that would allow syntax-aware 3-way merge. While such tool can't be as good as models by definition (it cannot detect all logically incorrect configs), it's better than simple text 3-way merge, because it operates on a higher abstraction level (resulting configs will be always syntactically correct). Such tool would detect (of would be given) config file type, and use appropriate "backend" to do the 3-way merge. Of course, it could make use of Config::Model (i.e. support it's models as one of the backends). Also, while models would need continuous maintenance, this tool will not. I think, that Perl or Python will be a best choice for a programming language (because of their text-processing abilities). DD: another possibility is to enhance Config::Model to lower the need of "continuous maintenance" for upgrades. In other words, what is missing in Config::Model to perform the task suggested by ?ArthurLiu ?
Project schedule: During community bonding, I will select packages that need such models most. Since time needed to create a model may vary (some config files are more complicated), I will try to spend at most 2 weeks working with one particular model (I'm quite sure that this work will take less time, but I wanted to make a safe assumption). At 21.07 there should be models available for most of the selected packages with patches against package scripts.
Update: Since the goal changed a bit, it is easier to make timeline (deadlines): Above statement about selection of packages holds true, but I think the project should start with the packages that rely on configs most (most notably servers: Apache, Pure-FTPd, MySQL, cups; as I mentioned in my comment at socghop).
31.05 - Fully working proof-of-concept implementation, using models. This should be quite easy, since there are models for a few applications, and merging configs using them is explained on the wiki.
7.06 - Another easy file format is ini (used by PHP and MySQL among others). PHP is a bit trickier, since it's config file allows bitwise operators. At 7.04 support for basic ini files merge should be ready.
DD: 7.04 ??
21.06 - Full, or almost full support for complex INIs (that may contain lists and expressions, like configs of apps based on QSettings or PHP) and support for XML-based configs (inkscape, xfce, ...). XML should be easier, because it's standarized.
5.07 - Support for the mix of the above (Apache and cups)
Now, the easiest part is done. Integrating support of this tool shouldn't be very hard. For example, UCF makes copies of old configs files.
18.07 - Backends for less common, but important config file types (e.g ssh), basing on research conducted during community bonding, improving the existing code.
24.07 - Added ability to define simple tests - such tests could help determine whether config file is logically valid.
30.07 - Detailed instructions for package maintainters willing to incorporate this project into packages.
Travel: Probably, I won't be able to travel until 2.08.
Other summer plans: Nothing serious, maybe a few 2-3 day trips.
Exams and other commitments: One or two rather not hard exams in June.
If you are not a Debian Developer: I will maintain code that I submitted and document changes that I did, so creating models will be easier for other people.