gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r1414 - GNUnet-docs/WWW


From: grothoff
Subject: [GNUnet-SVN] r1414 - GNUnet-docs/WWW
Date: Tue, 12 Jul 2005 12:45:05 -0700 (PDT)

Author: grothoff
Date: 2005-07-12 12:45:02 -0700 (Tue, 12 Jul 2005)
New Revision: 1414

Modified:
   GNUnet-docs/WWW/faq.php3
Log:
update

Modified: GNUnet-docs/WWW/faq.php3
===================================================================
--- GNUnet-docs/WWW/faq.php3    2005-07-12 18:44:59 UTC (rev 1413)
+++ GNUnet-docs/WWW/faq.php3    2005-07-12 19:45:02 UTC (rev 1414)
@@ -25,7 +25,7 @@
 LIV(extlink_("#platform","On which platforms does GNUnet run?"));
 LIV(extlink_("#hostkey","CRC errors: the deleted hostkey problem."));
 LIV(extlink_("#database","What is the right database for me?"));
-LIV(extlink_("#delete","<tt>gnunet-delete</tt> behaves in unexpected ways."));
+LIV(extlink_("#delete","<tt>gnunet-unindex</tt> behaves in unexpected ways."));
 LIV(extlink_("#spam","How does GNUnet handle spam? or: what are namespaces and 
directories good for?"));
 LIV(extlink_("#knownbugs","Are there any known bugs?"));
 LIV(extlink_("#bugs","How do I report a bug?"));
@@ -36,10 +36,9 @@
 ANCHOR("raq");H3("What do I do if my question is not answered here?");
 BP();
 W("There are many other sources of information.");
-W("You can read additional %s, ask the question on one of the %s or look at 
the %s.",
+W("You can read additional %s, ask the question on one of the %s.",
   ARRAY(intlink_("documentation.php3", "documentation"),
-       intlink_("mailinglist.php3","mailing lists"),
-       extlink_("http://www.angelfire.com/super2/duologue/gnunet/";, 
"alternative FAQ")));
+       intlink_("mailinglist.php3","mailing lists")));
 EP();
 
 ANCHOR("license");H3("Is the code free?");
@@ -56,46 +55,50 @@
 W("The general answer is, when it is ready.");
 W("A better answer may be, earlier if you contribute (test, debug, code, 
document).");
 W("Every release will be anounced on the %s mailing list and on %s.",
-  
ARRAY(extlink_("http://mail.gnu.org/mailman/listinfo/info-gnunet","Announcements";),
-       extlink_("http://freshmeat.net/projects/gnunet/","freshmeat";)));
+  ARRAY(extlink_("http://mail.gnu.org/mailman/listinfo/info-gnunet";,
+        "Announcements"),
+       extlink_("http://freshmeat.net/projects/gnunet/";,
+        "freshmeat")));
 W("You can subscribe to the mailing list or to the project on freshmeat to 
automatically receive a notification.");
 EP();
 ANCHOR("gui");H3("Is there a GUI?");
 BP();
 W("Yes, it&#8217;s called <tt>gnunet-gtk</tt>.");
 W("The GUI supports searching, downloading and inserting files.");
-W("Before starting <tt>gnunet-gtk</tt> you should start the GNUnet server, 
<tt>gnunetd</tt>.");
-W("You may also want to wait a couple of minutes to give <tt>gnunetd</tt> the 
time to connect to other peers.");
 P();
 W("If you prefer the shell for everything, that&#8217;s easy, too.");
 W("First, use <tt>gnunet-search</tt> to search for content:");
 P();
-PRE("# gnunet-search GPL\n" .
-    "gnunet-download -o &quot;COPYING&quot; -- 
gnunet://afs/N8RCF3TETLRU9CV1PAS7M2H9QDB36AE3.K9JO8IP7KTNFO23S3VB4TFUKLD7SO5AS.0466DC92.17992\n"
 .
-    "=> The GNU Public License <= (mimetype: text/plain)");
+PRE("$ ~/bin/gnunet-search GPL\n" .
+    
"gnunet://ecrs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992:\n"
 .
+    "gnunet-download -o "COPYING" 
gnunet://ecrs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992\n"
 .
+    "                    filename: COPYING\n" .
+    "                 description: The GNU Public License\n" .
+    "                      author: RMS\n" .
+    "            publication date: Sat Jun 25 08:29:13 2005");
 P();
 W("The output above is the result of searching for the keyword 
&#8220;GPL&#8221;.");
 W("<tt>gnunet-search</tt> will immediately start searching GNUnet and print 
new results (no duplicates) to the screen.");
-W("The first line is the information that is required to retrieve the file 
(query-hash, key-hash, crc (in hex) and the size of the file, here 17992 
bytes.");
+W("The first line is the information that is required to retrieve the file 
(query-hash, key-hash, and the size of the file, here 17992 bytes).");
 P();
-W("The second line contains a description of the file.");
+W("This is followed by additional information about the file.");
 W("In order to download the file, use");
 P();
-PRE("# gnunet-download -o &quot;COPYING&quot; -- 
gnunet://afs/N8RCF3TETLRU9CV1PAS7M2H9QDB36AE3.K9JO8IP7KTNFO23S3VB4TFUKLD7SO5AS.0466DC92.17992");
+PRE("$ gnunet-download -o &quot;COPYING&quot; -- 
gnunet://ecrs/chk/N8RCF3TETLRU9CV1PAS7M2H9QDB36AE3.K9JO8IP7KTNFO23S3VB4TFUKLD7SO5AS.0466DC92.17992");
 P();
 W("where <tt>COPYING</tt> is the suggested filename.");
 P();
 W("If you want to add content to GNUnet, use");
 EP();
-PRE("# gnunet-insert -f COPYING -D &quot;The GNU Public License&quot; -k GPL 
-k COPYING -k Gnu -k GNU -k Public -k License -m text/plain -k FSF");
+PRE("$ gnunet-insert -m &quot;description:The GNU Public License&quot; -k GPL 
-k GNU -m mimetype:text/plain -m author:RMS COPYING");
 P();
-W("where <tt>COPYING</tt> is the filename and the arguments are the 
description of the file (in quotation marks) followed by a list of keywords.");
+W("where <tt>COPYING</tt> is the filename and the arguments are the 
description of the file (<tt>-m</tt> options) and <tt>-k</tt> is used to 
specify additional keywords.");
 EP();
 
 ANCHOR("GNUweb");H3("Is it possible to use GNUnet via a browser as an 
anonymous WWW?");
 BP();
 W("There is currently no proxy (like fproxy in Freenet) for GNUnet that would 
make it accessible with a browser.");
-W("It is possible to build such a proxy and all one needs to know is the 
protocol used between browser and proxy and a swift look at the sources in 
<tt>src/applications/afs/tools/</tt>.");
+W("It is possible to build such a proxy and all one needs to know is the 
protocol used between browser and proxy and a swift look at the sources in 
<tt>src/applications/fs/tools/</tt>.");
 P();
 W("The real question is, whether or not this is a good idea.");
 W("In order to achieve anonymity, the AFS file sharing service implemented on 
top of GNUnet has a much higher latency than the WWW.");
@@ -119,10 +122,11 @@
 LI("typos (if you&#8217;re off by one letter, it won&#8217;t work)");
 echo "</ul>\n";
 
-BP();
-W("For a test of slightly larger scale, you can try to download another 
&#8220;official&#8221; test content by searching for keyword <tt>alien</tt> or 
go directly for the content using:");
-P();
-PRE("# gnunet-download -o &quot;Aliensong.mpeg&quot; -- 
gnunet://afs/UFOO2C84BUC11HMHBKVJOI9380DKGBQL.EGT78G1J9CR74PCK16EQ2BIFPL0ERISN.7A1AC901.3201028");
+// FIXME!
+// BP();
+// W("For a test of slightly larger scale, you can try to download another 
&#8220;official&#8221; test content by searching for keyword <tt>alien</tt> or 
go directly for the content using:");
+// P();
+// PRE("# gnunet-download -o &quot;Aliensong.mpeg&quot; -- 
gnunet://afs/UFOO2C84BUC11HMHBKVJOI9380DKGBQL.EGT78G1J9CR74PCK16EQ2BIFPL0ERISN.7A1AC901.3201028");
 
 P();
 W("Still not satisfied?");
@@ -133,17 +137,18 @@
 BP();
 W("For building directories, GNUnet keeps track of all file identifiers that 
it has so far encountered, including search results, inserted or indexed files 
and files mentioned in downloaded directories.");
 W("This information is stored in plaintext to allow building of directories.");
-W("Users should run <tt>gnunet-directory -A</tt> to remove that information.");
+W("Users should run <tt>gnunet-directory -t</tt> to start tracking this 
information.");
 W("Note that the data is kept locally in the GNUnet directory and never send 
out into the network.");
-W("You can inspect the information with <tt>gnunet-directory -a</tt>.");
-W("It is probably a good idea to clean that database from time to time.");
-P();
+W("You can inspect the information with <tt>gnunet-directory -l</tt>.");
+W("It is probably a good idea to clean this database of your activities from 
time to time.");
+W("You can run <tt>gnunet-directory -k</tt> to remove the information 
collected so far (and to stop tracking).");
 W("Once that database has been cleaned, GNUnet can no longer tell which files 
you inserted, but it can tell you which files are indexed.");
+P();
 W("The reason why GNUnet can not tell you which files were inserted is the 
same reason, why we distinguish between indexing and insertion: deniability.");
 W("The primary use of insertion is to give an adversary no easy way to figure 
out what files are stored on your computer, and that under the assumption that 
the adversary takes full control of you machine.");
 W("Thus, GNUnet was designed to not require any information that would allow 
it to reconstruct the inserted file without the appropriate keyword (read: 
password).");
 W("If the adversary already knows the exact content, it is still possible for 
the adversary that has control of your machine to verify that the content is 
present.");
-W("The best defence against that is to insert the content with a low priority 
and to turn on ACTIVEMIGRATION.");
+W("The best defence against that is to insert the content with a low priority 
and to turn on <tt>ACTIVEMIGRATION</tt>.");
 W("Then you can plausibly claim that the content migrated to your node from 
another peer, and that you had no way of knowing that it was there.");
 W("In either case, how well deniability serves you will depend on your local 
court.");
 W("Since there are countries where breathing can get you into jail, saying 
that you were not able to tell what your computer was storing may not be 
sufficient.");
@@ -151,14 +156,13 @@
 P();
 W("Indexed content is a slightly different story.");
 W("For indexed content, the goal for GNUnet is still to make it difficult for 
the adversary to establish from which machine the content originates 
(anonymity).");
-W("For indexed content GNUnet keeps a list of the indexed files, typically in 
<tt>~/.gnunet/data/afs/database.list</tt>.");
-W("The list is in plaintext, so it is trivial to determine the indexed files 
on a machine -- for both the user and the adversary.");
+W("For indexed content GNUnet keeps links to the indexed files, typically in 
<tt>/var/lib/GNUnet/data/shared/</tt>.");
 W("GNUnet uses the list to locate the block corresponding to a request.");
-W("Do NOT edit the file by hand.");
-W("Use <tt>gnunet-delete</tt> to remove files from the list.");
+W("Do NOT edit the directory by hand.");
+W("Use <tt>gnunet-unindex</tt> to remove files from the directory.");
 P();
-W("Also, do not move indexed files since GNUnet relies on the paths of indexed 
files to be constant.");
-W("If you must move an indexed file, use first <tt>gnunet-delete</tt>, then 
move the file, and then use <tt>gnunet-insert</tt> to re-insert the file.");
+W("Also, do not move or change indexed files since GNUnet relies on the paths 
of indexed files to be constant.");
+W("If you must move an indexed file, use first <tt>gnunet-unindex</tt>, then 
move the file, and then use <tt>gnunet-insert</tt> to re-insert the file.");
 // W("Or, alternatively, implement <tt>gnunet-move</tt> and submit the patch 
:-).");
 
 EP();
@@ -252,7 +256,7 @@
   </tr>
   <tr>
    <th class="tbl"><?php W("Query Format (UI)"); ?></th>
-   <td class="tbl"><?php W("keywords or AFS URIs"); ?></td>
+   <td class="tbl"><?php W("keywords or ECRS URIs"); ?></td>
    <td class="tbl"><?php W("keywords");       ?></td>
    <td class="tbl"><?php W("filename, THEX"); ?></td>
    <td class="tbl"><?php W("filename, SHA");  ?></td>
@@ -295,12 +299,12 @@
 ANCHOR("anonymity"); H3("What do you mean by &#8220;anonymity&#8221;?");
 BP();
 W("Anonymity is the lack of distinction of an individual from a (large) 
group.");
-W("A central goal for GNUnet AFS is to make all users (peers) form a group and 
to make communications in that group anonymous, that is, nobody (but the 
initiator) should be able to tell which of the peers in the group originated 
the message.");
-W("It should be impossible for an adversary to distinguish between the 
originating peer and all other peers.");
-W("In particular, even peers should not be able to recognize from which node 
the message originated.");
+W("A central goal for anonymous file-sharing in GNUnet is to make all users 
(peers) form a group and to make communications in that group anonymous, that 
is, nobody (but the initiator) should be able to tell which of the peers in the 
group originated the message.");
+W("In other words, it should be difficult to impossible for an adversary to 
distinguish between the originating peer and all other peers.");
+W("In particular, even peers should not be able to recognize from which node 
the message originated, after all, the adversary could control one or more of 
the peers.");
 P();
 W("Of course, in practice, it may be possible for a powerful adversary to do 
some analysis and potentially assign higher probabilities for being the 
originator of a message to a subset of the peers.");
-W("AFS tries to make this as hard as possible (see %s).",
+W("The GNUnet anonymity protocol tries to make this as hard as possible (see 
%s).",
   extlink_("download/aff.ps","our paper on anonymity"));
 W("The degree of anonymity (how hard it would be to distinguish an individual 
from the group) in GNUnet depends on the resources (mostly bandwidth) that the 
individual has available to achieve anonymity.");
 P();
@@ -323,7 +327,7 @@
 W("The node increases its trust in nodes that send replies to queries and 
reduces its trust in nodes that ask for content.");
 W("The %s ensures that replies are always correct and can not be made up to 
earn trust without really contributing (see also the %s paper and the %s for 
details).",
   ARRAY(intlink_("encoding.php3","GNUnet encoding"),
-       extlink_("download/esed.ps","ESED"),
+       extlink_("download/ecrs.ps","ECRS"),
        intlink_("encoding.php3","encoding page")));
 
 
@@ -347,50 +351,41 @@
 W("Packets are sent and dropped based on their priority and current load.");
 W("External shapers (like <em>token bucket filter</em>) can&#8217;t make this 
distinction and treat all GNUnet traffic as equal.");
 W("You should set GNUnets internal bandwidth limits to reflect your true 
configuration and what you can afford and <em>not use any external shaping for 
GNUnet</em>.");
-W("It&#8217;s much better to have the limits tight inside GNUnet than outside 
it.");
+W("It&#8217;s much better to have the limits enforced by <tt>gnunetd</tt> than 
by an external mechanism.");
 EP();
 
 ANCHOR("firewall");H3("How do I have to configure my firewall?");
 BP();
 W("GNUnet uses port 2086 by default.");
-W("Configure your packet filter to accept packets to port 2086 if the GNUnet 
background process gnunetd is running on the same machine.");
-W("If your firewall is a NAT box, forward packets to port 2086 to your GNUnet 
machine and tweak the configuration file gnunet.conf (Sections NETWORK, LOAD, 
UDP, TCP and NAT).");
-W("Port 2087 is used for communication between gnunetd and the client tools as 
gnunet-gtk, gnunet-search etc.");
-W("It must not be exposed to the internet.");
+W("Configure your firewall to accept packets to port 2086 for the machine 
running the GNUnet daemon <tt>gnunetd</tt>.");
+W("If your firewall is a NAT box, forward packets to port 2086 to your GNUnet 
machine and tweak the configuration file gnunetd.conf (sections NETWORK, LOAD, 
UDP, TCP and NAT) to use the external IP of the NAT box.");
+W("Port 2087 is used for communication between <tt>gnunetd</tt> and the client 
tools as <tt>gnunet-gtk</tt>, <tt>gnunet-search</tt> etc.");
+W("There is no need to open port 2087 to the rest of the Internet.");
 EP();
 
 ANCHOR("speed"); H3("Isn&#8217;t all this encryption going to make things 
totally slow?");
 BP();
 W("The answer to this is, that encryption is incredibly fast.");
-W("GNUnet uses mostly blowfish, a very fast and secure cipher.");
-W("What really often makes AFS slow are artificial delays that were introduced 
to make timing analysis hard and to group messages into larger packets.");
+W("GNUnet uses mostly AES-256, a very fast and secure cipher.");
+W("What really often makes anonymous file-sharing slow are artificial delays 
that were introduced to make timing analysis hard and to group messages into 
larger packets.");
 W("The best illustration for this is the following timing results obtained by 
inserting and downloading a 3 MB binary from the local host (no real networking 
involved, only loopback).");
 W("Insertion takes (on a Celeron 667, 400 MB RAM):");
 
 P();
 PRE("real    3m38.954s\n" .
-"user    0m2.450s\n" .
-"sys     0m0.410s");
+    "user    0m2.450s\n" .
+    "sys     0m0.410s");
 P();
 W("For the download, it takes:");
 P();
 PRE("real    0m13.796s\n" .
-"user    0m2.150s\n" .
-"sys     0m0.660s");
+    "user    0m2.150s\n" .
+    "sys     0m0.660s");
 
 P();
 W("As you can see, the <em>user</em> CPU usage (how much is actually used) is 
miniscule compared to the <em>real</em> time that it took to download the 
file.");
 W("The real time is longer because the harddrive could not perform the random 
accesses to the GNUnet databases any faster.");
-W("The good news is, that as long as there is a difference between 
<em>real</em> and <em>user</em>, increasing the load on the network will not 
slow GNUnet down (in fact, it may make it faster because anonymity requires us 
to delay messages if the amount of traffic on the network is low).");
-
 P();
-
-W("The same basically applies also for the network load.");
-W("It can take quite a while to download a file from the network, even if the 
connection is 10 MBit, the file may come in at a few kb per second.");
-W("Again, the actual network utilization (at least the part generated by the 
download) will typically be fairly low (except if you are on dialup).");
-
-P();
-
 W("GNUnet thus uses CPU and network resources fairly responsibly.");
 W("The only thing that GNUnet &#8220;wastes&#8221; is time, in some sense, it 
sits idle.");
 W("The reason is, that this makes it harder to correlate actions.");
@@ -398,7 +393,7 @@
 W("Larger delays also allow for more reordering of messages by the individual 
peer.");
 W("GNUnet peers try to maximize bandwidth utility by reordering messages.");
 W("By allowing peers to delay messages, it is easier for them to build more 
efficient messages.");
-W("Once the load in GNUnet goes up, GNUnet will increase its actual 
utilization of resources up to the maximum specified by the user (see 
gnunet.conf).");
+W("Once the load in GNUnet goes up, GNUnet will increase its actual 
utilization of resources up to the maximum specified by the user (see 
gnunetd.conf).");
 W("Thus, in some sense, GNUnet is slow but efficient.");
 
 P();
@@ -440,7 +435,7 @@
 W("Generally, there is the possibility of a known plaintext attack on 
keywords, but since the user has control over the keywords that are associated 
with the content he inserts, the user can take advantage of the same techniques 
used to generate reasonable passwords to defend against such an attack.");
 W("In any event, we are not trying to <i>hide</i> content; thus, unless the 
user is trying to insert information into the network that can only be shared 
with a small group of people, there is no real reason to try to obfuscate the 
content by choosing a difficult keyword anyway.");
 W("Note that it is not necessary to use keywords (or even intelligible 
keywords) at all.");
-W("The file identifiers (two hash codes, filesize and crc) can also be shared 
off-band.");
+W("The file identifiers (two hash codes and filesize) can also be shared 
off-band.");
 P();
 W("Most attacks on anonymity involve a resource battle between the attacker 
and the victim.");
 W("If the attacker has significantly more resources (bandwidth, control over 
Internet routers, many peers), anonymity can theoretically always be broken.");
@@ -457,20 +452,19 @@
 ANCHOR("platform"); H3("On which platforms does GNUnet run?");
 
 BP();
-W("GNUnet is being developed and tested under GNU/Linux for i386.");
-W("The current CVS version and version 0.3.2 and higher have been reported to 
work under Solaris, FreeBSD, NetBSD and OpenBSD.");
-W("Since 0.4.1, GNUnet should also work on big-endian architectures, 0.4.2 has 
been reported to work on Linux/PPC and Solaris.");
-W("GNUnet 0.6.5 has been reported to run successfully on Win32.");
-W("People have reported interest in porting GNUnet to OS X, but we have no 
reports of completely successful efforts for this platform (yet).");
+W("GNUnet is being developed and tested under Debian GNU/Linux for i386.");
+W("We have reports of working versions on FreeBSD, NetBSD, OpenBSD, Solaris 
and OS X.");
+W("GNUnet should work on big-endian architectures, including Linux/PPC.");
+W("GNUnet has been ported to Win32.");
 W("Patches to make it work on other platforms are always appreciated.");
 W("If you had success running GNUnet on any other platform, please report!");
 
 EP();
 
-ANCHOR("hostkey"); H3("CRC error: the deleted hostkey problem.");
+ANCHOR("hostkey"); H3("Checksum error: the deleted hostkey problem.");
 
 BP();
-W("Under certain circumstances, <tt>gnunetd</tt> will print warnings 
indicating CRC errors in messages that were received from other nodes.");
+W("Under certain circumstances, <tt>gnunetd</tt> will print warnings 
indicating checksum errors in messages that were received from other nodes.");
 W("This is most of the time not a bug and not a problem.");
 W("Everything is working ok.");
 W("What has happened most of the time is the following.");
@@ -490,17 +484,16 @@
 
 P();
 
-W("The reason why we can&#8217;t avoid this (ok, we could just not print the 
error message, but that&#8217;s not the point), is that a malicious host could 
always claim to have any address on the internet.");
+W("The reason why we can&#8217;t avoid this (ok, we could just not print the 
error message, but that&#8217;s not the point), is that a malicious host could 
always claim to have any address on the Internet.");
 W("If we have two public keys for the same host, the best we can do is try out 
both.");
 
 P();
 
-W("Checking both is very cheap, and after a while (depending on the timeout 
configured in gnunet.conf), hostkeys will eventually expire.");
+W("Checking both is very cheap, and after a while (depending on the timeout 
configured in gnunetd.conf), hostkeys will eventually expire.");
 
 P();
 
-W("You may also receive messages that will print CRC errors from clients that 
run versions of GNUnet before 0.7.0 (version mismatch).");
-W("Finally, if two nodes simultaneously perform a sessionkey exchange (A sends 
a new key to B and B at the same time sends a new key to A), there might be a 
short period of time where the nodes disagree on which key is the correct one, 
also causing CRC errors (the probability of this happening is very low, and we 
do use a timestamp in the SKEY message and use it to see which key is more 
recent, but there is still a very small probability that both nodes really send 
it at the same point in time).");
+W("You may also receive messages that will result in checksum errors from 
clients that run versions of GNUnet before 0.7.0 (protocol mismatch).");
 
 EP();
 ANCHOR("database"); H3("What is the right database for me?");
@@ -511,25 +504,25 @@
 W("<tt>mysql</tt> has good performance and the database can be repaired from 
internal failures, but its more difficult to install than any of the 
alternatives.");
 
 EP();
-ANCHOR("delete"); H3("<tt>gnunet-delete</tt> behaves in unexpected ways.");
+ANCHOR("delete"); H3("<tt>gnunet-unindex</tt> behaves in unexpected ways.");
 BP();
-W("First of all, many things can go seemingly wrong with 
<tt>gnunet-delete</tt> and one has to understand what exactly 
<tt>gnunet-delete</tt> does to avoid pitfalls.");
-W("The first thing to recall is that <tt>gnunet-delete</tt> only deletes 
blocks from the local database.");
+W("First of all, many things can go seemingly wrong with 
<tt>gnunet-unindex</tt> and one has to understand what exactly 
<tt>gnunet-unindex</tt> does to avoid pitfalls.");
+W("The first thing to recall is that <tt>gnunet-unindex</tt> only unindexes 
blocks from the local database.");
 W("Blocks that have been replicated by other peers are not removed.");
-W("This is why it is possible that a file can still be available after running 
<tt>gnunet-delete</tt>.");
-W("Also <tt>gnunet-delete</tt> does <b>not</b> delete the search-blocks 
associated with keywords.");
+W("This is why it is possible that a file can still be available after running 
<tt>gnunet-unindex</tt>.");
+W("Also <tt>gnunet-unindex</tt> does <b>not</b> unindex the search-blocks 
associated with keywords.");
 W("Thus searching for the file will still list the file as if it was there.");
-W("Part of the reason for not removing the search-blocks is that the keywords 
used when indexing are not known to gnunet-delete.");
+W("Part of the reason for not removing the search-blocks is that the keywords 
used when indexing are not known to <tt>gnunet-unindex</tt>.");
 W("A more elaborate mechanism that uses libextractor to guess which keywords 
could have been used still needs to be implemented.");
 W("In the future we also plan to time-out search-blocks to avoid the 
search-space pollution.");
 P();
-W("Another important aspect of <tt>gnunet-delete</tt> is that it may delete 
blocks <b>shared</b> with other files or within the same file.");
+W("Another important aspect of <tt>gnunet-unindex</tt> is that it may unindex 
blocks <b>shared</b> with other files or within the same file.");
 W("The reason is that blocks of identical content hash to the same identifier 
and can thus not be distinguished by GNUnet.");
 W("For highly structured content it is possible in practice that two blocks 
are identical.");
 W("GNUnet will then share the storage space for these two blocks.");
-W("When deleting a file that contains such shared blocks, GNUnet can currently 
not recognize the sharing and will remove the block even if it is still used in 
another context.");
-W("The resulting inconsistencies can result in warnings from 
<tt>gnunet-delete</tt>, as well as in downloads that do not complete.");
-W("In general, <tt>gnunet-delete</tt> should be used with caution at this 
point.");
+W("When unindexing a file that contains such shared blocks, GNUnet can 
currently not recognize the sharing and will remove the block even if it is 
still used in another context.");
+W("The resulting inconsistencies can result in warnings from 
<tt>gnunet-unindex</tt>, as well as in downloads that do not complete.");
+W("In general, <tt>gnunet-unindex</tt> should be used with caution.");
 
 
 
@@ -704,19 +697,20 @@
 BP();
 W("GNUnet needs keywords such that other users can find the files.");
 W("Typing in lots of keywords is of course a major pain.");
-W("Other systems like Gnutella typically just use the filenames.");
+W("Other systems like gnutella typically just use the filenames.");
 W("Using filenames is not a good solution since they are not always very 
descriptive and/or can be a pain to produce for the content provider in the 
first place.");
 
 P();
 
 W("GNUnet uses a better approach, which is <strong>keyword 
extraction</strong>.");
-W("The library %s was developed for the purpose of extracting keywords from 
arbitrary files. If keywords can easily be extracted from your files, you 
don&#8217;t have to supply keywords by hand.",
+W("The library %s was developed for the purpose of extracting keywords from 
arbitrary files.",
   extlink_("/libextractor/","libextractor"));
-W("libextractor can also use the filename as a source for keywords.");
+W("If keywords can easily be extracted from your files, you don&#8217;t have 
to supply keywords by hand.");
+W("<tt>libextractor</tt> can also use the filename as a source for keywords.");
 
 P();
 
-W("If you have keywords in a file that should be extracted but the file format 
is not supported by libextractor, the API of the library is be simple enough 
that any C hacker who knows the file format should be able to code a plugin 
that will allow you to extract the keywords.");
+W("If you have keywords in a file that should be extracted but the file format 
is not supported by <tt>libextractor</tt>, the API of the library is be simple 
enough that any C hacker who knows the file format should be able to code a 
plugin that will allow you to extract the keywords.");
 W("If you just want filenames, <tt>libextractor</tt> can do those, too.");
 
 EP();





reply via email to

[Prev in Thread] Current Thread [Next in Thread]