Hello.
Probably it is too late for changes and you probably already discussed
it, but I would like to say few words about the design.
Building monolithic solutions - that is doing everything in one place -
is often not the best solution. The better approach may be some smaller
cooperating layers. For example it may look like this:
Layer 0 - the freenet core/server - it manages datastore and network
connections. The api to it can be extremaly simple: Data getData(key) and
Key putData(data), where size of data is limited by the desing(currently
1M), the metadata can also be handled here or on the next layer.
Layer 1 - client services - splitfile handling, download queue,
containers, calculate keys and similar utilities. It may be run on the
same computer, as part of the node(started on the same javaVM, as layer 0)
or it may run elswere. It also may be available as a C library (such as
fcptools)
Layer 2 - applications - FPProxy, frost, fuqid. They usually talk to
the server through layer 1, but some more advanced(like fuqid or maybe
frost) may choose to talk directly to the core server at layer 0.
It is clearly visible that core server/layer 0 is the heart of freenet,
where all the anonimity and encryption takes place, and main developers
could concentrate work there. The client part is independent and can be
developed in pararell.
Roman Bednarek