The world (and the world of computing) is filled with tree-structured data. Code, XML and HTML, file systems, human language, GUI layout, and human organizations (staff, divisions, etc) are just some examples. XML especially is making tree structures common, and the XML world is (re)developing various ways to manipulate tree structure, in XML syntax.
There is a lot of duplication of effort. This project takes the general work on trees developed in different domains on different representations, and unifies it.
As inspiration, consider what's been done for regular expressions, or for relational databases. There is a theory of regular expressions; different tools, languages and libraries can be understood as instances of the theory. You can learn when and how to apply regular expressions to a problem, independently of any particular implementation of regular expressions. You know they are equivalent to finite state machines, and can use this as another way to think about when and how to use them. Similarly, there is a theory of relational databases, with relational algebra, relational calculus and SQL all expressing the same underlying concept.
As a very concrete example, consider this little tree library to support the Style Checker project. The concepts it implements are independent of style checking, scheme and sexps. It captures concepts like "all subtrees", "maximal subtrees wrt a property" and "replacing subtrees". Does, e.g., XSLT from the XML world have these same concepts? What does it call them? Are the semantics different in some ways? What's the syntax? Can they be built from other natural concepts? Are there natural concepts to be built from them?
Ideas for how to contribute: