-
Notifications
You must be signed in to change notification settings - Fork 0
GSOC 2015 proposal: NetworkX GUI
| Goran Cetušić | Short bio |
|---|---|
| My academic and programming career started with my enrollment as a Bachelor student at the Faculty of Electrical Engineering and Computing in Zagreb. During that time I've been involved in various activities like lecturing student courses, organizing events and projects, leading several of them as the section leader of the Electrical Engineering student club. I got my first job as a network administrator at a small firm and where I started to learn some real programming in Python. Before finishing my Bachelor studies, I got an internship position as an Openlab summer student at CERN where I worked on process accounting software for their batch cluster. After a year working as a Linux administrator and contributing to several open source projects, I'm now a dedicated Python and Django developer, juggling my responsibilities as a Masters student in Telecommunications and Informatics, currently working on my thesis on Linux network simulators and various other interests like machine learning and bioinformatics, often "wasting" my time on Coursera. | |
| Education |
Faculty of Electrical Engineering and Computing, University of Zagreb Telecommunication and Informatics, Master studies |
| Contacts |
|
| Curiculum vitae | https://github.com/gcetusic/gcetusic.github.io/blob/master/docs/gcetusic_en.pdf |
A Linux enthusiast every since in 2006 someone installed Ubuntu on my laptop at a yearly Linux InstallFest. Since then I've taken over the organization of the same installfest for a couple of years and even organized and lectured two Linux courses at my college. After writing (mostly) bad C code in Gedit, I've switched to Python and Komodo Edit and it's been kind to me ever since. Except for that time when Komodo Edit deleted 300 lines of code...I'm using Sublime now, with all the benefits of its lint plugins.
After spending some time writing more bad code and making rookie mistakes, suddenly I realized I actually have something interesting to show to other developers. Python has served me well in this but I still have a lot to learn. For example, after doing web development for a couple of years, while trying to work around badly written Django code, I've implemented my own Python metaclass, probably the most abstract thing I've done in a programming language. Here are examples of some of the projects I've worked on (for a more complete list, please view my GitHub page, some are under NDA)
- https://github.com/stormpath/stormpath-sdk-python/ - a flexible user managagement API
- https://github.com/gcetusic/psacct-collector - process accounting software developed during CERN internship
- https://github.com/gcetusic/IMUNES - a powerful network simulator
The point of the project is to create an interactive, user-friendly graphical interface for NetworkX written in Python's Tkinter module to make it cross platform. A similar project is https://github.com/jsexauer/networkx_viewer/ but the problem is that it's vastly incomplete and users using this should be familiar with networkX to draw graphs: "At this time, neither the attributes not the graph's nodes/edges themselves are editable through the GUI. The GUI is read-only. You should programatically create/update the graph...". Because the frontend would be separate from the backend right from the start, networkx should actually be implemented as a completely pluggable module - the goal in this project is to use NetworkX and the GUI as a server/client architecture, with every action executed on the drawn graph also executed as a NetworkX command.
Major milestones
- Basic stub Tkinter GUI with Python classes - 1 week
- Graph generation through the GUI - 2 weeks
- Graph, node and edge editing interface - 2 weeks
- Algorithm execution on graphs - 2 weeks
- Algorithm demonstrations on graphs - 2 weeks
- Modularization of networkx - 2 weeks
- Comprehensive documentation and test coverage - 1 week
The IMUNES network simulator could be used as a good reference point for the graphical interface. Basically, it is a sandbox where the user can create a graph with nodes and edges and then run tiny virtual machines with docker/jails/lxc for nodes and connect them together (http://imunes.tel.fer.hr/) It's a great network tool but it's in Tcl/Tk and they still use SVN and the project itself is somewhat obscure but it contains the necessary logic for building graphs. The previously mentioned networkx_viewer could also provide useful examples for the networkx code logic.

