About Orchard
Mailing List
SourceForge Logo

Orchard is a data manipulation framework centered around "nodes". Nodes are quite similar to "objects" in most Object-Oriented languages but emphasize passive data models over methods and behaviors, or object models. Nodes in Orchard languages act just like native container classes -- hashes in Perl, objects in Python.

On the surface, Orchard nodes provide a simple, consistent interface over a wide variety of data models, or "node sets", including, as examples, XML, RSS, SVG, MP3, MPEG, CDDB, etc., regardless of their on-disk storage format.

Beneath the surface, however, Orchard nodes provide a rich set of features for manipulating nodes and node sets, including automatic de/serialization (typically XML), querying, transformation, validation, encapsulation, and cross-linking among disparate node sets.

There are implementations of Orchard in Python, Perl, and C. The C implementation includes bindings for Perl and partially for C++. The C implementation goes a little beyond "C++ in C" (as used in Gnome and at the W3C) and adds a small preprocessor, virtual methods, garbage collection, and transparent bridging to other languages.


Orchard is pre-1.0 alpha. The source includes extensive unit tests and is very stable for the features currently implemented. The node interface is stable, but the APIs of deeper features may change. In this early stage, Orchard is focused on broadening the number of node sets that are available (currently XML and RSS). The richer functionality described above are goals, and only de/serialization and encapsulation are currently implemented.

Using Orchard for SAX and DOM-style XML processing is quite stable.


Kendall Clark -- came up with the name Orchard
Parand T. Darugar
Rael Dornfest -- early adopter
Edd Dumbill
Kip Hampton -- early adopter
Ken MacLeod -- project lead
Bijan Parsia
Shawn Pearce
Matt Sergeant -- author of original XPath module and early adopter
Aaron Swartz -- early adopter, RSS 0.9 and 0.9x support