Skip to content

Project Ideas

raphink edited this page Jan 4, 2013 · 1 revision

There are a wide variety of interesting projects to enhance Augeas itself or build tools on top of it. Depending on the specific project, required skills range from learning the ins and outs of specific config files to python scripting or the ability to solve hard research problems. Some examples of possible projects:

Table of Contents

Coverage of config files

Enhance which config files Augeas can process, and improve how they are represented in the tree (easy)

GUI frontend

Write a GUI tool to view/modify existing configuration files (easy)

Generate schemas

Generate schema descriptions of Augeas trees (medium)

Adapt existing config tools

Enhance existing config tools (like the system-config-*) tools to use Augeas as a backend (medium)

Write and enhance integration of Augeas with config management systems like puppet, bcfg2 or cfengine (medium)

Language extensions

Enhance Augeas' ML-like language with various programming language constructs (medium)

DBus service

Write a DBus service based on Augeas and PolicyKit to allow config file modifications by normal user processes, restricting them to changes of very specific values (medium)

Regexp matcher

Write a matcher for Augeas' finite automata library. It would be very interesting to base that on the notion of derivatives as explained in this paper There's a good chance that this would produce an extremely fast matcher (comparable to the best known matchers like PCRE) (medium/hard)

This would also produce a matcher that supports operations that none of the matchers I know of supports, like intersection and difference of regular expressions, like matching [a-z]* - 'oneword'

Tree matching

Change the tree -> file transform to match on entire trees instead of just one level in the tree. Requires interest in learning about tree automata (hard)

Tree transformations

Add constructs to Augeas that allow for bidirectional tree transformations; that would transform the current representation of a file (which is somewhat close to its syntax) to one that reflects the semantics of the file (hard)