twotree is a compatibility layer to make it easier to write plugins for both
libpurple3. The name comes from the phrase "a couple two tree" which is meant to mean "a couple two or three". It's one of those weirdly regional phrases. In our case, it works great, because you get support for a couple libpurple releases, two, and three.
purplecompat.h into your plugin and you're good to go. Now you can use the
purple3 API and it'll work (for the most part) on
purple2 as well.
There is a
#define PURPLE_TWOTREE_VERSION that can be used to track whether or not a new version has been released. It follows DNS serial syntax. That is
NN is the
nth update for that given day.