Ticket #1400: NEWS

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