Español  

Difference between revisions of "User:Pablog/GSoC2012/Guifi.net Studio"

From Guifi.net - English Wiki

m (Official Coding Period)
(No difference)

Revision as of 00:10, 22 May 2012

Identity

Name: Pablo Castellano
Email: pablo+at+anche.no
Project title: CNML Explorer

Contact/working info

Timezone: UTC+2
Typical working hours: I prefer evenings and late nights
IRC or IM networks/handle(s): pablog@FreeNode, my email address also as Jabber account

Project summary

In order to understand better this project, you need to know first what is CNML. You can have a look to this article.

My proposal is developing a desktop application to manage these files. I will be useful for people that administer zones, workers that install Guifi.net nodes... etc.

CNML files offer a lot of possibilities that are not being exploited actually. It can also be used for statistics, data visualization, which will help people in their studies, or thesis about libre networks.

This application will load a CNML file and show its contents in friendly windows. Users will be able to filter nodes or zones by name, coordinates or hardware used.

It could also be a first step to develop a client that allowed users to modify their nodes by means of an API without having to use their web browsers.

It will also use some library (not decided yet) to show nodes in the world map like OpenStreetMap (OSM). In particular, OSM would allow final users to visualize nodes in the map without requiring any Internet connection as the maps are free and can be cached in disk.

Another interesting function would be implementing 'unsolclic' in CNML Explorer, so that users could also generate their configuration files for their nodes offline and administrators could debug better network configurations.

I will develop it using Python and GTK as I already control and have experience in both. It would be cool to write it in Vala, but it would take me more time learning Vala as I don't actually know too much about it. I prefer to focus on the functionalities and Python is a language that permits you to develop quickly.

The project license will be GPLv3+.

The idea of this project came to me during Summer 2011 and I started it. Unfortunately I couldn't spend much time on it, so what I did is only a proof of concept. Working on it full time during the Summer 2012 would be amazing :)

You can have a look to the code in my GitHub repository[1]. As a picture is worth a thousand words, here there are two screenshots:

Cnml explorer2.png Cnml explorer1.png

About you

I'm currently studying Computers Engineering in the Autonomous University of Barcelona (UAB). I'm a geek and free software supporter who has been dealing with Linux since I was 13 (now I'm 23). I enjoy working in projects with social benefits. My favorite programming languages are Python and C.

Participating in GSoC is one of the things I wanted to do during my academic life. It's very exciting and Guifi.net is a big community which I like and needs more developers. Last year I tried to participate in the Mediawiki project but it was a very hasty decision and finally I didn't. You can read my 2011 application here.

Deliverables

Required deliverables

  • Desktop application based in GTK to read CNML files with the following features:
    • Filtering options
    • View nodes in map
    • Unsolclic
      • Add support for new devices (hybrid nodes, nanostation loco M, mesh?...)
    • Export subzone to another file
    • Export to other formats like .gml or .kml (Google Earth).

These are for me the most important features. Here there's a list of more features I will implement with no particular order (I can prioritize some or implement new ones according to the community interests):

  • Cache OSM data (I don't know if any library already does it)
  • Different ways to visualize nodes in the map. The user can change the color, thickness and type of the line that links two nodes; show supernodes only; show supernodes with >=N links...
  • The main window can have two modes of visualization: 1) Map (default) 2) Node list
  • Check CNML integrity twice
  • Improve integration with drupal-guifi
  • Check wrong MAC address, zones, ip ranges...
  • Integrate with map profile
  • Generate HTML report of any zone/node
  • Add new radios/devices and save to a new CNML
  • If Drupal API existed, user could log in with its guifi.net username and upload changes made locally to CNML

If time permits

  • Any of the features enumerated before
  • Ncurses and command line interface.
  • Guifi.net API
  • I will help to move forward the CNML specification
  • I will send patches to Guifi.net if necessary.

Project schedule

Community Bonding Period

  • April 23 - April 29
 - Present the project to the community so that they know about it and they can follow it and report suggestions/feedback.
 - Read documentation about libraries I will use.
 - Familiarize with CNML and other similar formats.
 - Contact people that was already involved in the CNML specification and talk with them (I have already started it).
  • April 30 - May 6
 - Read documentation about optic fiber, categories, standards and so on
 - Read about nodedb [1] and the work done during GSoC2011 to find parts that may be reusable.
 - Ask community for hybrid nodes configuration examples and familiarize with it.
  • May 7 - May 13
 - Read Guifi.net API source code to know what is already implemented 
 - Design Graphic User Interface
 - Think about the whole application design.
  • May 14 - May 20
 - Start coding interface (since in June I'll be busy with exams, I prefer to start before the official coding period).
 - Design first prototype of nodes map with some options to have different visualizations.

Official Coding Period

  • May 21 - May 27
 - Implement OpenStreetMaps and Google Maps layers
 - Start implementing unsolclic for new devices (like hybrid nodes)
  • May 28 - June 3
 - Implement unsolclic for the same devices that are supported in the website
 - Fix also existing bugs
  • June 4 - June 10
  • June 11 - June 17
  • June 18 - June 24
 - I have my final exams between these dates, so I won't have so much free time to work on GSoC :-(
   Depending on my time I will be more or less testing and thinking on the next tasks.
 - Ask the community to test this new unsolclic during this period.
  • June 25 - July 1
 - Continue unsolclic for new devices with the received feedback from the community
 - At this point, unsolclic support should be completed
  • July 2 - July 8
 - Update CNML specification to support optic fiber links and IPv6 addresses.
 - Add support to create nodes and optic fiber links locally and ability to save changes to a new CNML file.
  • July 9 - July 15
 - Filtering nodes (in list and map modes)
 - Export to other formats
 - Export subzones or selected nodes (filtered previosly)
  • July 16 - July 22
 - Add support to deal with Guifi.net web API (create nodes, edit links, change description...)
  • July 23 - July 29
 - Check semantic integrity of CNML file (MAC addresses, zones, IP ranges...)
 - Generate HTML report
 - Command line interface
  • July 30 - August 5
  • August 6 - August 13
 - Clean code and fix last bugs
 - Documentation (user manual)
 - Internationalization

Suggested pencils down date

  • August 14 - August 20
 - Documentation and minor changes

Participation

  • I will reach my mentor mostly by email to discuss all important things about the development. In emergency cases I would also phone him :D.
  • I will meet my mentor every 2 weeks approximately.
  • People will be able to consult my code as I will set up a Git repository where I will commit.
  • I will write a blog post about my progresses once a week.
  • I will also idle in #guifi IRC channel to get in touch with the community.
  • I will be listening for comments and suggestions.

Past open source experience

I'm a GNOME developer and member of the GNOME Foundation, which is the biggest project I have contributed. I have experience working with other open source projects. You can see my contributions to open source projects at my ohloh account.

I try to fix every annoying bug I find in software daily.

I like attending to free software events. I have attended to DebConf9 and Fosdem 2010 among others.

Any other info

References

  1. pablog-scripts, GitHub repository
Personal tools