Yesterday I received a 20$ donation for my old program Xebece, a nice little tool for visualizing large sets of information. That is really nice. It made me hack on it again immediately (you see, I’m completely reward-driven šŸ˜‰ ).

I was really shocked when I looked at all this code. It’s only 3 or 4 years ago when I wrote this, but man, did I write crappy code back than. And I remember I did it with the best effort to actually produce good code. Duh. On the other hand, it’s really amazing what I learned in all this time. Most of this can be credited to my work on GNU Classpath (which I actually started because I wanted Xebece to run on a free Java platform).

There’s still many ideas floating in my head for Xebece, when I find some free time *cough* I gotta implement:

  • An abstraction for the tree view, to allow alternative renderers. More specifically, I’d like to re-introduce the hypertree library. The first versions of Xebece (actually, Ontographics back then) where written against this library, but removed in favor of Prefuse because the hyperbolic tree rendering is patented in the US. However, I think it is the superior renderer, it is GPL just like Xebece and I’m a co-maintainer of this project too, so I have more control over the code (yeah yeah). OTOH, Prefuse is some BSD license (the version in Xebece is actually the dreaded 4 clause license with advertising clause which actually makes it non-free, but it seems like they changed it to a free 3-clause BSD lately, together with reworking all of the API to be completely incompatible with my code, hrmpf).
  • Throw out the weird text/image blocks on the right pane, and replace it with a simple HTML editor. Same practical purpose, but much more straightforward to use (I hope).
  • Allow interconnecting links from one tree node to another (which effectively makes the tree a graph), possibly augmented by special URLs in the HTML pane.
  • Speaking of URLs, using a HTML editor would also allow external web URLs in the information panel on the right.
  • Easy to use Applet export which would create an applet bundle out of the current project for simple uploading on a webserver.

Phew, quite a lot of ideas. And most of them were floating around for 2 years already and I never got around to implement them. Let’s see how far I get now.


About Roman Kennke
JVM Hacker, Principal Software Engineer at Red Hat's OpenJDK team, Shenandoah GC project lead, Java Champion

5 Responses to Xebece

  1. Taras says:

    Interesting project. Does it handle dot files? A friend of mine is having trouble visualizing graphs of C++ programs (most tools don’t scale to it).
    See some examples at

  2. rainer says:

    Hey Roman, congratulations for the donation! I know this code-review problem very well but as you said, it’s an indicator for the increase of learning, and as we know informatics-people always have to be lifetime-students ;-).

    Good to know about your reward-addiction, so whenever i need a special feature in your masterpiece Xebece and don’t want to (or even be able to) code it myself, i know what to do now :-P.

    Here’s a suggestion (no sponsored request for now ;-)): Some kind of “tag-cloud mode”, where the font-size of each node varies depending on the amount of child nodes would be a nice feature i think.

  3. zeruch says:

    Well, I have to say I love this little app. Part of me wishes it would do something like export to an .swf or some format easily embedded into a webpage or presentation. It offers an immense amount of potential, especially if it could import and render from a .csv or from an sql result (I am likely far ahead of myself).

  4. kevin says:

    “Easy to use Applet export which would create an applet bundle out of the current project for simple uploading on a webserver.”

    … is there currently any (hard?) way to export to an applet ?

  5. roman says:

    Yes, you’d have to extract a couple of classes (the applet class plus some others), the datafile, bundle it up on a webserver and create the right combination of applet tags and parameters to get it running. That’s how I did it on the website. If you are adventurous, then have a look at org.kennke.xebece.XebeceApplet .

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: