top of page

graPharo

GraPharo is a graph layout library in Pharo (Smalltalk inspired programming language), created under the Graph library with layout algorithms project.

If you want to see the code or documentation of this project, please visit graPharo repository.

OVERVIEW

Google Summer of Code (GSoC) is a global program, intending to bring more students into open-source software development. Students work for 3 months on an open-source project for their chosen organization. The organisation for which I made my proposal was Pharo Consortium

PROBLEM

When dealing with a large amount of data, it is necessary to organize it, to make it easier for reading and understanding. Therefore it is most useful to represent, a data structure, such as a graph, visually. This way the data gets separated and shown in a way that is easy to discern.


For Pharo developers, the issue that arises here is that all existing layout (visualizations of different positioning of vertices in a graph) implementations are made as a part of some other big structure and they can not be reused or used independently. This is a big problem because it makes the developers coding the same segment more than once. Also, the ability to adapt these functions (layouts) to a new implementation of graph structure or to an individual problem is almost impossible.

MY ROLE

After writing a proposal, being accepted to GSoC and community bonding month, my job was to isolate and resolve all the tasks needed for the project and report my progress. The project consisted of:

  • architecture and design faze

  • coding faze

  • optimization faze (It was necessary to improve several existing layouts)

  • documentation faze

  • creation of project presentation video.

CHALENGES

The main issues:


  • How to divide layouts from the graph structure?

  • How to divide layouts from the visualization engine?

  • Deciding on a structure and a design for the new library.

  • Optimizing existing algorithms.

  • Fixing algorithms which were not working properly.

graPharo: Services
ezgif.com-video-to-gif.gif

SOLUTION

Create a new independent and reusable layout library


Beside layouts itself, this solution includes a new simple graph implementation. The existing layout implementations have been modified in such a way that they are not dependent on the visualization engine or the graph structure. This freedom gives the library ability to be reused with different engines (Telescope, Roassal) and with any graph. To achieve this the methods necessary for the connections are placed in traits, which can be applied to any graph structure. 

To solve the optimization problems that existed in circle typed layouts, I used special mathematical equations to calculate the orientation and position of each vertex.

graPharo: Services

PROJECTS OUTCOMES

As expected, I manage to create an independent reusable layout library. In the current form, the library contains a graph structure implementation and these layouts:
Linear (Vertical and Horizontal), Grid, Cell, Circle (Regular, Equidistant and Weighted), Tree (with 4 different orientations), Cluster, Force Based.

There is room for future work. Many other layout algorithms can be added, some can be given different implementations (one layout can have more than one algorithms)  and optimization of several can be improved.

graPharo: Services

Certificate

After successfully finishing the project I was awarded a completion certificate.

Cert.PNG
graPharo: Welcome

©2020 by Nina Medić. Proudly created with Wix.com

bottom of page