Off and on at work over the last year or so I have been working on an open-source project called ExoWeb, as well as supporting projects called ExoGraph and ExoRule. ExoWeb and ExoGraph are hosted on Codeplex, though they are somewhat stale at this point.
Before I go any farther I’ll give you (and future self) my take on the purpose of these projects.
…is essentially an enabler.
From the codeplex site:
ExoGraph is a graph library that leverages type information to optimize graph operations and notifications. The library exposes type-level events for object initialization, property retrieval, property path changes, and custom domain events within a graph context.
This doesn’t sound very useful in and of itself, right? Well, it’s not supposed to be. It’s an enabler, remember? That’s where ExoWeb and ExoRule come in…
…is a rules framework that leverages ExoGraph. That is all for now.
From the codeplex site, ExoWeb…
That may not be crystal-clear, but fortunately you can browse the source, which is what I really want to write about anyway.
I have a few goals in hosting the project on Github.
- Isolate classes and related functions in order to make it easier to manage, illuminate code structure, improve architecture and design, and limit dependencies.
- Allow for (hopefully) isolated testing of individual classes and functions.
- Take advantage of github’s popularity in open source software collaboration, and…well, I just like Github.
At the time of this writing the project produces the destination scripts that more or less match the scripts in the original project (not the ones on codeplex, they’re old). Also, a few of the source files have corresponding specs that pass, using nodejs to run them.
Finally, in writing the build script, I got the chance to learn a little rake (ruby make), which I highly recommend.
One of my other goals is to create working ExoGraph/ExoWeb implementations for django and rails. The beginnings of the django implementation is currently hosted on Github as well.