Revision 36 as of 2012-03-15 18:10:17

Clear message
Italiano English
Edit History Actions

GSoCIdeas2012

Google summer of Code 2012

ninux-gsoc-2012-web.jpg

Ninux.org community Google Summer of Code 2012 (GSoC 2012) page.

About the Google Summer of Code

From the Google Summer of Code 2012 webpage:

Google Summer of Code is a global program that offers student developers stipends to write code for various open source software projects. We have worked with several open source, free software, and technology-related groups to identify and fund several projects over a three month period. Since its inception in 2005, the program has brought together nearly 2500 successful student participants and 2500 mentors from 98 countries worldwide, all for the love of code. Through Google Summer of Code, accepted student applicants are paired with a mentor or mentors from the participating projects, thus gaining exposure to real-world software development scenarios and the opportunity for employment in areas related to their academic pursuits. In turn, the participating projects are able to more easily identify and bring in new developers. Best of all, more source code is created and released for the use and benefit of all.

Participants

Mentors (draft)

  • Saverio Proto
  • Lorenzo Bracciale
  • Marco Giuntini
  • Federico Capoano
  • Gioacchino Mazzurco

Students (draft)

  • Vittorio Cuculo (student in 2011)
  • Claudio Pisa (student in 2011)
  • Angelo Giovinazzo (student in 2011)
  • Raffaele Petteruti
  • Mara Sorella

More students want to join, we'll accept more if we will be accepted as a mentoring organization.

GSoC Project Ideas 2012

Mapserver Improvements

The goal of this task is to push forward the development of Nodeshot in order to make it mature, stable and more flexible. The final goal is to promote this software so other wireless communities around the world can start using it and participate in the development. At the moment this is only partially possible because the software is not very flexible and has been developed to satisfy our needs only.

  • Integration with django's user management framework (django.contrib.auth.user) and permission system
  • Easy registration and login
  • Possibility for admins and users to login in the frontend and be able to perform different actions depending on their privileges (eg: some info might be configurable to be seen by a certain group of users only)
  • Improve the graphical user interface
  • Email app to ease the communication with node owners (possibility to send an email to all the nodes, possibility to send an email to only a group of nodes)
  • Possibility to use placeholders for distance calculations on the fly
  • New overviews with IP addresses
  • Better DB abstraction, eg: differentiation between different types of devices (antennas, servers, others)
  • Network usage graphs
  • Elevation chart and Fresnel Zone calculation
  • Better caching system
  • Javascript refactoring
  • History for all the changes in the database
  • Mobile version
  • Integration with Layar - we already have a php script, we will just need to port it to python/django => Possibly find an open alternative to layar

  • Better notifications, 2 examples:
    • Possibility for non-admins to receive notifications when new potential nodes are added
    • Possibility to be notified if new potential nodes are added in a specified distance range (eg: notify me if a new potential node is added in a range of 10km)
  • Documentation
  • Permit nodes configuration from nodeshot ( http://nnx.me/eigenfirmware + UCI + SSH? - this needs to be in a separate app)

  • Better SNMP monitoring (at the moment we support only Ubiquiti devices)
  • Visual traceroute & graphs

DNS Management App for wireless communities

We implemented our own DNS system in our community which is integrated with the map-server. At the moment the integration is more like a temporary hack and not a piece of good software. We would like to separate this functionality and make it an indipendent application that can be integrated easily into the map-server but also run in standalone mode. The Goal is to make a system which calculates the hostnames of the nodes automatically but also gives the possibility for community networkers to manage their own DNS records indipendently (each node owner should be able to change his/her hostnames or add new ones).

Features:

  • Backend web interface for administration
  • Frontend application in which each node owner can manage hostnames of his/her node
  • Standalone mode
  • Pluggable mode (integration with Nodeshot)
  • Integration with Opensource DNS software (PowerDNS, myDNS, ecc)

Distributed node monitoring and management application

We use different monitoring systems but we are not completely satisfied with any of them.

Problems we face:

  • Different monitoring systems are hard to mantain. When we change anything in our network we have to remember to change also the information in all the systems we use
  • One of the systems is proprietary, closed source and it works only with a very limited set of devices
  • We need to be able to diagnose problems quickly with a cross check on different protocols (SNMP, OLSR, BATMAN)
  • We need more flexibility
  • We need a decentralized system
  • We want it Open Source

Solution proposed:
Develop a new pluggable distributed app for the map-server which can be deployed in different parts of the network which automatize the synchronization of the operations and eases our pain in the management of our network.

Videoconferencing suitable for Mobile Phone and Mesh Networks (MPMN )

Many people want to use VOIP in our mesh network but they step into some problems:

  • Existent major videoconferencing solutions depend on the Internet ( like skype or gtalk )
  • Most of major existent videoconferencing solutions have not a good mobile phone integration ( like skype )
  • Most of major existent videoconferencing solutions don't have support for ipv6 ( our network is primarily ipv6 )
  • Internet bandwidth on our network is going towards exhaustion
  • They doen't want to learn to use another VOIP app

To solve these issues we decided to implement Videoconferencing suitable for Mobile Phone and Mesh Networks:

  • Create a good app, fully integrated in android/iphone/(other?) addressbook ( call someone trough MMPN must me simple as call him with phone number without learn to use other apps or have different gui).
  • Separate MMPN backend from addressbook integration ( like telepathy framework do on desktop ).
  • Make the backend extensible for newer protocols
  • Offer good privacy with encryption
  • Preferable completely serverless protocol such as retroshare

Type of Work: Coding Level 4 Semi-Professional

Collaborative Music Composition

Idea
This project aims to realize a web-based social application for music composition.
It will allow the creation of jam session (non real-time) in this way: users will upload tracks (e.g. piano track) and then they can merge them with other tracks (e.g. bass track) put in the system by other users. Users can play a bunch of selected tracks creating a composition (e.g. bass+piano+vocal).
Using the linux audio plugin and a proper backend engine, they can also apply effects on tracks.
Conversely, if a user doesn't like an instrument track of a song, she can create her version by substituting it with her own track.

Technology

  • It will use a web framework such as Django to manage users, file upload and dynamic content.

  • It will rely on Soundmanager a popular and portable javascript library (adopted also by SoundCloud) for the front-end and mp3/mp4/ogg/wav playing. By default this library supports loop creation, volume, pan, set position, mute, peak volume level, pause/resume all, eq data (FFT). It supports also HTML5 (iPhone friendly).

  • On the backend it will handle files using linux programs. It could add effects (such as reverb or delay) on tracks by interfacing with a LADSA compatible command line script. In this way we will reuse the tons of linux audio plugin.

  • Every track is under a kind version control (git or whatever) so to keep track of branches and merges.

Improve the OLSRd mDNS plug-in

The OLSRd mDNS plug-in allows the distribution of mDNS (multicast DNS i.e. avahi/bonjour/zeroconf) messages over an OLSR network. This is substantially achieved by sniffing for mDNS packets on the final users' networks (usually HNA networks), encapsulating them inside OLSR protocol messages, exploiting OLSR native message transfer mechanisms, and decapsulating the mDNS packets at all the other end users' networks.

The plug-in has been developed by ninux.org members, however we would like to address some important issues that have arised during deployment:

  • loops. If two mDNS plug-in enabled OLSR routers are attached to the same HNA network, then mDNS packets will loop back and forth between the two, also flooding the whole OLSR network. For the moment the temporary solution to this problem is to enable the plug-in on one router at a time on the same HNA. A real solution to the problem would be the following:

    • usually mDNS packets have a TTL != 1, so:
    • capture only mDNS packets with TTL != 1
    • when decapsulating mDNS packets, set TTL = 1
    • where TTL is the IP Time-to-live field
  • capture rate. mDNS packets are incapsulated into OLSR messages, which in turn are contained in OLSR packets that are sent at the wireless basic rate (i.e. 1 or 2 Mbps) over the whole network. Thus a big amount of mDNS captured packets in a small time can slow down the whole network. A solution to this is to add a plug-in configuration option to set the maximum packet capture rate.

References

Improve the ninuxoo search engine

We have started the development of a community-network-wide open-source search engine called ninuxoo. Written in Python, it is formed by a samba and ftp share crawler and of a cgi-based website, with a common database. We would like to enhance it by adding some features:

  • show results whith a number of hops distance, based on the IP address of the user that is performing the search. This needs to interact with the routing daemon (i.e. olsrd in our case) by periodically retrieving the graph of the community network (through the txtinfo or dot olsrd plugins) and running standard graph search algorithms (e.g. Dijkstra's)
  • add a "what's new" web page that shows the newest files found by the crawler. This needs changes to the database schema

  • reengineer the ftp crawling code

Event subscription support for Diaspora* Distributed Social Network

Diaspora is a free and open source personal web server implementing a distributed social networking service which is made out of “pods”, that in contrast with the centralized approach can be run directly from the users which can have full control of their online identity thus allowing information not to be controlled by a single party. Furthermore communications and content sharing between users are secured by using PGP encryption.

The project is still inching towards a first beta release and at the moment lacks event managing (“topic subscription”) capabilities.

This project aims at introducing support for the creation and invitation of users to events in Diaspora* by allowing them to publish information and comments together with the possibility to indicate their will to participate in the event.

Useful Skills Ruby on Rails, HAML, SASS, AJAX, MySQL, Javascript

References

More Info

About GSOC 2012: http://www.google-melange.com/

Info about ninux participation in previous years:

[http://wiki.ninux.org/GSoCIdeas2011]

[http://wiki.ninux.org/GSoCIdeas2010]

Contact

If you are a student interested in one (of more) of these projects please write to

contatti [AT] ninux [DOT] org

Thank You!