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.
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.
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!
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.
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. 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 |
The Network is based on a well know DHT (Chord, Pastry, CAN , Kademlia...) but protocol ehancements must be done to ensure:
The library must gives the API for:
The platform used is Jungle created by netgroup.uniroma2.it |
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 |
Applications written in XUL and XPCOM, can be dynamicaly run with XULRunner | 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) |
* 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 |
We are On the Road....