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>
