Freenet weekly status report #5
-------------------------------

1. Status of 0.7.
2. Persistent requests.
3. Fproxy and Plugins.
4. Installer.
5. Oskar's thesis.

1. Status of 0.7
----------------

0.7 is, at the node level, much the same as it was when I sent the last
freenet status update email out. However, the client layer, which is the
main focus for the alpha, has improved significantly:
- Persistent FCP requests work, although they are restarted from scratch
  on startup unless they have completed.
- Fproxy now has a default homepage, and two themes (aqua and clear).
- Fproxy now has an integrated interface to the plugin manager, and two
  useful plugins are available.
- We now have a working config system. Nextgens is working on a web
  config interface. The default ports for fproxy and FCPv2 are 8888 and
  9481 (in honour of George Orwell).

The network itself, on the other hand, has rather shrunk, and this seems
to have resulted in strange behaviour on the freeviz graphs. We do need
more testers, and we promise to have some good content tools soon.

http://wiki.freenetproject.org/FreenetAlphatestNodeInstallation

2. Persistent requests
----------------------

FCPv2 is nearing completion. You can now do persistent requests:

ClientGet
Identifier=gpl.txt
URI=KSK at gpl.txt
Persistence=forever
MaxRetries=10000
Verbosity=1023
End

The above will fetch gpl.txt. The request is tied to the name of the
client sending the request. If the client is connected, all messages
related to the request will be sent as normal to the client. If not, the
node will retry anyway (restarting it automatically on a node restart),
until it succeeds. When the client reconnects, if it is not finished,
the request will continue. The client can request the status of all
current requests:

ListPersistentRequests
End
...
PersistentGet
Identifier=gpl.txt
URI=KSK at gpl.txt
Persistence=forever
MaxRetries=10000
Verbosity=1023
End
...

If the request has already finished by the time the client connects, the
node will send the data immediately after the NodeHello:

client says:

ClientHello
Name=Toad
ExpectedVersion=0.7
End

node says:

NodeHello
...
End

PersistentGet
Identifier=gpl.txt
URI=KSK at gpl.txt
Persistence=forever
MaxRetries=10000
Verbosity=1023
End

DataFound
Identifier=gpl.txt
Metadata.ContentType=text/plain
DataLength=18007
End
AllData
DataLength=18007
End
<snip the GPL>

We send the data immediately because we cannot easily be sure whether
the client has received it (in the presence of e.g. losing connections
when a client exits). Therefore we keep the data until the client
acknowledges:

RemovePersistentRequest
Identifier=gpl.txt
End

You have 3 options for persistence:
Persistence=connection // ephemeral, tied to this connection
Persistence=reboot // goes away at restart
Persistence=forever // retry forever, saved across restarts

This works with ClientGet with ReturnType=direct/none/disk, and with
ClientPut with UploadFrom=direct/disk. In other words, it works with
everything currently supported over FCPv2.

At present the implementation (for Persistence=forever) isn't very
efficient; if the request completes before we restart, we will remember
this, but otherwise we won't remember any progress and will restart from
scratch. This will be rectified after 0.7.0 public alpha preview 1.

3. Fproxy and Plugins

Thanks to dbkr, fproxy in 0.7 now has a proper start page. There are two
built-in themes at present: aqua and clean (the latter from Jogy). Try
it: load up http://127.0.0.1:8888/ (or whatever your fproxy port is for
0.7, mine is 9888).

One link is "Plugins". This goes to cyberdo's plugin manager. Loading
plugins is somewhat user-hostile at present; find the plugin you want
here:
http://downloads.freenetproject.org/alpha/plugins/ (this is where we
keep semi-official plugins)

(it will be a file.jar.url probably), then load it, by typing into the
"Load plugin:" box, for example:
*@http://downloads.freenetproject.org/alpha/plugins/Librarian.jar.url

Then click on the "VISIT" button to use the plugin.

Currently there are two working, vaguely useful plugins:

A. TestGallery - this displays a gallery of images from a simple manifest
image. Load it, then enter the following key:
CHK at 
CMM9jna~vzg7x3jDuSOcCTf14CW6Pxm5eJA1v8yr~jo,377D7e2Fvix8ZH~GbRSa5SX~lX5z22aUMyllNEJwD8E,AAEA--8

Now fetch it in the text mode interface, via GET: - as you can see, this
is just a list of URIs.

B. Librarian - Cyberdo's search plugin.

Cyberdo has built a search plugin. This does not yet support split
indexes, so it won't scale, but future versions will. The idea is that
one or more anonymous people run spiders, which then insert indexes of
the content on Freenet. The search plugin then downloads the index (or
in future, the parts of the index that are needed for the search).

Load it, then go to the page for it, then:
Search for: freesite
Using the index:
CHK at 
ud88MejJ8bWj7Am3FW6mj3BZJpipYioGNktQItI7wac,7ubRsEjSr2lz0FxdNN0Hk9qF4H~nXa40bof5wvkqMiY,AAEA--8

This is a very simple, manually constructed index. There will be more
interesting indexes soon!

Future versions of the plugin will support adjacent-word searches. It is
not easily possible to produce a quotation from the original content a
la google, unless we actually fetch it, which would slow down the
search; this is a topic for future research.


Nextgens is working on a config plugin, which would allow you to
reconfigure your node on the fly, with the full, up to date comments and
so on that are not exposed in the config file itself. This will support
on the fly reconfig of most config variables. These will also be
available through FCP.


4. Installer
------------

Nextgens has created a really nice GUI installer for Freenet using
JavaWebStart. Unfortunately, it is not able to produce a desktop/start
menu icon and is therefore a regression over the old wininstaller on
Windows. He is now looking at other options; JWS can create an icon, but
it points to itself, so we will probably make the node self-installing,
with web config...

5. Oskar's paper
----------------

Oskar has made available his thesis, Searching in a Small World:
http://www.math.chalmers.se/~ossa/lic.pdf

This describes a simple decentralized algorithm for creating small world
networks that is inspired by Freenet's original approach, along with the
experimental and theoretical basis for this approach. This also provides
an insight into why small world networks might form naturally among
human relationships.

In other words, it explains the theoretical basis of the old and new
routing algorithms. (Not including NGR, which was always rather
alchemical).

6. Immediate future
-------------------

Soon we will have everything needed for the currently planned pre-alpha,
and far more than we had hoped for thanks to the efforts of volunteers
(more are welcome! Free SVN write access!). It will have complete FCPv2
(minus a few minor things), working Frost (hopefully; I haven't been
able to verify it recently), and a reasonable Fproxy GUI. It will
however still be basically insecure in the first alpha, and it will
still only support darknet. Hopefully this will be enough to get some
more people working on clients, and to attract some attention and funds
so that we can continue to pay for a full time coder.

Still to do before the alpha:
- FCP: MultiPut - insert a manifest. When this is done, we need somebody
  to port FIW.
- Ideally we need somebody to port FUQID. The persistent requests over
  FCP infrastructure is basically done, now we need a Delphi coder to
  make FUQID work on 0.7. This will involve stripping out a lot of old
  code, as FCPv2 is much higher level than FCPv1. If you know
  ObjectPascal, please contact me!
- Expose the remaining text-mode-client-interface functionality (e.g.
  CONNECT:) via the web interface, and make TMCI optional.
- Sort out the installer.
- Implement some form of updatable keys.
-- 
Matthew J Toseland - toad at amphibian.dyndns.org
Freenet Project Official Codemonkey - http://freenetproject.org/
ICTHUS - Nothing is impossible. Our Boss says so.
-------------- 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/20060307/08c74c65/attachment.pgp>

Reply via email to