Some of you may be aware that Getting Things GNOME! 0.3 was released. What you may not know is that GTG is now using a python library called liblarch and that liblarch 2.1.0 was released today.
Liblarch is a python library specifically designed to handle complex trees (including directed acyclic graphs) and to display them. A liblarch-gtk component allows you to display different views of your tree in a GTK TreeView widget without any effort.
During the development of GTG, we faced major problems to handle our tree of tasks and our tree of tags. The features we wanted proved to be very complex to implement and very fragile : solving a bug would create two others. And the performance work was a nightmare.
We decided to abstract the whole concept of tree and to make it a standalone, well tested and optimized library. We are very proud of it and we are looking for more applications that would benefit from using liblarch.
Liblarch is designed to be as simple as possible from the programmer point of view. The nodes of your tree can be any python object. You only need to inherit from liblarch TreeNode. Once you have a node, you will connect it to a tree. It can be a node without parent, with a single parent or even with multiple parents.
Where liblarch becomes powerful is to display a given tree : you can have multiple views over the same tree, add a complex filter or even a combination of multiple filters. And all of that can be quite easily displayed in a GTK TreeView. Easy and GTK TreeView in the same sentence? Sounds impossible? Not with liblarch!

As an example, you can test our implemenation of a dummy contact list. By reading the code, you will see how straightfoward it is to have searching capabilities in the contact list, contacts in multiple groups, hiding offline contacts or updating automatically when a new contact comes online.
Liblarch comes with an extensive test suite. The next challenge is to port it to Python3/GTK3 and to write a good built-in documentation. Any help is welcome
(EDIT: we are also looking for packagers)

The Liblarch, a python library to handle trees and acyclic graphs by Lionel Dricot, unless otherwise expressly stated, is licensed under a Creative Commons Attribution 2.0 Belgium License.

This is awesome ! I’d love to use it, and if the timing is write, would be available to port to Python3.
Does it actually depend on GTK? a DAG library would be very good for a rigging tool in Blender, but then GTK becomes a bit of an uneeded thing.
Bassam > The GTK part is clearly separated and not necessary. In fact, you could have a QT or anything else instead of GTK. The previous version was even separated in two different packages, something we can do for future release if there’s a need.
Hi, I am quite new (I was an OPW intern this summer, we met at GUADEC) but I like graphs, I know a bit of Python and GTK3, and I would love to help. Where can I start?
mmcasetti > Yes, I remember you. I think that I see multiple point of entry :
1. Start a documentation infrastructure in the code itself (not on the wiki) using standard documentation stuff in python
2. Start a branch to port to Python3/GTK3
3. Play with it and profile it to improve performance.
4. Write/improve example codes.
I think that those are ways to start contributing
When you talk about porting to Python 3: do you want a straight port that will require Python 3, or will it need to run on Python 2 and 3?
Thomas> We plan to go straight to Python 3