SourceForge.net Logo

KiMoNo

The new way in which internet dress

Technical

The project

The project is such structured:

There is a peer to peer network formed by users and repeaters.

The users are, presoumibly, humans that want to consume a media.

The repeaters are servers that give spontaneously bandwith to the whole overlay or only to a particular channel.

Network

The requisites of the p2p networks are the anonymously expetially of the source of the media, the Nat / FW Traversal i.e. it must allow to almost every non tech people to join the network in all the network scenario that real world presents.

The network must be merithocratic and implements a reputation system in which peers are incentivates to give at least the resource he consumes.

The network try to use open standard but doesn't diregard any dirty tricks to achieve its objective .

The network, finally, must consider the presence of repeaters and must interact with them to get benefits.

Users

The users will have a cross platform application that connect to the overlay acquiring information and representing to the user in the lest invasive manner. No proprietary mediaplayer will required to the users, and the channels and informations will be presentend as RSS feed so they could be viewed with any RSS aggregator.

The application will offer simple mechanism to pubblish resources and it will be build with "modules" in mind. It can support different types of algorithms for straming or file-sharing, each one has different features. Opportune traffic shapers must be build to ensure the user have the total control on the application and in order to priviledge some types of traffic rather than other. When the algorithm and their jobs, the media flows is reconstructed and delivered to the user media player.

The possibility of building set-top-box would be a great result!

Repeaters

And who are the repeaters??!

Lot of users has asyncronous bandwidth (e.g. xDSL users) where to every Mbits of download bandwith there are only few hundreds Kbit/s disponible. This is probabily a dumb (or smart?) idea of providers that suppose people download more than what upload in the standard client-server paradigm. This is oviously not true in peer to peer.

To earn some more bandwidth we could ask to whose have a lot of upload bandwidth. Who? The web servers!, of course!

Almost all web servers has SSI tecnology (e.g. PHP) , so they can communicate if the programs know how to speak to them. They can be a great resource in store and forrward scenario and in some cases could fill some gap.


The application

As shown in the picture, the platform is composed by these parts:

The Web Server: is incorporate in the application and act as frontend for resource viewing, program tuning, resource finding.
It can interact with every browser adding content to them by the peer to peer engine.
Web application can use SSI technology (like CGI) and CSI ones (like javascript), so is it possible to implement any AJAX technology.
We use myServer as server (or SHTTPD)

The application is build with Mozilla Framework to ensure portability and beauty.

The different algorithm are the instruction of how to get a specific resource, e.g. there will be one algorithm for torrent, one (or more!) algorithm for real time streaming, etc etc.
These pieces of code will be downloaded on demand from a certificated site in form of Mozilla Extensions.
More info about the extensions can be found here.
Gratis the capability of adding new theme (totaly useless for now?)

The Traffic Shaper ensure that all the traffic will respect some policy (e.g. QoS for real-time and non realtime services, Bandwidth cap...)

The application will be released for

Win Linux Mac OSX

Network Details

The Network is based on a well know DHT (Chord, Pastry, CAN , Kademlia...) but protocol ehancements must be done to ensure:

  • NAT/FW Nat Traversal
  • Resilient to high churn
  • Anonimimous routing or at least to preserve the anonimicty of the source (the resource owner).
  • Interoperability with the Repeaters
  • Use at most as it possible standard protocols (IETF drafts or RFCs).

The library must gives the API for:

  • Store and retrive information
  • Get the reputation of a peer
  • Performing query in the DHT
  • Instauring a session among two peers
  • Sending message among peer

The platform used is Jungle created by netgroup.uniroma2.it


RoadMap

Actually the project is in an early status. It approach the problem "top-down" while the network group is approaching the problem down-top.

Here something usefull iinformation to start developing, given to you in an easy form (*) :

The basic graphical interface (GUI) in Mozilla is programmed in XUL, an XML language. The language describes the position and the grafic of buttons/menu. The behaviour of these buttons are written in Javascript.,
If you want more that trivial pop-up "Hello World", you must use the exported method of modules called XPCOM.

XUL file can be opened with Mozilla Firefox.

The RDF is a more usable way to store information like email or bookmark instead of write it in long XUL list.

The XBL the language for describing the behaviour of XUL widgets, for example you can define and dynamically change the behaviour of a scroll bar

XUL Tutorial (but it's long and dealt with RDF, XBL, and how to use XPCOM)

XPCOM are the modules, witten in C++ or Python essentially, that can perform almost everything. Very big cross platform libraries exists for save time and space, for example exists Necko for the network, and Gecko for the file/web browser, NSPR for libc. Create an XPCOM Component

Creating XPCOM Components

How to use existing libraries in XPCOM Modules

Applications written in XUL and XPCOM, can be dynamicaly run with XULRunner XULRunner

Simple and short tutorial on XULRunner

Some other usefull things to know:

XPIDL is a language to define neutral-language interface among Javascript/XUL and XPCOM.

XPInstall is a technology to make croo-platform package and installation

XPConnect is the tecnology to connect XPCOM module to XUL, so that Javascript can handle and use the exported methods (interfaces) of the modules.

XPToolkit is a project to simplify the build of User Interface, but at the moment there is no code

Chrome URL allow to reference piece of Mozilla application without knowing the exactly location of the files.

Every mozilla application could have also language packs and custom themes.

Extensions are piece of code that add functionalities to a main Mozilla application. It can change the Graphic Interface, but also add new XPCOM. Extension Development (tutorial greatest hits)

FORUM Italian extension forum

Extension FAQ

* This want to be a very short summary to give a good startup for people that view the platform for the first time. Please signal any errors to the mailing list.

Tutoral Book File Other help (forums, newsgroups, FAQs)

Step Task
0.1 Build simple Hello World application with menu, and primitive GUI
0.2 Link with some XPCOM module and run application with XPRunner
0.3 Build a simple "Hello Europe" extension for the application
0.4 Investigate how to build a local webserver (with XPCOM modules or with a cross platform light httpserver wrapped in a XPCOM modules?). Try to create RSS feed and to use them in Firefox.
0.5 Integrate with Jungle library

Wanna collaborate???

We are On the Road....