jump to navigation

LaKademy, Hierarchical Edge Bundles, and KDevelop May 6, 2012

Posted by Sandro Andrade in planetkde-sandroandrade.
trackback

Hi there,

Yes, LaKademy is over. They were days of hard work, meeting old and new friends, and having much fun while realizing how far those crazy guy’s imagination can go. I’d say it was a great summit and, when compared to first (and only one so far) Akademy-BR carried out in 2010, it’s a clear evidence we are getting there in the effort of building a strong and mature KDE community in Latin America. Henrique and Camila managed to book a lovely hostel in Porto Alegre and, even though I usually don’t get used to traditional food in Rio Grande do Sul, we were all nicely accommodated through these days. Sorry for haven’t posted before, I’m rather taking an “all-in-one” approach to report LaKademy outcomes.

LaKademy brought together 19 participants, including developers, translators, designers, and promo people. Trying to keep this post simple and concise, I’ll briefly enumerate major LaKademy outcomes related to artwork and localization, promo, and developing. In particular, my own developing outcomes are presented later.

Artwork and Localization Outcomes

It seems that Tomaz has unintentionally taken over the task of bringing new designers for KDE here in Brazil. The difficulty arises from the proprietary background designers usually possess and then excuses of reduced productivity are a major obstacle to migrate to open source tools. At LaKademy, Tomaz, Manu, and Fabiana discussed current artwork needs of KDE and had a conference call with Nuno, trying to clarify tool differences and line up goals. Actually, I still notice that designers are maybe the most difficult people to be aware of real underpinnings of free software contribution and we haven’t found the means to provide that to them yet. Rocs’ “weird lemon add node icon” :) is still there but hopefully some artwork fresh blood will help us to get rid of it.

Aracele, Diogo, Camila, and Henrique have been working hard :) in userbase and techbase localization. Techbase pt_BR localization coverage run from 6% to 30% by the end of LaKademy.

Promo Outcomes

The promo meeting at LaKademy took an entire morning with discussion topics like: lessons learned from previous promo efforts, KDE Brazil/LatAm web presence, upcoming FLOSS conferences, and promo material manufacturing. Expected short-term accomplishments include:

  • KDE Brazil|Argentina|Peru ?|LatAm web site (re)design. We aren’t sure about the need for a KDE LatAm web site (that discussion is going to continue on kde-latam mailing list) but we all agree on a re-design of KDE Brazil website. I’ve just noticed that ar.kde.org redirects to a drupal-based website.
  • KDE LatAm Webcasts. Chicão has already pushed some tutoriais about making video tutorials about KDE.
  • “KDE Masters of Latin-America” (TM by Guilhermo Amaral) :) Podcasts
  • Git repository for standard KDE kick-ass presentations (btw, how to create translatable LibreOffice documents ?)
  • “Myths and Facts about KDE Technology” marketing campaign. The intended audience is those people who still have a KDE Plasma 4.0-4.2 conceiving and haven’t given it another try since then. Our participation in FLISOL, while at LaKademy, have confirmed that we need such campaign.
  • Upcoming FLOSS conferences in Latin-America. A bunch of FLOSS conferences (Congresso da SBC/ENECOMPFISLLatinowareGNUGraphFSLDCHack’nRioLinuxWeek(Peru), CaFeCon(Argentina), Software Freedom DayCampus Party PeruCampus Party Pernambuco) are going to happen and we need to articulate the KDE participation in those.
    • In particular, we considered that a “KDE Day” (in a format similar to FLISOL) taking place simultaneously in various Latin-America cities might be a fruitful marketing strategy, even though with minimal technical outcomes. Initial tentative date is 27th October, just one week after Latinoware (so that we could do some announcement there).
  • Quite minimal, enduser-oriented KDE portal. Something like descubra.kde.org (discover.kde.org) would provide, with a minimal simplified mapsite, the general reasons to use KDE and how to get it running in an easy way. That would support a KDE promotion effort in those fields aren’t related to technology at all. We see a huge potential of KDE adoption in Latin America and maybe we are driven our efforts to a most restricted audience.

Developing Outcomes

A number of developers were in LaKademy making improvements in projects like Rocs, KMyMoney, Plasma Network Management, Cantor, Digikam, KDevelop, Amarok, Plasma Active, and Telepathy. We had roughly 18 bugs fixed in Rocs by Tomaz and Wagner, Vitor has been working on a kipi plugin, Ronny worked in ports of KDE Games to Qt Quick, Arthur and Lamarque managed to have a working pilot for a new QML-based Plasma Network Management (part of his GSoC project), Filipe has started a new Python backend for Cantor, Alvaro has fixed bugs in KMyMoney, Lucas is finding his way towards a GSoC project in Amarok, Luis has made some improvements in Spinet architecture and GUI, and Chicao (who unfortunately couldn’t attend LaKademy) is already working on his GSoC project in Krita. As for myself, I dedicate my LaKademy attendance also to have hierarchical edge bundles working in KDevelop. Keep reading …

Compound Graphs and Hierarchical Edge Bundles

Information/Software Visualization techniques has been providing increasingly powerful paradigms for understanding huge amount of data and that certainly would help to support more effectively software design and evolution activities. In particular, a number of techniques for visualizing tree structures have been proposed in last years:

An even more interesting scenario is the use of compound graphs to represent adjacency relationships (between tree’s leaves) along with hierarchical relationships already provided by trees. One should consider, for example, professors hierarchically grouped by departments and also having adjacency relationships when co-authoring a paper or co-mentoring a student. In a software development project, that would easily be represented by hierarchically grouped artifact containments (like namespaces, classes, functions, etc) and some dependency relationship (for example, uses) between classes or functions. The use of arrows to represent adjacency relationship directions would produce more visual clutter so edges are drawn from source (green) to target (red).

A common issue when visualizing such compound structures is the visual clutter you rapidly come up even for small sized graphs. A pretty interesting paper by Danny Holten, “Hierarchical Edge Bundles: Visualization of Adjacency Relations in Hierarchical Data”, proposes a strategy for compound graph visualization which reduces visual clutter while still highligths implicit adjacencies in higher level containments:

So at the end of LaKademy I wanted to have at least the radial layout with edge bundles running in KDevelop.

libgraphicstreeview

Hierarchical edge bundles in mirrored radial tree view (rightmost view above) were implemented in a separated library so that other applications could use it for visualizing tree data other than KDevelop projects. Classes were designed to easily support the future inclusion of new tree layouts while reusing the edge bundle generation part. The RadialGraphicsTreeView class (first implementation of IGraphicsCompoundTreeView) works with any tree-based Qt model (representing the hierarchical model) and accepts a second table-based Qt model representing the adjacency relations. Any tree-based and table-based Qt models representing hierarchical and adjacency relations, respectively, should be correctly visualized by libgraphicstreeview. A number of parameters (node radius, inter level spacing, inter span spacing, bundling strength, mirroring radius increment, etc) can be used to tailor the visualization for specific purposes.

libgraphicstreeview provides a demo application which visualizes a file system Qt model populated with a dummy adjacency model and allows the user to play with visualization parameters:

Check out libgraphicstreeview demo app video

 Whilst already functional, some improvements and new features must still be done in libgraphicsview:

  • More realistic implementation of interpolated B-splines. Current implementation is based on Qt’s quad and cubic splines but knot vectors should be used to support smoother and more bundled adjacency edges.
  • Background generation of graph layout and edge bundles. QtConcurrent and mapreduce would be a potential support technology for that.
  • Filtering of adjacency edges by picking them with a linear selection.
  • General profiling and optimization.

KDevelop, Control Flow Graphs, and Hierarchical Edge Bundles

Some years ago I developed the control flow graph plugin for KDevelop. It’s still in playground and, although functional, it suffers from the following drawbacks (part of the reasons for still being in playground):

  • Actually it doesn’t provide control flow graphs in its original definition. It rather provides a consolidated control flow graph at the least abstraction level supported by DU-chain.
  • It doesn’t support efficient visual escalability. We couldn’t represent large control flow graphs in a restricted region of screen.
  • It needs a major refactoring to separate some concerns and make evolution easier.
  • All its cognitive information about a KDevelop project can also be carried out by a mirrored radial with hierarchical edge bundles while still solving the previously cited issues. Actually I still need further elaborate that to decide about the future of control flow graphs in KDevelop.

Hierarchical edge bundles in KDevelop already represents the hierarchical project structure but it’s still using a dummy model for adjacency relations. The hierarchical model is quite similar to the ClassModel class used in classbrowser plugin, but (at least by now) there is no need to retrieve information about attributes, and base/derived classes. I’m not an expert in KDevelop architecture but it seems plugins aren’t able to communicate other than by means of KDevIDEExtension. Maybe Aleix or Milian could have any hint for properly sharing ClassModel. :)

Navigation from radial tree visualization to code still needs to be done, as well as a picking mechanism for filtering adjacency edges of interest. Checkout the following video showing libgraphicstreeview as a KDevelop plugin.

Several future improvements could also be done, such as the assignment of metrics (for example, the CK metrics suite) to visual attributes like color, opacity, size, speed of animation, etc. Evolution information also provides some interesting information about software architecture and software development processes.

Check out KDevelop’s bundled tree view plugin video

I’m watching myself for having a couple hours per week to improve libgraphicstreeview and KDevelop’s bundled tree view. Of course, any help is quite appreciated since I’m still bogged down with PhD duties. You can git clone source code for libgraphicstreeview and KDevelop plugin at:

git@git.kde.org:scratch/sandroandrade/libgraphicstreeview.git

git@git.kde.org:scratch/sandroandrade/kdev-bundled-tree-view.git

See you !

Comments»

1. isemenov - May 6, 2012

May I ask you how long it took to design and implement the library and kdevelop integration? To me, it sounds impossible to do this in a few days – at best a few days can result in a scratch application design.

Sandro Andrade - May 6, 2012

It isn’t impossible at all. Actually it isn’t to much code since Qt and KDevelop architecture make things really easier. Five days to design and implement the library, with pauses for beers and sleeping of course :) One additional afternoon for KDevelop integration. But it’s far for being ready to go.

isemenov - May 6, 2012

Well.. then you are a brilliant programmer. Designing and implementing a library in a few days is the programmer’s dream. Or, the library is pretty simple – need to have a look at it.

2. Anonymous - May 6, 2012

Hi there,

I just wanted to add something as a designer who has tried to work with FLOSS projects a number of times and yet had incredible difficulty. My main problem was NOT the software. Every time it’s been that the project maintainers don’t understand even the most basics of design, and yet their opinion carries greater weight (in terms of actually getting work committed) than the designer. Time after time I’ve had the most frustrating experiences of being told to do things that create HORRIBLE work that disregards the most fundamental basics of design for no reason, just because a dev was married to the idea and didn’t know better. Don’t get me wrong. I’m all for collaboration, but when the people with the most influence consistently have the least skill in the area (ie devs in floss design) you have the makings of a disaster. Being forced to create crap work by people who don’t know better just isn’t fun, and so I ended up quitting after many, repeated bad experiences across a bunch of different projects.

In short, I think the whole “Designers are resistant to new tools” line is largely false. Designers are ALWAYS looking for new creative tools to experiment with.

The larger problem is that in FLOSS designers almost always play a subservient role to devs, who in turn are actually less skilled in design, which just gets more frustrating than fun.

The real issue here in my opinion is that having studied C++ seems to carry more weight in projects design process, than having experience in, well, design. I wouldn’t mention it other than that I had this happen on six out of six projects I offered help with (after they put out a call for it).

Sandro Andrade - May 6, 2012

Hi there, thanks for sharing your thoughts about that. It’s really important for us to know the most effective way to work together with designers in FLOSS projects. To find out matching interests and stances is indeed a great challenge. Maybe you could do a post about that, not intended to spread discord :) but rather trying to clarify the reasons and expected outcomes which would driven a designer to FLOSS contribution. Thanks.

3. Filipe Saraiva - May 6, 2012

LaKademy was really great!
Sandro, send this text to dot kde. It is a true report about LaKademy.

Thanks e abraços,

4. Apuntes de LaKademy 2012 (I) : KDE Blog - May 6, 2012

[…] empezar realizaré un breve resumen de la entrada que ha realizado Sandro Andrade en LiveBlue, que por su extensión puede desanimar a algún lector pero que vale la pena echar un […]

5. Aleix Pol (@AleixPol) - May 6, 2012

good stuff! :)

looking forward to being able to finally merge your stuff!


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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: