Freenet status report, 26/09/06
-------------------------------

0. Status Report.

The last time I put out a status report was in March. The last time Ian
put out one was in July. Clearly a lot has changed since then!

ToC:

1. Financial.

John Gilmore, one of the founder members of the EFF, the Cypherpunks
list and Cygnus Solutions, gave us a donation of $15,000, as you may
have heard. This means we are okay for 6 months or so. However, that
does not mean all our financial problems are over. At present we have
around $10,000 in the bank, and $1,200 in the paypal. (And the last time
Ian checked, nothing in e-gold). He may give us some more when we run
out, but then again he may not, and we don't want to be dependant on a
single source anyway.

2. Google Summer of Code

We have participated in the Google Summer of Code this summer. This
means that we have had four students, all paid $4,500 by Google, working
full time for us (instead of working in the fast food industry):

Michael Rogers - Has been developing a set of detailed simulations of
Freenet, with an eye to both low-level congestion control and high-level
load balancing. We have had extensive discussions on low level changes
and have a proposal for high level load limiting which will shortly be
simulated and finalized before being implemented. This will hopefully
solve many of Freenet's current performance problems.

Dave Baker - Has rewritten Freemail for Freenet 0.7. Freemail is exactly
what it says: An email system using Freenet as a transport mechanism. It
provides an IMAP4 and SMTP interface, so you can use it with a regular
mail client. It may also in future have a webmail interface. While I use
Frost regularly, IMHO it is important that we have this functionality,
because it will be of significant use in hostile environments, and
because it will help to knit together the anonymous an offline
communities.

Jerome Flesch - Thaw. If you haven't tried Thaw yet, try it. It's better
than FUQID, and it has the beginnings of index searching support.

Nextgens (Florent Daigniere) - Various work on the installer, general
debugging, packaging etc. Currently working on low-level encryption
(Station to Station protocol).

I hear that Google is organizing a conference for mentors, with up to 2
per organization invited (me and ian) and most expenses paid. :)

3. License change

I am attempting to change the license from freenet from not being
specified at all in most files, with just the GPL included in the
license file, to explicitly GPL 2 or later. If you have contributed code
to Freenet and haven't already contacted me about this, please do so. I
am quite willing to reconsider this (with ian), but only one person has
objected so far. Once we have permission from all authors for "GPL 2 or
later", we will be able to upgrade to GPL 3 when it comes out. But this
will not happen automatically; I hope it will be debated properly and we
will move forward, or not, on a consensus. We may leave it as it is. One
advantage of GPL 3 is that it allows us to include Apache Software
License (1.1/2.0) code, such as the Apache Commons code, especially the
Commons Compress library. We can arguably do this anyway, but the FSF
says the licenses are incompatible. Hedging our bets by making the main
code "GPL 2 or later", and including the ASL2 code, may be best.

4. Opennet and darknet

At present, Freenet 0.7 only implements darknet. That means you have to
add people manually. The theory is that you only add the nodes belonging
to people you actually know, thus forming a true darknet. A true darknet
is highly robust, virtually invisible, and far more secure than an
opennet. Unfortunately in practice people true darknet connections are
rare; most people get most of their links from #freenet-refs . The
result is that we have what is effectively an opennet, with all of its
disadvantages, and without its convenience. So, Ian and I have agreed
that we need to implement a true opennet. This would give better
performance, and be far more convenient.

However, there have been many discussions on both sides; several
developers have serious reservations about opennet, and everyone else in
the entire universe seems to think that because you know your peers you
can't possibly be anonymous. This is the equivalent of an ostrich
sticking its head in the sand on the grounds that if he can't see the
large creature about to eat him, then the large creature can't see him.
You have to be connected to some nodes, if you want to be part of
Freenet. You are vulnerable to those nodes you are connected to. On both
Freenet 0.5 and Freenet 0.7, your peers can do correlation attacks
against you. But on a true darknet, you get to choose your peers, rather
than them being assigned by the network.

The simple fact is that true darknet is *far* more secure than opennet
of any kind. Not only is it invisible, but you get to choose who you
connect to. An opennet is far easier to attack, because the attacker can
harvest all nodes, then connect to all nodes, not necessarily all at
once, and observe each one. Freenet 0.8 will have "premix routing", a
layer of onion routing before we start the request. This probably will
not be implemented for opennet, because there is little point. An
attacker would simply pretend to be many nodes, and take over your
routing table.

So, despite "common sense", and despite the seemingly deliberate
propaganda campaign by certain individuals against darknet, we need to:
a) implement opennet AND
b) give people every reason to move from pure opennet to hybrid
opennet/darknet to pure darknet, by adding connections to their friends.

Thus, we get a large network with opennet, and then people discover that
their friends are already on freenet, and connect to them. In the long
term we will have both a large opennet and a large darknet.

How do we accomplish b)?
1) Education. See above: Darknet is far more secure than opennet.
2) Preferential routing. Your node should prefer to route queries from
your darknet peers - your friends - than for random opennet nodes. (This
needs to be simulated, but in principle appears sound).
3) Making it easy. Node reference files now end in .fref. Such files are
automatically added to the node's routing table when you double click on
them (the other side must also add yours), in Windows. There is a list,
darknet-tools, for the development of IRC client plugins and so on,
although nobody seems interested in it at the moment.

So in conclusion:
- We need opennet to get users.
- We need opennet users to move to darknet.
- In the long term we need the darknet to be bigger than the opennet.

5. Network size.

Over a 48-hour period, my node shows 498 node locations seen. However, a
different means of estimating network size, the new PROBEALL: function on
the console (telnet 127.0.0.1 2323, type PROBEALL:, then tail -f
wrapper.log), shows 127 nodes online at a given instant. The probe
function may be buggy, or we may have very high network churn, as people
install freenet, try it out, and uninstall it.

6. Client layer, and content.

There remain a number of major changes that need to be done to the
client layer, for example multi-container freesite inserts. However,
there are 154 sites on The Public Index, and there are 3 actively
updated indexes including TPI (which is good but can't be included by
default as it is publicly writable). That's against around 440 sites on
TFE a while ago, on the 0.5 network. Most of the client layer is ready;
for example, there is only one significant known issue with the content
filter now. There are of course more things to do, but most of them are
not vital for 0.7.

7. Other changes

Several major changes have been made in the last few months. STUN
support has been added, so the node should be able to auto-detect its IP
address most of the time even if it is behind a NAT. The datastore has
been split into a long-term store and a short-term cache. Inserts of
single files resume automatically on node restart. Splitfiles heal
themselves. And there have been minor improvements to routing and load
balancing, although for the latter to really fly we need to complete
mrogers' work. And many bugfixes. All since July, when Ian last
published a status report.

7. Future priorities, and alpha?

TODO:
- More bug fixes. (There are *always* more bugs. A lot of what we've
  been doing for the last several months have been bug fixes and minor
  features; if you haven't tried freenet for a while try it again).
- STS. (Better link encryption; major progress towards this already,
  thanks to nextgens).
- Multi-container freesites. (Big freesites currently have problems
  because only the first 2MB is containerised).
- Contact the last few authors somehow and change the license.
- Low-level congestion control changes (when mrogers writes them up).
- High-level load limiting (when mrogers has simulated it and finalized
  the design).
- Opennet.

We should seriously think about putting out another alpha in the
reasonably near future, but maybe we should wait until load limiting has
been sorted out?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: 
<https://emu.freenetproject.org/pipermail/tech/attachments/20060927/f7ccdf01/attachment.pgp>

Reply via email to