Ticket #1400: NEWS.rst

File NEWS.rst, 70.8 KB (added by zooko, at 2011-05-11T16:59:55Z)
Line 
1.. -*- coding: utf-8 -*-
2
3==================================
4User-Visible Changes in Tahoe-LAFS
5==================================
6
7Release 1.8.2 (2011-01-30)
8--------------------------
9
10Compatibility and Dependencies
11''''''''''''''''''''''''''''''
12
13- Tahoe is now compatible with Twisted-10.2 (released last month), as
14  well as with earlier versions. The previous Tahoe-1.8.1 release
15  failed to run against Twisted-10.2, raising an AttributeError on
16  StreamServerEndpointService (`#1286`_)
17- Tahoe now depends upon the "mock" testing library, and the foolscap
18  dependency was raised to 0.6.1 . It no longer requires pywin32
19  (which was used only on windows). Future developers should note that
20  reactor.spawnProcess and derivatives may no longer be used inside
21  Tahoe code.
22
23Other Changes
24'''''''''''''
25
26- the default reserved_space value for new storage nodes is 1 GB
27  (`#1208`_)
28- documentation is now in reStructuredText (.rst) format
29- "tahoe cp" should now handle non-ASCII filenames
30- the unmaintained Mac/Windows GUI applications have been removed
31  (`#1282`_)
32- tahoe processes should appear in top and ps as "tahoe", not
33  "python", on some unix platforms. (`#174`_)
34- "tahoe debug trial" can be used to run the test suite (`#1296`_)
35- the SFTP frontend now reports unknown sizes as "0" instead of "?",
36  to improve compatibility with clients like FileZilla (`#1337`_)
37- "tahoe --version" should now report correct values in situations
38  where 1.8.1 might have been wrong (`#1287`_)
39
40.. _`#174`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/174
41.. _`#1208`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1208
42.. _`#1282`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1282
43.. _`#1286`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1286
44.. _`#1287`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1287
45.. _`#1296`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1296
46.. _`#1337`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1337
47
48
49Release 1.8.1 (2010-10-28)
50--------------------------
51
52Bugfixes and Improvements
53'''''''''''''''''''''''''
54
55- Allow the repairer to improve the health of a file by uploading some
56  shares, even if it cannot achieve the configured happiness
57  threshold. This fixes a regression introduced between v1.7.1 and
58  v1.8.0. (`#1212`_)
59- Fix a memory leak in the ResponseCache which is used during mutable
60  file/directory operations. (`#1045`_)
61- Fix a regression and add a performance improvement in the
62  downloader.  This issue caused repair to fail in some special
63  cases. (`#1223`_)
64- Fix a bug that caused 'tahoe cp' to fail for a grid-to-grid copy
65  involving a non-ASCII filename. (`#1224`_)
66- Fix a rarely-encountered bug involving printing large strings to the
67  console on Windows. (`#1232`_)
68- Perform ~ expansion in the --exclude-from filename argument to
69  'tahoe backup'. (`#1241`_)
70- The CLI's 'tahoe mv' and 'tahoe ln' commands previously would try to
71  use an HTTP proxy if the HTTP_PROXY environment variable was set.
72  These now always connect directly to the WAPI, thus avoiding giving
73  caps to the HTTP proxy (and also avoiding failures in the case that
74  the proxy is failing or requires authentication). (`#1253`_)
75- The CLI now correctly reports failure in the case that 'tahoe mv'
76  fails to unlink the file from its old location. (`#1255`_)
77- 'tahoe start' now gives a more positive indication that the node has
78  started. (`#71`_)
79- The arguments seen by 'ps' or other tools for node processes are now
80  more useful (in particular, they include the path of the 'tahoe'
81  script, rather than an obscure tool named 'twistd'). (`#174`_)
82
83Removed Features
84''''''''''''''''
85
86- The tahoe start/stop/restart and node creation commands no longer
87  accept the -m or --multiple option, for consistency between
88  platforms.  (`#1262`_)
89
90Packaging
91'''''''''
92
93- We now host binary packages so that users on certain operating
94  systems can install without having a compiler.
95  <http://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-eggs/README.html>
96- Use a newer version of a dependency if needed, even if an older
97  version is installed. This would previously cause a VersionConflict
98  error. (`#1190`_)
99- Use a precompiled binary of a dependency if one with a sufficiently
100  high version number is available, instead of attempting to compile
101  the dependency from source, even if the source version has a higher
102  version number. (`#1233`_)
103
104Documentation
105'''''''''''''
106
107- All current documentation in .txt format has been converted to .rst
108  format. (`#1225`_)
109- Added docs/backdoors.rst declaring that we won't add backdoors to
110  Tahoe-LAFS, or add anything to facilitate government access to data.
111  (`#1216`_)
112
113.. _`#71`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/71
114.. _`#174`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/174
115.. _`#1212`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1212
116.. _`#1045`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1045
117.. _`#1190`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1190
118.. _`#1216`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1216
119.. _`#1223`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1223
120.. _`#1224`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1224
121.. _`#1225`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1225
122.. _`#1232`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1232
123.. _`#1233`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1233
124.. _`#1241`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1241
125.. _`#1253`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1253
126.. _`#1255`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1255
127.. _`#1262`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1262
128
129
130Release 1.8.0 (2010-09-23)
131--------------------------
132
133New Features
134''''''''''''
135
136- A completely new downloader which improves performance and
137  robustness of immutable-file downloads. It uses the fastest K
138  servers to download the data in K-way parallel. It automatically
139  fails over to alternate servers if servers fail in mid-download. It
140  allows seeking to arbitrary locations in the file (the previous
141  downloader which would only read the entire file sequentially from
142  beginning to end). It minimizes unnecessary round trips and
143  unnecessary bytes transferred to improve performance. It sends
144  requests to fewer servers to reduce the load on servers (the
145  previous one would send a small request to every server for every
146  download) (`#287`_, `#288`_, `#448`_, `#798`_, `#800`_, `#990`_,
147  `#1170`_, `#1191`_)
148- Non-ASCII command-line arguments and non-ASCII outputs now work on
149  Windows. In addition, the command-line tool now works on 64-bit
150  Windows. (`#1074`_)
151
152Bugfixes and Improvements
153'''''''''''''''''''''''''
154
155- Document and clean up the command-line options for specifying the
156  node's base directory. (`#188`_, `#706`_, `#715`_, `#772`_,
157  `#1108`_)
158- The default node directory for Windows is ".tahoe" in the user's
159  home directory, the same as on other platforms. (`#890`_)
160- Fix a case in which full cap URIs could be logged. (`#685`_,
161  `#1155`_)
162- Fix bug in WUI in Python 2.5 when the system clock is set back to
163  1969. Now you can use Tahoe-LAFS with Python 2.5 and set your system
164  clock to 1969 and still use the WUI. (`#1055`_)
165- Many improvements in code organization, tests, logging,
166  documentation, and packaging. (`#983`_, `#1074`_, `#1108`_,
167  `#1127`_, `#1129`_, `#1131`_, `#1166`_, `#1175`_)
168
169Dependency Updates
170''''''''''''''''''
171
172- on x86 and x86-64 platforms, pycryptopp >= 0.5.20
173- pycrypto 2.2 is excluded due to a bug
174
175.. _`#188`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/188
176.. _`#287`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/287
177.. _`#288`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/288
178.. _`#448`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/448
179.. _`#685`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/685
180.. _`#706`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/706
181.. _`#715`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/715
182.. _`#772`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/772
183.. _`#798`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/798
184.. _`#800`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/800
185.. _`#890`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/890
186.. _`#983`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/983
187.. _`#990`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/990
188.. _`#1055`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1055
189.. _`#1074`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1074
190.. _`#1108`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1108
191.. _`#1155`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1155
192.. _`#1170`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1170
193.. _`#1191`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1191
194.. _`#1127`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1127
195.. _`#1129`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1129
196.. _`#1131`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1131
197.. _`#1166`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1166
198.. _`#1175`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1175
199
200Release 1.7.1 (2010-07-18)
201--------------------------
202
203Bugfixes and Improvements
204'''''''''''''''''''''''''
205
206- Fix bug in which uploader could fail with AssertionFailure or report
207  that it had achieved servers-of-happiness when it hadn't. (`#1118`_)
208- Fix bug in which servers could get into a state where they would
209  refuse to accept shares of a certain file (`#1117`_)
210- Add init scripts for managing the gateway server on Debian/Ubuntu
211  (`#961`_)
212- Fix bug where server version number was always 0 on the welcome page
213  (`#1067`_)
214- Add new command-line command "tahoe unlink" as a synonym for "tahoe
215  rm" (`#776`_)
216- The FTP frontend now encrypts its temporary files, protecting their
217  contents from an attacker who is able to read the disk. (`#1083`_)
218- Fix IP address detection on FreeBSD 7, 8, and 9 (`#1098`_)
219- Fix minor layout issue in the Web User Interface with Internet
220  Explorer (`#1097`_)
221- Fix rarely-encountered incompatibility between Twisted logging
222  utility and the new unicode support added in v1.7.0 (`#1099`_)
223- Forward-compatibility improvements for non-ASCII caps (`#1051`_)
224
225Code improvements
226'''''''''''''''''
227
228- Simplify and tidy-up directories, unicode support, test code
229  (`#923`_, `#967`_, `#1072`_)
230
231.. _`#776`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/776
232.. _`#923`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/923
233.. _`#961`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/961
234.. _`#967`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/967
235.. _`#1051`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1051
236.. _`#1067`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1067
237.. _`#1072`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1072
238.. _`#1083`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1083
239.. _`#1097`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1097
240.. _`#1098`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1098
241.. _`#1099`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1099
242.. _`#1117`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1117
243.. _`#1118`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1118
244
245
246Release 1.7.0 (2010-06-18)
247--------------------------
248
249New Features
250''''''''''''
251
252- SFTP support (`#1037`_)
253  Your Tahoe-LAFS gateway now acts like a full-fledged SFTP server. It
254  has been tested with sshfs to provide a virtual filesystem in Linux.
255  Many users have asked for this feature.  We hope that it serves them
256  well! See the docs/frontends/FTP-and-SFTP.txt document to get
257  started.
258- support for non-ASCII character encodings (`#534`_)
259  Tahoe-LAFS now correctly handles filenames containing non-ASCII
260  characters on all supported platforms:
261
262 - when reading files in from the local filesystem (such as when you
263   run "tahoe backup" to back up your local files to a Tahoe-LAFS
264   grid);
265 - when writing files out to the local filesystem (such as when you
266   run "tahoe cp -r" to recursively copy files out of a Tahoe-LAFS
267   grid);
268 - when displaying filenames to the terminal (such as when you run
269   "tahoe ls"), subject to limitations of the terminal and locale;
270 - when parsing command-line arguments, except on Windows.
271
272- Servers of Happiness (`#778`_)
273  Tahoe-LAFS now measures during immutable file upload to see how well
274  distributed it is across multiple servers. It aborts the upload if
275  the pieces of the file are not sufficiently well-distributed.
276  This behavior is controlled by a configuration parameter called
277  "servers of happiness". With the default settings for its erasure
278  coding, Tahoe-LAFS generates 10 shares for each file, such that any
279  3 of those shares are sufficient to recover the file. The default
280  value of "servers of happiness" is 7, which means that Tahoe-LAFS
281  will guarantee that there are at least 7 servers holding some of the
282  shares, such that any 3 of those servers can completely recover your
283  file.  The new upload code also distributes the shares better than the
284  previous version in some cases and takes better advantage of
285  pre-existing shares (when a file has already been previously
286  uploaded). See the architecture.txt document [3] for details.
287
288Bugfixes and Improvements
289'''''''''''''''''''''''''
290
291- Premature abort of upload if some shares were already present and
292  some servers fail. (`#608`_)
293- python ./setup.py install -- can't create or remove files in install
294  directory. (`#803`_)
295- Network failure => internal TypeError. (`#902`_)
296- Install of Tahoe on CentOS 5.4. (`#933`_)
297- CLI option --node-url now supports https url. (`#1028`_)
298- HTML/CSS template files were not correctly installed under
299  Windows. (`#1033`_)
300- MetadataSetter does not enforce restriction on setting "tahoe"
301  subkeys.  (`#1034`_)
302- ImportError: No module named
303  setuptools_darcs.setuptools_darcs. (`#1054`_)
304- Renamed Title in xhtml files. (`#1062`_)
305- Increase Python version dependency to 2.4.4, to avoid a critical
306  CPython security bug. (`#1066`_)
307- Typo correction for the munin plugin tahoe_storagespace. (`#968`_)
308- Fix warnings found by pylint. (`#973`_)
309- Changing format of some documentation files. (`#1027`_)
310- the misc/ directory was tied up. (`#1068`_)
311- The 'ctime' and 'mtime' metadata fields are no longer written except
312  by "tahoe backup". (`#924`_)
313- Unicode filenames in Tahoe-LAFS directories are normalized so that
314  names that differ only in how accents are encoded are treated as the
315  same. (`#1076`_)
316- Various small improvements to documentation. (`#937`_, `#911`_,
317  `#1024`_, `#1082`_)
318
319Removals
320''''''''
321
322- The 'tahoe debug consolidate' subcommand (for converting old
323  allmydata Windows client backups to a newer format) has been
324  removed.
325
326Dependency Updates
327''''''''''''''''''
328
329- the Python version dependency is raised to 2.4.4 in some cases
330  (2.4.3 for Redhat-based Linux distributions, 2.4.2 for UCS-2 builds)
331  (`#1066`_)
332- pycrypto >= 2.0.1
333- pyasn1 >= 0.0.8a
334- mock (only required by unit tests)
335
336.. _`#534`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/534
337.. _`#608`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/608
338.. _`#778`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/778
339.. _`#803`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/803
340.. _`#902`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/902
341.. _`#911`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/911
342.. _`#924`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/924
343.. _`#937`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/937
344.. _`#933`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/933
345.. _`#968`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/968
346.. _`#973`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/973
347.. _`#1024`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1024
348.. _`#1027`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1027
349.. _`#1028`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1028
350.. _`#1033`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1033
351.. _`#1034`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1034
352.. _`#1037`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1037
353.. _`#1054`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1054
354.. _`#1062`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1062
355.. _`#1066`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1066
356.. _`#1068`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1068
357.. _`#1076`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1076
358.. _`#1082`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1082
359
360
361Release 1.6.1 (2010-02-27)
362--------------------------
363
364Bugfixes
365''''''''
366
367- Correct handling of Small Immutable Directories
368
369  Immutable directories can now be deep-checked and listed in the web
370  UI in all cases. (In v1.6.0, some operations, such as deep-check, on
371  a directory graph that included very small immutable directories,
372  would result in an exception causing the whole operation to abort.)
373  (`#948`_)
374
375Usability Improvements
376''''''''''''''''''''''
377
378- Improved user interface messages and error reporting. (`#681`_,
379  `#837`_, `#939`_)
380- The timeouts for operation handles have been greatly increased, so
381  that you can view the results of an operation up to 4 days after it
382  has completed. After viewing them for the first time, the results
383  are retained for a further day. (`#577`_)
384
385Release 1.6.0 (2010-02-01)
386--------------------------
387
388New Features
389''''''''''''
390
391- Immutable Directories
392
393  Tahoe-LAFS can now create and handle immutable
394  directories. (`#607`_, `#833`_, `#931`_) These are read just like
395  normal directories, but are "deep-immutable", meaning that all their
396  children (and everything reachable from those children) must be
397  immutable objects (i.e. immutable or literal files, and other
398  immutable directories).
399
400  These directories must be created in a single webapi call that
401  provides all of the children at once. (Since they cannot be changed
402  after creation, the usual create/add/add sequence cannot be used.)
403  They have URIs that start with "URI:DIR2-CHK:" or "URI:DIR2-LIT:",
404  and are described on the human-facing web interface (aka the "WUI")
405  with a "DIR-IMM" abbreviation (as opposed to "DIR" for the usual
406  read-write directories and "DIR-RO" for read-only directories).
407
408  Tahoe-LAFS releases before 1.6.0 cannot read the contents of an
409  immutable directory. 1.5.0 will tolerate their presence in a
410  directory listing (and display it as "unknown"). 1.4.1 and earlier
411  cannot tolerate them: a DIR-IMM child in any directory will prevent
412  the listing of that directory.
413
414  Immutable directories are repairable, just like normal immutable
415  files.
416
417  The webapi "POST t=mkdir-immutable" call is used to create immutable
418  directories. See docs/frontends/webapi.txt for details.
419
420- "tahoe backup" now creates immutable directories, backupdb has
421  dircache
422
423  The "tahoe backup" command has been enhanced to create immutable
424  directories (in previous releases, it created read-only mutable
425  directories) (`#828`_). This is significantly faster, since it does
426  not need to create an RSA keypair for each new directory. Also
427  "DIR-IMM" immutable directories are repairable, unlike "DIR-RO"
428  read-only mutable directories at present. (A future Tahoe-LAFS
429  release should also be able to repair DIR-RO.)
430
431  In addition, the backupdb (used by "tahoe backup" to remember what
432  it has already copied) has been enhanced to store information about
433  existing immutable directories. This allows it to re-use directories
434  that have moved but still contain identical contents, or that have
435  been deleted and later replaced. (The 1.5.0 "tahoe backup" command
436  could only re-use directories that were in the same place as they
437  were in the immediately previous backup.)  With this change, the
438  backup process no longer needs to read the previous snapshot out of
439  the Tahoe-LAFS grid, reducing the network load
440  considerably. (`#606`_)
441
442  A "null backup" (in which nothing has changed since the previous
443  backup) will require only two Tahoe-side operations: one to add an
444  Archives/$TIMESTAMP entry, and a second to update the Latest/
445  link. On the local disk side, it will readdir() all your local
446  directories and stat() all your local files.
447
448  If you've been using "tahoe backup" for a while, you will notice
449  that your first use of it after upgrading to 1.6.0 may take a long
450  time: it must create proper immutable versions of all the old
451  read-only mutable directories. This process won't take as long as
452  the initial backup (where all the file contents had to be uploaded
453  too): it will require time proportional to the number and size of
454  your directories. After this initial pass, all subsequent passes
455  should take a tiny fraction of the time.
456
457  As noted above, Tahoe-LAFS versions earlier than 1.5.0 cannot list a
458  directory containing an immutable subdirectory. Tahoe-LAFS versions
459  earlier than 1.6.0 cannot read the contents of an immutable
460  directory.
461
462  The "tahoe backup" command has been improved to skip over unreadable
463  objects (like device files, named pipes, and files with permissions
464  that prevent the command from reading their contents), instead of
465  throwing an exception and terminating the backup process. It also
466  skips over symlinks, because these cannot be represented faithfully
467  in the Tahoe-side filesystem. A warning message will be emitted each
468  time something is skipped. (`#729`_, `#850`_, `#641`_)
469
470- "create-node" command added, "create-client" now implies
471  --no-storage
472
473  The basic idea behind Tahoe-LAFS's client+server and client-only
474  processes is that you are creating a general-purpose Tahoe-LAFS
475  "node" process, which has several components that can be
476  activated. Storage service is one of these optional components, as
477  is the Helper, FTP server, and SFTP server. Web gateway
478  functionality is nominally on this list, but it is always active; a
479  future release will make it optional. There are three special
480  purpose servers that can't currently be run as a component in a
481  node: introducer, key-generator, and stats-gatherer.
482
483  So now "tahoe create-node" will create a Tahoe-LAFS node process,
484  and after creation you can edit its tahoe.cfg to enable or disable
485  the desired services. It is a more general-purpose replacement for
486  "tahoe create-client".  The default configuration has storage
487  service enabled. For convenience, the "--no-storage" argument makes
488  a tahoe.cfg file that disables storage service. (`#760`_)
489
490  "tahoe create-client" has been changed to create a Tahoe-LAFS node
491  without a storage service. It is equivalent to "tahoe create-node
492  --no-storage". This helps to reduce the confusion surrounding the
493  use of a command with "client" in its name to create a storage
494  *server*. Use "tahoe create-client" to create a purely client-side
495  node. If you want to offer storage to the grid, use "tahoe
496  create-node" instead.
497
498  In the future, other services will be added to the node, and they
499  will be controlled through options in tahoe.cfg . The most important
500  of these services may get additional --enable-XYZ or --disable-XYZ
501  arguments to "tahoe create-node".
502
503- Performance Improvements
504
505  Download of immutable files begins as soon as the downloader has
506  located the K necessary shares (`#928`_, `#287`_). In both the
507  previous and current releases, a downloader will first issue queries
508  to all storage servers on the grid to locate shares before it begins
509  downloading the shares. In previous releases of Tahoe-LAFS, download
510  would not begin until all storage servers on the grid had replied to
511  the query, at which point K shares would be chosen for download from
512  among the shares that were located. In this release, download begins
513  as soon as any K shares are located. This means that downloads start
514  sooner, which is particularly important if there is a server on the
515  grid that is extremely slow or even hung in such a way that it will
516  never respond. In previous releases such a server would have a
517  negative impact on all downloads from that grid. In this release,
518  such a server will have no impact on downloads, as long as K shares
519  can be found on other, quicker, servers.  This also means that
520  downloads now use the "best-alacrity" servers that they talk to, as
521  measured by how quickly the servers reply to the initial query. This
522  might cause downloads to go faster, especially on grids with
523  heterogeneous servers or geographical dispersion.
524
525Minor Changes
526'''''''''''''
527
528- The webapi acquired a new "t=mkdir-with-children" command, to create
529  and populate a directory in a single call. This is significantly
530  faster than using separate "t=mkdir" and "t=set-children" operations
531  (it uses one gateway-to-grid roundtrip, instead of three or
532  four). (`#533`_)
533
534- The t=set-children (note the hyphen) operation is now documented in
535  docs/frontends/webapi.txt, and is the new preferred spelling of the
536  old t=set_children (with an underscore). The underscore version
537  remains for backwards compatibility. (`#381`_, `#927`_)
538
539- The tracebacks produced by errors in CLI tools should now be in
540  plain text, instead of HTML (which is unreadable outside of a
541  browser). (`#646`_)
542
543- The [storage]reserved_space configuration knob (which causes the
544  storage server to refuse shares when available disk space drops
545  below a threshold) should work on Windows now, not just
546  UNIX. (`#637`_)
547
548- "tahoe cp" should now exit with status "1" if it cannot figure out a
549  suitable target filename, such as when you copy from a bare
550  filecap. (`#761`_)
551
552- "tahoe get" no longer creates a zero-length file upon
553  error. (`#121`_)
554
555- "tahoe ls" can now list single files. (`#457`_)
556
557- "tahoe deep-check --repair" should tolerate repair failures now,
558  instead of halting traversal. (`#874`_, `#786`_)
559
560- "tahoe create-alias" no longer corrupts the aliases file if it had
561  previously been edited to have no trailing newline. (`#741`_)
562
563- Many small packaging improvements were made to facilitate the
564  "tahoe-lafs" package being included in Ubuntu. Several mac/win32
565  binary libraries were removed, some figleaf code-coverage files were
566  removed, a bundled copy of darcsver-1.2.1 was removed, and
567  additional licensing text was added.
568
569- Several DeprecationWarnings for python2.6 were silenced. (`#859`_)
570
571- The checker --add-lease option would sometimes fail for shares
572  stored on old (Tahoe v1.2.0) servers. (`#875`_)
573
574- The documentation for installing on Windows (docs/quickstart.rst)
575  has been improved. (`#773`_)
576
577For other changes not mentioned here, see
578<http://tahoe-lafs.org/trac/tahoe/query?milestone=1.6.0&keywords=!~news-done>.
579To include the tickets mentioned above, go to
580<http://tahoe-lafs.org/trac/tahoe/query?milestone=1.6.0>.
581
582.. _`#121`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/121
583.. _`#287`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/287
584.. _`#381`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/381
585.. _`#457`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/457
586.. _`#533`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/533
587.. _`#577`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/577
588.. _`#606`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/606
589.. _`#607`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/607
590.. _`#637`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/637
591.. _`#641`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/641
592.. _`#646`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/646
593.. _`#681`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/681
594.. _`#729`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/729
595.. _`#741`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/741
596.. _`#760`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/760
597.. _`#761`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/761
598.. _`#768`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/768
599.. _`#773`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/773
600.. _`#786`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/786
601.. _`#828`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/828
602.. _`#833`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/833
603.. _`#859`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/859
604.. _`#874`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/874
605.. _`#875`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/875
606.. _`#931`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/931
607.. _`#837`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/837
608.. _`#850`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/850
609.. _`#927`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/927
610.. _`#928`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/928
611.. _`#939`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/939
612.. _`#948`: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/948
613
614Release 1.5.0 (2009-08-01)
615--------------------------
616
617Improvements
618''''''''''''
619
620- Uploads of immutable files now use pipelined writes, improving
621  upload speed slightly (10%) over high-latency connections. (`#392`_)
622
623- Processing large directories has been sped up, by removing a O(N^2)
624  algorithm from the dirnode decoding path and retaining unmodified
625  encrypted entries.  (`#750`_, `#752`_)
626
627- The human-facing web interface (aka the "WUI") received a
628  significant CSS makeover by Kevin Reid, making it much prettier and
629  easier to read. The WUI "check" and "deep-check" forms now include a
630  "Renew Lease" checkbox, mirroring the CLI --add-lease option, so
631  leases can be added or renewed from the web interface.
632
633- The CLI "tahoe mv" command now refuses to overwrite
634  directories. (`#705`_)
635
636- The CLI "tahoe webopen" command, when run without arguments, will
637  now bring up the "Welcome Page" (node status and mkdir/upload
638  forms).
639
640- The 3.5MB limit on mutable files was removed, so it should be
641  possible to upload arbitrarily-sized mutable files. Note, however,
642  that the data format and algorithm remains the same, so using
643  mutable files still requires bandwidth, computation, and RAM in
644  proportion to the size of the mutable file.  (`#694`_)
645
646- This version of Tahoe-LAFS will tolerate directory entries that
647  contain filecap formats which it does not recognize: files and
648  directories from the future.  This should improve the user
649  experience (for 1.5.0 users) when we add new cap formats in the
650  future. Previous versions would fail badly, preventing the user from
651  seeing or editing anything else in those directories. These
652  unrecognized objects can be renamed and deleted, but obviously not
653  read or written. Also they cannot generally be copied. (`#683`_)
654
655Bugfixes
656''''''''
657
658- deep-check-and-repair now tolerates read-only directories, such as
659  the ones produced by the "tahoe backup" CLI command. Read-only
660  directories and mutable files are checked, but not
661  repaired. Previous versions threw an exception when attempting the
662  repair and failed to process the remaining contents. We cannot yet
663  repair these read-only objects, but at least this version allows the
664  rest of the check+repair to proceed. (`#625`_)
665
666- A bug in 1.4.1 which caused a server to be listed multiple times
667  (and frequently broke all connections to that server) was
668  fixed. (`#653`_)
669
670- The plaintext-hashing code was removed from the Helper interface,
671  removing the Helper's ability to mount a
672  partial-information-guessing attack. (`#722`_)
673
674Platform/packaging changes
675''''''''''''''''''''''''''
676
677- Tahoe-LAFS now runs on NetBSD, OpenBSD, ArchLinux, and NixOS, and on
678  an embedded system based on an ARM CPU running at 266 MHz.
679
680- Unit test timeouts have been raised to allow the tests to complete
681  on extremely slow platforms like embedded ARM-based NAS boxes, which
682  may take several hours to run the test suite. An ARM-specific
683  data-corrupting bug in an older version of Crypto++ (5.5.2) was
684  identified: ARM-users are encouraged to use recent
685  Crypto++/pycryptopp which avoids this problem.
686
687- Tahoe-LAFS now requires a SQLite library, either the sqlite3 that
688  comes built-in with python2.5/2.6, or the add-on pysqlite2 if you're
689  using python2.4. In the previous release, this was only needed for
690  the "tahoe backup" command: now it is mandatory.
691
692- Several minor documentation updates were made.
693
694- To help get Tahoe-LAFS into Linux distributions like Fedora and
695  Debian, packaging improvements are being made in both Tahoe-LAFS and
696  related libraries like pycryptopp and zfec.
697
698- The Crypto++ library included in the pycryptopp package has been
699  upgraded to version 5.6.0 of Crypto++, which includes a more
700  efficient implementation of SHA-256 in assembly for x86 or amd64
701  architectures.
702
703dependency updates
704''''''''''''''''''
705
706- foolscap-0.4.1
707- no python-2.4.0 or 2.4.1 (2.4.2 is good) (they contained a bug in base64.b32decode)
708- avoid python-2.6 on windows with mingw: compiler issues
709- python2.4 requires pysqlite2 (2.5,2.6 does not)
710- no python-3.x
711- pycryptopp-0.5.15
712
713Release 1.4.1 (2009-04-13)
714--------------------------
715
716Garbage Collection
717''''''''''''''''''
718
719- The big feature for this release is the implementation of garbage
720  collection, allowing Tahoe storage servers to delete shares for old
721  deleted files. When enabled, this uses a "mark and sweep" process:
722  clients are responsible for updating the leases on their shares
723  (generally by running "tahoe deep-check --add-lease"), and servers
724  are allowed to delete any share which does not have an up-to-date
725  lease. The process is described in detail in
726  docs/garbage-collection.txt .
727
728  The server must be configured to enable garbage-collection, by
729  adding directives to the [storage] section that define an age limit
730  for shares. The default configuration will not delete any shares.
731
732  Both servers and clients should be upgraded to this release to make
733  the garbage-collection as pleasant as possible. 1.2.0 servers have
734  code to perform the update-lease operation but it suffers from a
735  fatal bug, while 1.3.0 servers have update-lease but will return an
736  exception for unknown storage indices, causing clients to emit an
737  Incident for each exception, slowing the add-lease process down to a
738  crawl. 1.1.0 servers did not have the add-lease operation at all.
739
740Security/Usability Problems Fixed
741'''''''''''''''''''''''''''''''''
742
743- A super-linear algorithm in the Merkle Tree code was fixed, which
744  previously caused e.g. download of a 10GB file to take several hours
745  before the first byte of plaintext could be produced. The new
746  "alacrity" is about 2 minutes. A future release should reduce this
747  to a few seconds by fixing ticket `#442`_.
748
749- The previous version permitted a small timing attack (due to our use
750  of strcmp) against the write-enabler and lease-renewal/cancel
751  secrets. An attacker who could measure response-time variations of
752  approximatly 3ns against a very noisy background time of about 15ms
753  might be able to guess these secrets. We do not believe this attack
754  was actually feasible. This release closes the attack by first
755  hashing the two strings to be compared with a random secret.
756
757webapi changes
758''''''''''''''
759
760- In most cases, HTML tracebacks will only be sent if an "Accept:
761  text/html" header was provided with the HTTP request. This will
762  generally cause browsers to get an HTMLized traceback but send
763  regular text/plain tracebacks to non-browsers (like the CLI
764  clients). More errors have been mapped to useful HTTP error codes.
765
766- The streaming webapi operations (deep-check and manifest) now have a
767  way to indicate errors (an output line that starts with "ERROR"
768  instead of being legal JSON). See docs/frontends/webapi.txt for
769  details.
770
771- The storage server now has its own status page (at /storage), linked
772  from the Welcome page. This page shows progress and results of the
773  two new share-crawlers: one which merely counts shares (to give an
774  estimate of how many files/directories are being stored in the
775  grid), the other examines leases and reports how much space would be
776  freed if GC were enabled. The page also shows how much disk space is
777  present, used, reserved, and available for the Tahoe server, and
778  whether the server is currently running in "read-write" mode or
779  "read-only" mode.
780
781- When a directory node cannot be read (perhaps because of insufficent
782  shares), a minimal webapi page is created so that the "more-info"
783  links (including a Check/Repair operation) will still be accessible.
784
785- A new "reliability" page was added, with the beginnings of work on a
786  statistical loss model. You can tell this page how many servers you
787  are using and their independent failure probabilities, and it will
788  tell you the likelihood that an arbitrary file will survive each
789  repair period. The "numpy" package must be installed to access this
790  page. A partial paper, written by Shawn Willden, has been added to
791  docs/proposed/lossmodel.lyx .
792
793CLI changes
794'''''''''''
795
796- "tahoe check" and "tahoe deep-check" now accept an "--add-lease"
797  argument, to update a lease on all shares. This is the "mark" side
798  of garbage collection.
799
800- In many cases, CLI error messages have been improved: the ugly
801  HTMLized traceback has been replaced by a normal python traceback.
802
803- "tahoe deep-check" and "tahoe manifest" now have better error
804  reporting.  "tahoe cp" is now non-verbose by default.
805
806- "tahoe backup" now accepts several "--exclude" arguments, to ignore
807  certain files (like editor temporary files and version-control
808  metadata) during backup.
809
810- On windows, the CLI now accepts local paths like "c:\dir\file.txt",
811  which previously was interpreted as a Tahoe path using a "c:" alias.
812
813- The "tahoe restart" command now uses "--force" by default (meaning
814  it will start a node even if it didn't look like there was one
815  already running).
816
817- The "tahoe debug consolidate" command was added. This takes a series
818  of independent timestamped snapshot directories (such as those
819  created by the allmydata.com windows backup program, or a series of
820  "tahoe cp -r" commands) and creates new snapshots that used shared
821  read-only directories whenever possible (like the output of "tahoe
822  backup"). In the most common case (when the snapshots are fairly
823  similar), the result will use significantly fewer directories than
824  the original, allowing "deep-check" and similar tools to run much
825  faster. In some cases, the speedup can be an order of magnitude or
826  more.  This tool is still somewhat experimental, and only needs to
827  be run on large backups produced by something other than "tahoe
828  backup", so it was placed under the "debug" category.
829
830- "tahoe cp -r --caps-only tahoe:dir localdir" is a diagnostic tool
831  which, instead of copying the full contents of files into the local
832  directory, merely copies their filecaps. This can be used to verify
833  the results of a "consolidation" operation.
834
835other fixes
836'''''''''''
837
838- The codebase no longer rauses RuntimeError as a kind of
839  assert(). Specific exception classes were created for each previous
840  instance of RuntimeError.
841
842 -Many unit tests were changed to use a non-network test harness,
843  speeding them up considerably.
844
845- Deep-traversal operations (manifest and deep-check) now walk
846  individual directories in alphabetical order. Occasional turn breaks
847  are inserted to prevent a stack overflow when traversing directories
848  with hundreds of entries.
849
850- The experimental SFTP server had its path-handling logic changed
851  slightly, to accomodate more SFTP clients, although there are still
852  issues (`#645`_).
853
854
855Release 1.3.0 (2009-02-13)
856--------------------------
857
858Checker/Verifier/Repairer
859'''''''''''''''''''''''''
860
861- The primary focus of this release has been writing a checker /
862  verifier / repairer for files and directories.  "Checking" is the
863  act of asking storage servers whether they have a share for the
864  given file or directory: if there are not enough shares available,
865  the file or directory will be unrecoverable. "Verifying" is the act
866  of downloading and cryptographically asserting that the server's
867  share is undamaged: it requires more work (bandwidth and CPU) than
868  checking, but can catch problems that simple checking
869  cannot. "Repair" is the act of replacing missing or damaged shares
870  with new ones.
871
872- This release includes a full checker, a partial verifier, and a
873  partial repairer. The repairer is able to handle missing shares: new
874  shares are generated and uploaded to make up for the missing
875  ones. This is currently the best application of the repairer: to
876  replace shares that were lost because of server departure or
877  permanent drive failure.
878
879- The repairer in this release is somewhat able to handle corrupted
880  shares. The limitations are:
881
882 - Immutable verifier is incomplete: not all shares are used, and not
883   all fields of those shares are verified. Therefore the immutable
884   verifier has only a moderate chance of detecting corrupted shares.
885 - The mutable verifier is mostly complete: all shares are examined,
886   and most fields of the shares are validated.
887 - The storage server protocol offers no way for the repairer to
888   replace or delete immutable shares. If corruption is detected, the
889   repairer will upload replacement shares to other servers, but the
890   corrupted shares will be left in place.
891 - read-only directories and read-only mutable files must be repaired
892   by someone who holds the write-cap: the read-cap is
893   insufficient. Moreover, the deep-check-and-repair operation will
894   halt with an error if it attempts to repair one of these read-only
895   objects.
896 - Some forms of corruption can cause both download and repair
897   operations to fail. A future release will fix this, since download
898   should be tolerant of any corruption as long as there are at least
899   'k' valid shares, and repair should be able to fix any file that is
900   downloadable.
901
902- If the downloader, verifier, or repairer detects share corruption,
903  the servers which provided the bad shares will be notified (via a
904  file placed in the BASEDIR/storage/corruption-advisories directory)
905  so their operators can manually delete the corrupted shares and
906  investigate the problem. In addition, the "incident gatherer"
907  mechanism will automatically report share corruption to an incident
908  gatherer service, if one is configured. Note that corrupted shares
909  indicate hardware failures, serious software bugs, or malice on the
910  part of the storage server operator, so a corrupted share should be
911  considered highly unusual.
912
913- By periodically checking/repairing all files and directories,
914  objects in the Tahoe filesystem remain resistant to recoverability
915  failures due to missing and/or broken servers.
916
917- This release includes a wapi mechanism to initiate checks on
918  individual files and directories (with or without verification, and
919  with or without automatic repair). A related mechanism is used to
920  initiate a "deep-check" on a directory: recursively traversing the
921  directory and its children, checking (and/or verifying/repairing)
922  everything underneath. Both mechanisms can be run with an
923  "output=JSON" argument, to obtain machine-readable check/repair
924  status results. These results include a copy of the filesystem
925  statistics from the "deep-stats" operation (including total number
926  of files, size histogram, etc). If repair is possible, a "Repair"
927  button will appear on the results page.
928
929- The client web interface now features some extra buttons to initiate
930  check and deep-check operations. When these operations finish, they
931  display a results page that summarizes any problems that were
932  encountered. All long-running deep-traversal operations, including
933  deep-check, use a start-and-poll mechanism, to avoid depending upon
934  a single long-lived HTTP connection. docs/frontends/webapi.txt has
935  details.
936
937Efficient Backup
938''''''''''''''''
939
940- The "tahoe backup" command is new in this release, which creates
941  efficient versioned backups of a local directory. Given a local
942  pathname and a target Tahoe directory, this will create a read-only
943  snapshot of the local directory in $target/Archives/$timestamp. It
944  will also create $target/Latest, which is a reference to the latest
945  such snapshot. Each time you run "tahoe backup" with the same source
946  and target, a new $timestamp snapshot will be added. These snapshots
947  will share directories that have not changed since the last backup,
948  to speed up the process and minimize storage requirements. In
949  addition, a small database is used to keep track of which local
950  files have been uploaded already, to avoid uploading them a second
951  time. This drastically reduces the work needed to do a "null backup"
952  (when nothing has changed locally), making "tahoe backup' suitable
953  to run from a daily cronjob.
954
955  Note that the "tahoe backup" CLI command must be used in conjunction
956  with a 1.3.0-or-newer Tahoe client node; there was a bug in the
957  1.2.0 webapi implementation that would prevent the last step (create
958  $target/Latest) from working.
959
960Large Files
961'''''''''''
962
963- The 12GiB (approximate) immutable-file-size limitation is
964  lifted. This release knows how to handle so-called "v2 immutable
965  shares", which permit immutable files of up to about 18 EiB (about
966  3*10^14). These v2 shares are created if the file to be uploaded is
967  too large to fit into v1 shares. v1 shares are created if the file
968  is small enough to fit into them, so that files created with
969  tahoe-1.3.0 can still be read by earlier versions if they are not
970  too large. Note that storage servers also had to be changed to
971  support larger files, and this release is the first release in which
972  they are able to do that. Clients will detect which servers are
973  capable of supporting large files on upload and will not attempt to
974  upload shares of a large file to a server which doesn't support it.
975
976FTP/SFTP Server
977'''''''''''''''
978
979- Tahoe now includes experimental FTP and SFTP servers. When
980  configured with a suitable method to translate username+password
981  into a root directory cap, it provides simple access to the virtual
982  filesystem. Remember that FTP is completely unencrypted: passwords,
983  filenames, and file contents are all sent over the wire in
984  cleartext, so FTP should only be used on a local (127.0.0.1)
985  connection. This feature is still in development: there are no unit
986  tests yet, and behavior with respect to Unicode filenames is
987  uncertain. Please see docs/frontends/FTP-and-SFTP.txt for
988  configuration details. (`#512`_, `#531`_)
989
990CLI Changes
991'''''''''''
992
993- This release adds the 'tahoe create-alias' command, which is a
994  combination of 'tahoe mkdir' and 'tahoe add-alias'. This also allows
995  you to start using a new tahoe directory without exposing its URI in
996  the argv list, which is publicly visible (through the process table)
997  on most unix systems.  Thanks to Kevin Reid for bringing this issue
998  to our attention.
999
1000- The single-argument form of "tahoe put" was changed to create an
1001  unlinked file. I.e. "tahoe put bar.txt" will take the contents of a
1002  local "bar.txt" file, upload them to the grid, and print the
1003  resulting read-cap; the file will not be attached to any
1004  directories. This seemed a bit more useful than the previous
1005  behavior (copy stdin, upload to the grid, attach the resulting file
1006  into your default tahoe: alias in a child named 'bar.txt').
1007
1008- "tahoe put" was also fixed to handle mutable files correctly: "tahoe
1009  put bar.txt URI:SSK:..." will read the contents of the local bar.txt
1010  and use them to replace the contents of the given mutable file.
1011
1012- The "tahoe webopen" command was modified to accept aliases. This
1013  means "tahoe webopen tahoe:" will cause your web browser to open to
1014  a "wui" page that gives access to the directory associated with the
1015  default "tahoe:" alias. It should also accept leading slashes, like
1016  "tahoe webopen tahoe:/stuff".
1017
1018- Many esoteric debugging commands were moved down into a "debug"
1019  subcommand:
1020
1021 - tahoe debug dump-cap
1022 - tahoe debug dump-share
1023 - tahoe debug find-shares
1024 - tahoe debug catalog-shares
1025 - tahoe debug corrupt-share
1026
1027   The last command ("tahoe debug corrupt-share") flips a random bit
1028   of the given local sharefile. This is used to test the file
1029   verifying/repairing code, and obviously should not be used on user
1030   data.
1031
1032The cli might not correctly handle arguments which contain non-ascii
1033characters in Tahoe v1.3 (although depending on your platform it
1034might, especially if your platform can be configured to pass such
1035characters on the command-line in utf-8 encoding).  See
1036http://tahoe-lafs.org/trac/tahoe/ticket/565 for details.
1037
1038Web changes
1039'''''''''''
1040
1041- The "default webapi port", used when creating a new client node (and
1042  in the getting-started documentation), was changed from 8123 to
1043  3456, to reduce confusion when Tahoe accessed through a Firefox
1044  browser on which the "Torbutton" extension has been installed. Port
1045  8123 is occasionally used as a Tor control port, so Torbutton adds
1046  8123 to Firefox's list of "banned ports" to avoid CSRF attacks
1047  against Tor. Once 8123 is banned, it is difficult to diagnose why
1048  you can no longer reach a Tahoe node, so the Tahoe default was
1049  changed. Note that 3456 is reserved by IANA for the "vat" protocol,
1050  but there are argueably more Torbutton+Tahoe users than vat users
1051  these days. Note that this will only affect newly-created client
1052  nodes. Pre-existing client nodes, created by earlier versions of
1053  tahoe, may still be listening on 8123.
1054
1055- All deep-traversal operations (start-manifest, start-deep-size,
1056  start-deep-stats, start-deep-check) now use a start-and-poll
1057  approach, instead of using a single (fragile) long-running
1058  synchronous HTTP connection. All these "start-" operations use POST
1059  instead of GET. The old "GET manifest", "GET deep-size", and "POST
1060  deep-check" operations have been removed.
1061
1062- The new "POST start-manifest" operation, when it finally completes,
1063  results in a table of (path,cap), instead of the list of verifycaps
1064  produced by the old "GET manifest". The table is available in
1065  several formats: use output=html, output=text, or output=json to
1066  choose one. The JSON output also includes stats, and a list of
1067  verifycaps and storage-index strings. The "return_to=" and
1068  "when_done=" arguments have been removed from the t=check and
1069  deep-check operations.
1070
1071- The top-level status page (/status) now has a machine-readable form,
1072  via "/status/?t=json". This includes information about the
1073  currently-active uploads and downloads, which may be useful for
1074  frontends that wish to display progress information. There is no
1075  easy way to correlate the activities displayed here with recent wapi
1076  requests, however.
1077
1078- Any files in BASEDIR/public_html/ (configurable) will be served in
1079  response to requests in the /static/ portion of the URL space. This
1080  will simplify the deployment of javascript-based frontends that can
1081  still access wapi calls by conforming to the (regrettable)
1082  "same-origin policy".
1083
1084- The welcome page now has a "Report Incident" button, which is tied
1085  into the "Incident Gatherer" machinery. If the node is attached to
1086  an incident gatherer (via log_gatherer.furl), then pushing this
1087  button will cause an Incident to be signalled: this means recent log
1088  events are aggregated and sent in a bundle to the gatherer. The user
1089  can push this button after something strange takes place (and they
1090  can provide a short message to go along with it), and the relevant
1091  data will be delivered to a centralized incident-gatherer for later
1092  processing by operations staff.
1093
1094- The "HEAD" method should now work correctly, in addition to the
1095  usual "GET", "PUT", and "POST" methods. "HEAD" is supposed to return
1096  exactly the same headers as "GET" would, but without any of the
1097  actual response body data. For mutable files, this now does a brief
1098  mapupdate (to figure out the size of the file that would be
1099  returned), without actually retrieving the file's contents.
1100
1101- The "GET" operation on files can now support the HTTP "Range:"
1102  header, allowing requests for partial content. This allows certain
1103  media players to correctly stream audio and movies out of a Tahoe
1104  grid. The current implementation uses a disk-based cache in
1105  BASEDIR/private/cache/download , which holds the plaintext of the
1106  files being downloaded. Future implementations might not use this
1107  cache. GET for immutable files now returns an ETag header.
1108
1109- Each file and directory now has a "Show More Info" web page, which
1110  contains much of the information that was crammed into the directory
1111  page before. This includes readonly URIs, storage index strings,
1112  object type, buttons to control checking/verifying/repairing, and
1113  deep-check/deep-stats buttons (for directories). For mutable files,
1114  the "replace contents" upload form has been moved here too. As a
1115  result, the directory page is now much simpler and cleaner, and
1116  several potentially-misleading links (like t=uri) are now gone.
1117
1118- Slashes are discouraged in Tahoe file/directory names, since they
1119  cause problems when accessing the filesystem through the
1120  wapi. However, there are a couple of accidental ways to generate
1121  such names. This release tries to make it easier to correct such
1122  mistakes by escaping slashes in several places, allowing slashes in
1123  the t=info and t=delete commands, and in the source (but not the
1124  target) of a t=rename command.
1125
1126Packaging
1127'''''''''
1128
1129- Tahoe's dependencies have been extended to require the
1130  "[secure_connections]" feature from Foolscap, which will cause
1131  pyOpenSSL to be required and/or installed. If OpenSSL and its
1132  development headers are already installed on your system, this can
1133  occur automatically. Tahoe now uses pollreactor (instead of the
1134  default selectreactor) to work around a bug between pyOpenSSL and
1135  the most recent release of Twisted (8.1.0). This bug only affects
1136  unit tests (hang during shutdown), and should not impact regular
1137  use.
1138
1139- The Tahoe source code tarballs now come in two different forms:
1140  regular and "sumo". The regular tarball contains just Tahoe, nothing
1141  else. When building from the regular tarball, the build process will
1142  download any unmet dependencies from the internet (starting with the
1143  index at PyPI) so it can build and install them. The "sumo" tarball
1144  contains copies of all the libraries that Tahoe requires (foolscap,
1145  twisted, zfec, etc), so using the "sumo" tarball should not require
1146  any internet access during the build process. This can be useful if
1147  you want to build Tahoe while on an airplane, a desert island, or
1148  other bandwidth-limited environments.
1149
1150- Similarly, tahoe-lafs.org now hosts a "tahoe-deps" tarball which
1151  contains the latest versions of all these dependencies. This
1152  tarball, located at
1153  http://tahoe-lafs.org/source/tahoe/deps/tahoe-deps.tar.gz, can be
1154  unpacked in the tahoe source tree (or in its parent directory), and
1155  the build process should satisfy its downloading needs from it
1156  instead of reaching out to PyPI.  This can be useful if you want to
1157  build Tahoe from a darcs checkout while on that airplane or desert
1158  island.
1159
1160- Because of the previous two changes ("sumo" tarballs and the
1161  "tahoe-deps" bundle), most of the files have been removed from
1162  misc/dependencies/ . This brings the regular Tahoe tarball down to
1163  2MB (compressed), and the darcs checkout (without history) to about
1164  7.6MB. A full darcs checkout will still be fairly large (because of
1165  the historical patches which included the dependent libraries), but
1166  a 'lazy' one should now be small.
1167
1168- The default "make" target is now an alias for "setup.py build",
1169  which itself is an alias for "setup.py develop --prefix support",
1170  with some extra work before and after (see setup.cfg). Most of the
1171  complicated platform-dependent code in the Makefile was rewritten in
1172  Python and moved into setup.py, simplifying things considerably.
1173
1174- Likewise, the "make test" target now delegates most of its work to
1175  "setup.py test", which takes care of getting PYTHONPATH configured
1176  to access the tahoe code (and dependencies) that gets put in
1177  support/lib/ by the build_tahoe step. This should allow unit tests
1178  to be run even when trial (which is part of Twisted) wasn't already
1179  installed (in this case, trial gets installed to support/bin because
1180  Twisted is a dependency of Tahoe).
1181
1182- Tahoe is now compatible with the recently-released Python 2.6 ,
1183  although it is recommended to use Tahoe on Python 2.5, on which it
1184  has received more thorough testing and deployment.
1185
1186- Tahoe is now compatible with simplejson-2.0.x . The previous release
1187  assumed that simplejson.loads always returned unicode strings, which
1188  is no longer the case in 2.0.x .
1189
1190Grid Management Tools
1191'''''''''''''''''''''
1192
1193- Several tools have been added or updated in the misc/ directory,
1194  mostly munin plugins that can be used to monitor a storage grid.
1195
1196 - The misc/spacetime/ directory contains a "disk watcher" daemon
1197   (startable with 'tahoe start'), which can be configured with a set
1198   of HTTP URLs (pointing at the wapi '/statistics' page of a bunch of
1199   storage servers), and will periodically fetch
1200   disk-used/disk-available information from all the servers. It keeps
1201   this information in an Axiom database (a sqlite-based library
1202   available from divmod.org). The daemon computes time-averaged rates
1203   of disk usage, as well as a prediction of how much time is left
1204   before the grid is completely full.
1205
1206 - The misc/munin/ directory contains a new set of munin plugins
1207   (tahoe_diskleft, tahoe_diskusage, tahoe_doomsday) which talk to the
1208   disk-watcher and provide graphs of its calculations.
1209
1210 - To support the disk-watcher, the Tahoe statistics component
1211   (visible through the wapi at the /statistics/ URL) now includes
1212   disk-used and disk-available information. Both are derived through
1213   an equivalent of the unix 'df' command (i.e. they ask the kernel
1214   for the number of free blocks on the partition that encloses the
1215   BASEDIR/storage directory). In the future, the disk-available
1216   number will be further influenced by the local storage policy: if
1217   that policy says that the server should refuse new shares when less
1218   than 5GB is left on the partition, then "disk-available" will
1219   report zero even though the kernel sees 5GB remaining.
1220
1221 - The 'tahoe_overhead' munin plugin interacts with an
1222   allmydata.com-specific server which reports the total of the
1223   'deep-size' reports for all active user accounts, compares this
1224   with the disk-watcher data, to report on overhead percentages. This
1225   provides information on how much space could be recovered once
1226   Tahoe implements some form of garbage collection.
1227
1228Configuration Changes: single INI-format tahoe.cfg file
1229'''''''''''''''''''''''''''''''''''''''''''''''''''''''
1230
1231- The Tahoe node is now configured with a single INI-format file,
1232  named "tahoe.cfg", in the node's base directory. Most of the
1233  previous multiple-separate-files are still read for backwards
1234  compatibility (the embedded SSH debug server and the
1235  advertised_ip_addresses files are the exceptions), but new
1236  directives will only be added to tahoe.cfg . The "tahoe
1237  create-client" command will create a tahoe.cfg for you, with sample
1238  values commented out. (ticket `#518`_)
1239
1240- tahoe.cfg now has controls for the foolscap "keepalive" and
1241  "disconnect" timeouts (`#521`_).
1242
1243- tahoe.cfg now has controls for the encoding parameters:
1244  "shares.needed" and "shares.total" in the "[client]" section. The
1245  default parameters are still 3-of-10.
1246
1247- The inefficient storage 'sizelimit' control (which established an
1248  upper bound on the amount of space that a storage server is allowed
1249  to consume) has been replaced by a lightweight 'reserved_space'
1250  control (which establishes a lower bound on the amount of remaining
1251  space). The storage server will reject all writes that would cause
1252  the remaining disk space (as measured by a '/bin/df' equivalent) to
1253  drop below this value. The "[storage]reserved_space=" tahoe.cfg
1254  parameter controls this setting. (note that this only affects
1255  immutable shares: it is an outstanding bug that reserved_space does
1256  not prevent the allocation of new mutable shares, nor does it
1257  prevent the growth of existing mutable shares).
1258
1259Other Changes
1260'''''''''''''
1261
1262- Clients now declare which versions of the protocols they
1263  support. This is part of a new backwards-compatibility system:
1264  http://tahoe-lafs.org/trac/tahoe/wiki/Versioning .
1265
1266- The version strings for human inspection (as displayed on the
1267  Welcome web page, and included in logs) now includes a platform
1268  identifer (frequently including a linux distribution name, processor
1269  architecture, etc).
1270
1271- Several bugs have been fixed, including one that would cause an
1272  exception (in the logs) if a wapi download operation was cancelled
1273  (by closing the TCP connection, or pushing the "stop" button in a
1274  web browser).
1275
1276- Tahoe now uses Foolscap "Incidents", writing an "incident report"
1277  file to logs/incidents/ each time something weird occurs. These
1278  reports are available to an "incident gatherer" through the flogtool
1279  command. For more details, please see the Foolscap logging
1280  documentation. An incident-classifying plugin function is provided
1281  in misc/incident-gatherer/classify_tahoe.py .
1282
1283- If clients detect corruption in shares, they now automatically
1284  report it to the server holding that share, if it is new enough to
1285  accept the report.  These reports are written to files in
1286  BASEDIR/storage/corruption-advisories .
1287
1288- The 'nickname' setting is now defined to be a UTF-8 -encoded string,
1289  allowing non-ascii nicknames.
1290
1291- The 'tahoe start' command will now accept a --syslog argument and
1292  pass it through to twistd, making it easier to launch non-Tahoe
1293  nodes (like the cpu-watcher) and have them log to syslogd instead of
1294  a local file. This is useful when running a Tahoe node out of a USB
1295  flash drive.
1296
1297- The Mac GUI in src/allmydata/gui/ has been improved.
1298
1299
1300Release 1.2.0 (2008-07-21)
1301--------------------------
1302
1303Security
1304''''''''
1305
1306- This release makes the immutable-file "ciphertext hash tree"
1307  mandatory.  Previous releases allowed the uploader to decide whether
1308  their file would have an integrity check on the ciphertext or not. A
1309  malicious uploader could use this to create a readcap that would
1310  download as one file or a different one, depending upon which shares
1311  the client fetched first, with no errors raised. There are other
1312  integrity checks on the shares themselves, preventing a storage
1313  server or other party from violating the integrity properties of the
1314  read-cap: this failure was only exploitable by the uploader who
1315  gives you a carefully constructed read-cap. If you download the file
1316  with Tahoe 1.2.0 or later, you will not be vulnerable to this
1317  problem. `#491`_
1318
1319  This change does not introduce a compatibility issue, because all
1320  existing versions of Tahoe will emit the ciphertext hash tree in
1321  their shares.
1322
1323Dependencies
1324''''''''''''
1325
1326- Tahoe now requires Foolscap-0.2.9 . It also requires pycryptopp 0.5
1327  or newer, since earlier versions had a bug that interacted with
1328  specific compiler versions that could sometimes result in incorrect
1329  encryption behavior. Both packages are included in the Tahoe source
1330  tarball in misc/dependencies/ , and should be built automatically
1331  when necessary.
1332
1333Web API
1334'''''''
1335
1336- Web API directory pages should now contain properly-slash-terminated
1337  links to other directories. They have also stopped using absolute
1338  links in forms and pages (which interfered with the use of a
1339  front-end load-balancing proxy).
1340
1341- The behavior of the "Check This File" button changed, in conjunction
1342  with larger internal changes to file checking/verification. The
1343  button triggers an immediate check as before, but the outcome is
1344  shown on its own page, and does not get stored anywhere. As a
1345  result, the web directory page no longer shows historical checker
1346  results.
1347
1348- A new "Deep-Check" button has been added, which allows a user to
1349  initiate a recursive check of the given directory and all files and
1350  directories reachable from it. This can cause quite a bit of work,
1351  and has no intermediate progress information or feedback about the
1352  process. In addition, the results of the deep-check are extremely
1353  limited. A later release will improve this behavior.
1354
1355- The web server's behavior with respect to non-ASCII (unicode)
1356  filenames in the "GET save=true" operation has been improved. To
1357  achieve maximum compatibility with variously buggy web browsers, the
1358  server does not try to figure out the character set of the inbound
1359  filename. It just echoes the same bytes back to the browser in the
1360  Content-Disposition header. This seems to make both IE7 and Firefox
1361  work correctly.
1362
1363Checker/Verifier/Repairer
1364'''''''''''''''''''''''''
1365
1366- Tahoe is slowly acquiring convenient tools to check up on file
1367  health, examine existing shares for errors, and repair files that
1368  are not fully healthy. This release adds a mutable
1369  checker/verifier/repairer, although testing is very limited, and
1370  there are no web interfaces to trigger repair yet. The "Check"
1371  button next to each file or directory on the wapi page will perform
1372  a file check, and the "deep check" button on each directory will
1373  recursively check all files and directories reachable from there
1374  (which may take a very long time).
1375
1376  Future releases will improve access to this functionality.
1377
1378Operations/Packaging
1379''''''''''''''''''''
1380
1381- A "check-grid" script has been added, along with a Makefile
1382  target. This is intended (with the help of a pre-configured node
1383  directory) to check upon the health of a Tahoe grid, uploading and
1384  downloading a few files. This can be used as a monitoring tool for a
1385  deployed grid, to be run periodically and to signal an error if it
1386  ever fails. It also helps with compatibility testing, to verify that
1387  the latest Tahoe code is still able to handle files created by an
1388  older version.
1389
1390- The munin plugins from misc/munin/ are now copied into any generated
1391  debian packages, and are made executable (and uncompressed) so they
1392  can be symlinked directly from /etc/munin/plugins/ .
1393
1394- Ubuntu "Hardy" was added as a supported debian platform, with a
1395  Makefile target to produce hardy .deb packages. Some notes have been
1396  added to docs/debian.txt about building Tahoe on a debian/ubuntu
1397  system.
1398
1399- Storage servers now measure operation rates and
1400  latency-per-operation, and provides results through the /statistics
1401  web page as well as the stats gatherer. Munin plugins have been
1402  added to match.
1403
1404Other
1405'''''
1406
1407- Tahoe nodes now use Foolscap "incident logging" to record unusual
1408  events to their NODEDIR/logs/incidents/ directory. These incident
1409  files can be examined by Foolscap logging tools, or delivered to an
1410  external log-gatherer for further analysis. Note that Tahoe now
1411  requires Foolscap-0.2.9, since 0.2.8 had a bug that complained about
1412  "OSError: File exists" when trying to create the incidents/
1413  directory for a second time.
1414
1415- If no servers are available when retrieving a mutable file (like a
1416  directory), the node now reports an error instead of hanging
1417  forever. Earlier releases would not only hang (causing the wapi
1418  directory listing to get stuck half-way through), but the internal
1419  dirnode serialization would cause all subsequent attempts to
1420  retrieve or modify the same directory to hang as well. `#463`_
1421
1422- A minor internal exception (reported in logs/twistd.log, in the
1423  "stopProducing" method) was fixed, which complained about
1424  "self._paused_at not defined" whenever a file download was stopped
1425  from the web browser end.
1426
1427
1428Release 1.1.0 (2008-06-11)
1429--------------------------
1430
1431CLI: new "alias" model
1432''''''''''''''''''''''
1433
1434- The new CLI code uses an scp/rsync -like interface, in which
1435  directories in the Tahoe storage grid are referenced by a
1436  colon-suffixed alias. The new commands look like:
1437
1438 - tahoe cp local.txt tahoe:virtual.txt
1439 - tahoe ls work:subdir
1440
1441- More functionality is available through the CLI: creating unlinked
1442  files and directories, recursive copy in or out of the storage grid,
1443  hardlinks, and retrieving the raw read- or write- caps through the
1444  'ls' command. Please read docs/CLI.txt for complete details.
1445
1446wapi: new pages, new commands
1447'''''''''''''''''''''''''''''
1448
1449- Several new pages were added to the web API:
1450
1451 - /helper_status : to describe what a Helper is doing
1452 - /statistics : reports node uptime, CPU usage, other stats
1453 - /file : for easy file-download URLs, see `#221`_
1454 - /cap == /uri : future compatibility
1455
1456- The localdir=/localfile= and t=download operations were
1457  removed. These required special configuration to enable anyways, but
1458  this feature was a security problem, and was mostly obviated by the
1459  new "cp -r" command.
1460
1461- Several new options to the GET command were added:
1462
1463 -  t=deep-size : add up the size of all immutable files reachable from the directory
1464 -  t=deep-stats : return a JSON-encoded description of number of files, size
1465                distribution, total size, etc
1466
1467- POST is now preferred over PUT for most operations which cause
1468  side-effects.
1469
1470- Most wapi calls now accept overwrite=, and default to overwrite=true
1471
1472- "POST /uri/DIRCAP/parent/child?t=mkdir" is now the preferred API to
1473  create multiple directories at once, rather than ...?t=mkdir-p .
1474
1475- PUT to a mutable file ("PUT /uri/MUTABLEFILECAP", "PUT
1476  /uri/DIRCAP/child") will modify the file in-place.
1477
1478- more munin graphs in misc/munin/
1479
1480 - tahoe-introstats
1481 - tahoe-rootdir-space
1482 - tahoe_estimate_files
1483 - mutable files published/retrieved
1484 - tahoe_cpu_watcher
1485 - tahoe_spacetime
1486
1487New Dependencies
1488''''''''''''''''
1489-  zfec 1.1.0
1490-  foolscap 0.2.8
1491-  pycryptopp 0.5
1492-  setuptools (now required at runtime)
1493
1494New Mutable-File Code
1495'''''''''''''''''''''
1496
1497- The mutable-file handling code (mostly used for directories) has
1498  been completely rewritten. The new scheme has a better API (with a
1499  modify() method) and is less likely to lose data when several
1500  uncoordinated writers change a file at the same time.
1501
1502- In addition, a single Tahoe process will coordinate its own
1503  writes. If you make two concurrent directory-modifying wapi calls to
1504  a single tahoe node, it will internally make one of them wait for
1505  the other to complete. This prevents auto-collision (`#391`_).
1506
1507- The new mutable-file code also detects errors during publish
1508  better. Earlier releases might believe that a mutable file was
1509  published when in fact it failed.
1510
1511other features
1512''''''''''''''
1513
1514- The node now monitors its own CPU usage, as a percentage, measured
1515  every 60 seconds. 1/5/15 minute moving averages are available on the
1516  /statistics web page and via the stats-gathering interface.
1517
1518- Clients now accelerate reconnection to all servers after being
1519  offline (`#374`_). When a client is offline for a long time, it
1520  scales back reconnection attempts to approximately once per hour, so
1521  it may take a while to make the first attempt, but once any attempt
1522  succeeds, the other server connections will be retried immediately.
1523
1524- A new "offloaded KeyGenerator" facility can be configured, to move
1525  RSA key generation out from, say, a wapi node, into a separate
1526  process. RSA keys can take several seconds to create, and so a wapi
1527  node which is being used for directory creation will be unavailable
1528  for anything else during this time. The Key Generator process will
1529  pre-compute a small pool of keys, to speed things up further. This
1530  also takes better advantage of multi-core CPUs, or SMP hosts.
1531
1532- The node will only use a potentially-slow "du -s" command at startup
1533  (to measure how much space has been used) if the "sizelimit"
1534  parameter has been configured (to limit how much space is
1535  used). Large storage servers should turn off sizelimit until a later
1536  release improves the space-management code, since "du -s" on a
1537  terabyte filesystem can take hours.
1538
1539- The Introducer now allows new announcements to replace old ones, to
1540  avoid buildups of obsolete announcements.
1541
1542- Immutable files are limited to about 12GiB (when using the default
1543  3-of-10 encoding), because larger files would be corrupted by the
1544  four-byte share-size field on the storage servers (`#439`_). A later
1545  release will remove this limit. Earlier releases would allow >12GiB
1546  uploads, but the resulting file would be unretrievable.
1547
1548- The docs/ directory has been rearranged, with old docs put in
1549  docs/historical/ and not-yet-implemented ones in docs/proposed/ .
1550
1551- The Mac OS-X FUSE plugin has a significant bug fix: earlier versions
1552  would corrupt writes that used seek() instead of writing the file in
1553  linear order.  The rsync tool is known to perform writes in this
1554  order. This has been fixed.