Hello, I have been idling on the IRC channel for quite some time now. The response from freenet is really good.
For my GSoC application I have been working on a proposal for the transport plugin. Although the response from freenet is "this is a very hard project", I have tried my best to understand the codebase of freenet and the exact purpose of this project. In particular I have spoken to Arnebab, toad_ and nextgens regarding this assignment and from them have gained a good insight on what needs to be done. Based on their information and some research on the project this is my present standing. Some of it might still be incorrect. Firstly Freenet presently runs extensively on UDP based sockets. The communication happens at several layers and with different mechanisms i.e sockets, streams, reliable packets, UDP, so on... The major problem is that the code has been integrated very tightly. For e.g. NodeCrypto class uses only UDPSocketHandler for communication. So this means that the data cryptography and communication at the transport layer (using UDP in this case) are grouped very tightly. This means that a major refactoring of the code is needed. This task is supposed to be the hard part (where prior freenet experience is needed). Changes will definitely encompass refactoring - Node, NodeCrpyto, UdpSocketHandler and other related dependencies. For this I plan to do a very thorough research and practice on the core functionality of freenet way before the coding period begins, so I know the exact task at hand. I ll obviously be at the mercy of the community. On the other hand a lot of work has been completed. For eg. implementations of OutgoingPacketMangler and IncomingPacketFIlter allow packets defined for any transport protocol. This is also mentioned here - "Last year's work on new packet format should really help although some transports (really small packets e.g. pretending to be Skype) will still need to do their own splitting/reassembly (this should probably happen within the node too, although it should be possible to turn it off). " Streams have better support: https://bugs.freenetproject.org/view.php?id=2214 Secondly once this is achieved, UDP will become an individual transport plugin and similarly the framework will support users to write their own transport plugin. Now this means the cryptography and packet modifications are done in a different level, and hence the developer need not bother about them. As part of the GSoC project I will be required to make this change and also in the process develop TCP transport plugin. Here I think I am more comfortable, and I think my existing knowledge of sockets should get me through. Thirdly, some other objectives as toad_ mentioned as important, include ways to deal with having multiple connections open to the same peer at the same time. Presently haven't thought about this, and don't know that much about freenet for the exact need for this. And apart from this (some confusion regarding this) is implementation of other application level protocols like HTTP, VoIP and so on. Now this can "become" easy if protocols like TCP are enabled. Also as mentioned in the project page is the ability for communications to pretend to be of other protocols. Again I believe it means that an example plugin needs to be developed. This part of the project would spill outside the deadline but it can get direct contribution from the community. The application period has now started, so I ll be turning in mine. But I was hoping I could clarify a few things. I know this is beyond what can be finished in three months. *Please give me your opinion on this proposal and what I should do. * Also as nextgens mentioned, this project would be very hard for me, I would like to know if I should continue researching more or probably give something else a shot. I still have a week to go either way. But I am aware this requires a lot of effort and knowledge and I am ready for that. For now I will try and fix a bug. Thank you PS: Comments, including "you don't know shit" or "go watch TV" are welcome :) _______________________________________________ Devl mailing list Devl@freenetproject.org https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl