The Free Network Project Summer Projects 2007
The Free Network Project is excited to take part in the
Google Summer of Code 2007∞. This project endeavors to fund students to contribute to an open source project over the summer break AND get paid for it. This is the second time for us, the first was in 2006:
Announce on @devl∞
Example Proposal Ideas
- More work on searching Freenet: better UI, FCP support, support for searching Frost, multiple indexes, aggregating indexes, a plugin to construct an index site from a spider, etc. See NewSpiderIdeas.
- Revamp the plugin system. We have the beginnings of a new plugin system, but it needs more work. A well-designed plugin system *should* enable untrusted plugin support, as well as simpler goals such as a clean API that doesn't involve calling into the guts of the node every time you want to fetch a page, and auto-updating of plugins over Freenet.
- Denial-of-service-resistant link-level encryption via JFKi
- Better NAT support: Implement UP&P, NAT-PMP, TURN and related technologies (we already have STUN and ARKs, but we need more). Note: Implement with an eye to security. We already use STUN, but STUN is centralised and we can't use the listen port for that reason, so it doesn't detect port forwards. UP&P may actually be a safer way to get our IP address. Would be good to be able to identify whether we are NATed without using centralised services (we get packets from X but not from Y...). Also note that according to this paper∞ and here∞, 80% of NAT routers are full-cone, so we may not need UP&P for port forwarding - but this hasn't been our experience so far, we need more data.
- Implement unit tests for the support classes of freenet and the (in)famous caught bugs. Unit tests for as much of the code as possible would be great, and the more advanced tests may involve setting up multiple nodes in the same VM with crypto turned off etc.
- Better support for traditional F2F functionality: "Darknet" should become "Friends", you should be able to set trust levels on your peers, see their bookmarks, easily exchange instant messages (perhaps via e.g. a GAIM plugin), have shared folders, browse their Thaw indexes (and possibly their global queues) etc etc.
- Packages for debian/redhat/etc
- Easier means to join the darknet. One-time invites, invites with only an IP and password, out of band verification, etc. Several threads on this on the tech list recently. Other suggestions: Auto-generated installer package including an invite which you can give away, plugins for IM clients to make adding darknet peers easy etc.
- A Python / C / Ruby / [your favorite language] library to interface with FreenetFCPSpec2Point0
- A Freenet wrapper tailored towards being easy to install, run, and upgrade on OSX
- Transport plugins.
- Revamp the cache to use an ARC∞ algorithm for greatly improved efficiency.
- Implement new plugins providing for instance IM notification of completed requests from the global queue (first part of this is to make the node generate alerts when requests are completed, and to implement UI to fetch a currently unavailable site from the failure page and notify with a link when done; second is to tie this in to external plugins for email, IM, RSS notifications)
- Implement "update over mandatory" update
- A wiki system on freenet. NOTE: This is being implemented at the moment by one of the developers. It is not therefore a possible SoC project.
- Easy to use publishing wizard plugin, using either webdav/ftp shared folder or a local directory.
- Blogging plugin, with bookmarks, photos, files, etc.
- A moderable board system (similar to the Frost one, but moderable) : Some specs are already available here, but they *must* *be* *redesigned*. May be integrated in Thaw.
- More plugins in Thaw :
- Ability to see (some of?) your friends (peers) indexes (or perhaps queues) combined with the ability to follow links between indexes
- N2NTM (Node To Node Text Message) (would require some modifications in the node ; see the Thaw plugin 'PeerMonitor' for the UI)
- A journal plugin : Keeping a trace of every downloads / insertions the user did
- Or you can be imaginative, all suggestions are welcome :)
You might want to take a look at the proposed ideas for
FreenetZeroPointEight , however these are likely to be extremely difficult to accomplish in the given period, and will require a detailed understanding of the Freenet codebase.
How to sign up
Go
here∞.
Requirements
(Borrowed from
here∞).
- You must not overbook yourself. Working on your Freenet project should be your main activity for the entire summer.
- You must be willing to provide weekly status reports at a minimum
- You will be expected to learn how to use Subversion, Mantis, and other Freenet tools
Proposal Guidelines
Students are responsible for writing a proposal and submitting it to Google before the application deadline. The following outline was adapted from the Perl Foundation open source proposal HOWTO. A strong proposal will include:
* Name
* Email
* Project Title
* Benefits to the Freenet Community - a good project will not just be fun to work on, but also generally useful to others.
* Deliverables - It is very important to list quantifiable results here e.g.
o "Improve X modules in ways Y and Z."
o "Write 3 new man pages for the new interfaces."
o "Improve test coverage by writing X more unit/regression tests."
o "Improve performance in FOO by X%."
* Project Schedule - How long will the project take? When can you begin work?
* Bio - Who are you? What makes you the best person to work on this project?
Connecting to IRC (#freenet on irc.freenode.net) and asking one developer for guidance/advices is probably a good idea.
Frequently Asked Questions
Am I eligible?
Please see the
StudentFAQ∞ for all questions about eligibility.
When is the proposal deadline?
Your proposal has to be submitted before the 8th. 6PM PDT
What projects were completed successfully by students last summer?
The Free Network Project took place in the
SoC∞ last year. One result of this was Jflesch's Thaw, the widely-used portable download/upload manager for Freenet with support for indexes, which has been a great success (and is actively maintained). Nextgens did lots of good work on the installer and related things (and continues to contribute), Dave Baker did some good work on Freemail, although this is not widely used at present, and Michael Rogers continues to do useful work on simulations of load balancing and congestion control - see
NewTransportLayer for some of what has come from this.
Page was generated in 0.0600 seconds