GSoC/GCI Archive
Google Summer of Code 2012

Ninux.org

Web Page: http://wiki.ninux.org/GSoCIdeas2012

Mailing List: http://ml.ninux.org/mailman/listinfo/wireless

Ninux.org is a non-commercial, open initiative to support free networks in Italy.

Our goals are:

  1. create a community of passionate people who agree to collaborate as volunteers in their free time in order to accomplish the goals listed in the points that follow
  2. build an open, decentralized and free wireless network in order to experiment with the latest hardware and software technologies related to networking and wireless. Our approach is based on the open source philosophy. We push the newcomers to participate, collaborate and share
  3. promote open source software: we tend to prefer open source software and we love to collaborate and share our code [1]. We participate and hold free events to promote and explain the world of Free and Open Source Software (e.g.: [2] [3] [4] [5] [6]). We would like to attract more developers in order to expand our codebase and be able to organize more events
  4. fight the digital divide: we share our know how with everyone that wants to learn; we help those who are not reached by a broadband Internet connection by sharing a part of our Internet connection through our wireless network or by collaborating with WISPs (we are not an ISP and don’t want to compete with them)
  5. become part of the Internet: we want to become part of the Internet. Partially we have accomplished this task, in fact we are an Autonomous System with number 197835 (registered as Fusolab, the nonprofit organization which we are part of and where we hold our weekly meetings) and we have public IPv6 addresses (real time IPv6 traffic graph in our homepage [6])


At the moment, according to our statistics [7] we have a total of 109 active nodes, 41 open hot spots, 300 potential nodes that want to join the network and about 130 active links.

We are building networks in different parts of Italy. More and more cities are joining our model. At the moment there active networks in:

  • Rome Area
  • Pisa
  • Viterbo
  • Sicily Area (2 towns)
  • Catanzaro (still in an experimental phase)
  • Cosenza (still in an experimental phase)


To achieve our goals we believe that an open, passionate, skilled and friendly community is of fundamental importance, therefore we support both social and experimental activities.

[1]: http://wiki.ninux.org/Codice
[2]: http://blog.ninux.org/2012/01/08/crittografia-pgp-per-tutti-21-gennaio-2012/
[3]: http://blog.ninux.org/2012/01/24/pgp-signing-party-del-21-gennaio-al-fusolab/
[4]: http://blog.ninux.org/2011/11/06/10112011-digital-divide-progetti-italiani-in-tecnologie-wireless-che-rispondono-alle-esigenze-di-privati-e-microimprese/
[5]: http://blog.ninux.org/2011/11/01/lan-party-openarena-urbanterror-2-dicembre-2011/
[6]: http://www.ninux.org/
[7]: http://map.ninux.org/

Projects

  • 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) Level 3 Technologies: Python, Javascript, HTML5, CSS, Relational Databases Frameworks: Django, jQuery
  • Improve remote monitoring and managing of OpenWrt For a wireless community network it would be useful having the possibility of configure, manage and monitor antennas' activity directly from a unique web page. So we want to add features both to OpenWrt and to a web management system: NodeShot.
  • Mobile Application for managing the Ninux Network A Mobile application that will help the user to connect to Ninux network. -Check connection to the net, if not returns the position of the nearest; -Who's online. -Download/Upload file; -AR system; -fresnel's zone.
  • Mobile application to do AR aided wireless device pointing suitable for Wireless Community Networks A new user that wants to join a Wireless Community Network is required to install a wireless device on his roof and to detect near stations to connect to. This can be arbitrarily difficult in a big city environment due to line of sight problems and lack of precise information about geography. In this scenario we want to develop an iPhone application that helps, gathering information (coordinates, direction,..) from GPS and compass hardware present in almost every mobile system and the information gathered from a mapserver system containing the database of all the nodes, to easily find and then point a node where we want to connect all in an augmented reality system. To do so the application will exchange information with a mapserver both to obtain information of the nodes and also to insert his own position in to the database. The app wants also let know to as much people as possibile about wireless community through the app store system that this devices have built-in.
  • Nodeshot database and server side code refactoring 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. A joint effort from several wireless communities is being done in order to use a common database scheme and make a new flexible and pluggable map-server. This could be the first step in that direction. These are the task which I want to get done during the summer: Refactor the database model so to become compatible with the common node DB project proposed in Athens at the Wireless Battle of the Mesh v5 Better DB abstraction, eg: differentiation between different types of devices (antennas, servers, others) Integration with django's user management framework (django.contrib.auth.user) and permission system 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) History for all the changes in the database RESTFUL api in json and or xml to retrieve data from the database 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) Improve caching This refactoring regards only the server side code and the database, therefore other people will be able to work on the frontend and on the user interface without being affected by my code changes. The technologies I'll work with are Python, Django (python framework) and MySQL/Sqlite.