The idea is to allow a community with its own private and free network to share web proxy data. Because ISPs will not allow anyone to share their account, external proxy access will not trigger a download. But any data downloaded by the local user will be made available to the Community Proxy. All end users of the community network will then see their effective download speeds increase, and local sites directly accessible via the local network will be available too.
I have found a Java-based proxy filter called "Muffin" that looks like a good starting point. They have a project on SourceForge which will conveniently manage CVS for us. I strongly suggest a Java package because it will run on Linux, Windows and Mac platforms with little if any modification, and on serious wireless PDAs and the like as they start to appear. Installing Java is relatively trivial, and these days most machines have the grunt to run it.
By setting up this application as a proxy for the local user, filtering can also be implemented. Some people may not wish to share particular portions of their cache that they consider may be inappropriate for minors etc. We should respect their wishes.
So, how to make it work? Well, the local or remote user asks the proxy for a web page. If it does not have it, I'd suggest firing out a datagram containing the requested URL. Responses are date-tagged, and the most recent one is used. The sender of the response is then asked for the specific URL, and the data retrieved.
If a proxy sees the datagram for a URL that it has, but notes that the date is more recent than the one it has, it will not respond with its own datagram if it was about to do so.
If there is no response, the proxy belonging to the user initiating the response will retrieve the URL from the local Internet connection and saves it in the cache for fulfilling later requests.
This system has to be completely decentralised in order to make it work, which is why existing proxies such as squid, apache and so forth are unsuitable. They require a central proxy, fixed routes between proxies and so forth, none of which can be guaranteed in a community scenario. If you are aware of a way of setting up a decentralised squid proxy network that can prevent outsiders accessing your Internet connection then please do let me know as it will save a lot of work.
So, DHCP needs to be decentralised too – a community will not have a DHCP server available all the time, and tracking fixed IP addresses is a job nobody really wants. There is actually an IETF standard for this called "Zero Configuration Networking". Under Linux, a handy utility called zcip (Zero Configuration IP) does this very nicely. There is also a Java version, jRendezvous and Mac users will note that this is the Rendezvous implementation used to auto-configure Mac IP addresses written in Java.
Locally hosted sites should be available through a user's Community Proxy, and of course should always be flagged as being up-to-date. So, a provision to always allow access to certain URLs through the Community Proxy is needed.
Community Proxies should, of course, allow for proxying off one another so that chains of proxies on different networks can take advantage of each other. This would allow generous private networks (such as schools and community centres) to join in and take advantage of the effective increase in bandwidth.
It would be nice to implement some form of central cache repository and a protocol for getting data into it. Ultimately I'd like to make the cache distributed, and multiply redundant. Possibly by using Freenet or something similar.
Several people have suggested providing some mechanism to browse the Community Proxy cache. I am unsure how this could be implemented and welcome suggestions.
The more people in a community that use the Community Proxy, the more successful cache hits will be and the faster the whole thing will appear to run. As the coverage expands, it will undoubtedly encompass some members who operate community-centric web sites. These and other sites managed by community members will end up in the community network. Eventually, local institutions such as schools, council offices and Internet cafes will start to realise the benefits of belonging to they system. Ultimately such community networks will get quite big and link together. Hopefully, much of the Internet will be reclaimed for the community once more rather than being used as a vehicle to push pop-up adds for Viagra on the unwary.
Please feel free to contact the author vik atsign olliver d0t family.gen.nz (sorry, gotta confuse spammers) to make suggestions or join in the fun.
Last updated 26th December 2003