GSoC/2020/StatusReports/DilsonGuimaraes: Difference between revisions

From KDE Community Wiki
< GSoC‎ | 2020‎ | StatusReports
Line 49: Line 49:
=== Experience ===
=== Experience ===


I am really enjoying working on this project. Most of my experience writing software is related to research, competitive programming or course projects. This project is great opportunity for me work in something different and get more experience working in a code base I did not create, with tools I did not choose. I learned a lot about Qt, which is used a lot in Rocs.
I really enjoyed working on this project. Most of my experience writing software is related to research, competitive programming or course projects. This project was a great opportunity for me to work in something different and get more experience working in a code base I did not create, with tools I did not choose. I learned a lot about Qt, which is used a lot in Rocs.


The open source world is something new for me. I already knew and used a lot of open source software, but I never contributed before deciding to apply to GSoC. The efforts of open source communities such as KDE are able to produce great results and it feels nice to become part of something so amazing.
The open source world is something new for me. I already knew and used a lot of open source software, but I never contributed before deciding to apply to GSoC. The efforts of open source communities such as KDE are able to produce great results and it feels nice to become part of something so amazing.


I had to learn about graph layout algorithms to implement this project. I always have fun when I learn new algorithms. This time was not different. The force based layout is completely heuristic and the only way to get an intuition about the results that it can achieve is by experimentation. Although I love when there is a mathematical proof that the result of an algorithm is good, there are a lot of important situations in which the best thing that can be done is to write a heuristic solution and test it the best you can. This is why I value the experience I had with the the force based layout algorithm.
I had to learn about graph layout algorithms to implement this project. I always have fun when I learn new algorithms. This time was not different. Two of the three layout algorithms I implemented are completely heuristic. The only way to get an intuition about the results that they can achieve is by experimentation. Although I love when there is a mathematical proof that the result of an algorithm is good, there are many important situations in which the best thing that can be done is to write a heuristic solution and test it a lot. This is why I value the experience I had working on them.

Revision as of 17:47, 24 August 2020

Project Overview

Project name: Better Graph Layout for the Graph Theory IDE

The goal of this project is to enable Rocs (https://kde.org/applications/education/rocs) to layout graphs automatically. The project consists of three parts. The first one deals with a layout algorithm that can be applied to any graph. The second part and the third part deal with layout algorithms for trees and directed acyclic graphs, respectively.

The original proposal can be found here.

Work Report

Added features

I created a tool to apply layout algorithms to graphs in Rocs. This tool allows the user to select an algorithm and apply it to a graph. Algorithm specific parameters can also be selected. My GSoC proposal included three kinds of layout algorithms, one for each part of the coding phase. The current state of their implementations is shown next.

Implemented layout algorithms

The layout algorithms in this section are already implemented, tested and documented.

  • Force based layout: A graph layout algorithm based on the simulation of forces acting on nodes.
  • Radial tree layout: A graph layout algorithm specifically designed for trees.

Layout algorithms to be implemented in the future

The layout algorithms in this section will be implemented during the remaining time of the project.

  • A layout algorithm for Directed Acyclic Graphs.

Merge requests

All my commits can the found in the following merge request.

First version of the graph-layout-plugin (Work in progress)

Blog

My blog can be found here.. The links to posts related to this project are given below:

Experience

I really enjoyed working on this project. Most of my experience writing software is related to research, competitive programming or course projects. This project was a great opportunity for me to work in something different and get more experience working in a code base I did not create, with tools I did not choose. I learned a lot about Qt, which is used a lot in Rocs.

The open source world is something new for me. I already knew and used a lot of open source software, but I never contributed before deciding to apply to GSoC. The efforts of open source communities such as KDE are able to produce great results and it feels nice to become part of something so amazing.

I had to learn about graph layout algorithms to implement this project. I always have fun when I learn new algorithms. This time was not different. Two of the three layout algorithms I implemented are completely heuristic. The only way to get an intuition about the results that they can achieve is by experimentation. Although I love when there is a mathematical proof that the result of an algorithm is good, there are many important situations in which the best thing that can be done is to write a heuristic solution and test it a lot. This is why I value the experience I had working on them.