docs: update relnotes.txt, relnotes-short.txt, and others documentation bits for v1.5.0 release!

This commit is contained in:
Zooko O'Whielacronx 2009-08-01 19:57:10 -07:00
parent 93479f9bd8
commit 2a63fc9159
14 changed files with 154 additions and 166 deletions

View File

@ -8,7 +8,7 @@
8 make sure buildbot is green
9 make sure debs got built and uploaded properly
10 make sure a sumo sdist tarball got built and uploaded properly
11 send out relnotes.txt: tahoe-announce@lists.allmydata.org, tahoe-dev@lists.allmydata.org, p2p-hackers@lists.zooko.com, lwn@lwn.net, cap-talk@mail.eros-os.org, cryptography@metzdown.com, twisted-python@twistedmatrix.com, fuse-devel@lists.sourceforge.net, duplicity-talk@nongnu.org, news@phoronix.com, python-list@python.org, cygwin@cygwin.com, linked in cloud storage group, The Boulder Linux Users' Group, cryptopp-users@googlegroups.com, the "decentralization" group on groups.yahoo.com, andrew.orlowski@theregister.co.uk
11 send out relnotes.txt: tahoe-announce@lists.allmydata.org, tahoe-dev@lists.allmydata.org, p2p-hackers@lists.zooko.com, lwn@lwn.net, cap-talk@mail.eros-os.org, cryptography@metzdown.com, twisted-python@twistedmatrix.com, fuse-devel@lists.sourceforge.net, duplicity-talk@nongnu.org, news@phoronix.com, python-list@python.org, cygwin@cygwin.com, linked in cloud storage group, The Boulder Linux Users' Group, cryptopp-users@googlegroups.com, the "decentralization" group on groups.yahoo.com, andrew.orlowski@theregister.co.uk, tiddlywiki, hadoop, bzr, the cloud computing group on google, bacula mailing list, amanda?
12 update Wiki: front page news, news, old news, parade of release notes
13 update hacktahoe.org
14 update "current version" information and make an "announcement of new release" on freshmeat

View File

@ -5,41 +5,41 @@ manage them. The current version of this file can be found at
http://allmydata.org/source/tahoe/trunk/docs/known_issues.txt
If you've been using Tahoe-LAFS since v1.1, released 2008-06-11, or if you're
If you've been using Tahoe-LAFS since v1.1 (released 2008-06-11) or if you're
just curious about what sort of mistakes we've made in the past, then you might
want to read the "historical known issues" document:
http://allmydata.org/source/tahoe/trunk/docs/historical/historical_known_issues.txt
== issues in Tahoe v1.5.0, released 2009-07-22 ==
== issues in Tahoe-LAFS v1.5.0, released 2009-08-01 ==
=== potential unauthorized access by JavaScript in unrelated files ===
If you view a file stored in Tahoe through a web user interface,
If you view a file stored in Tahoe-LAFS through a web user interface,
JavaScript embedded in that file might be able to access other files or
directories stored in Tahoe which you view through the same web user
interface. Such a script would be able to send the contents of those
other files or directories to the author of the script, and if you have
the ability to modify the contents of those files or directories, then
that script could modify or delete those files or directories.
directories stored in Tahoe-LAFS which you view through the same web
user interface. Such a script would be able to send the contents of
those other files or directories to the author of the script, and if you
have the ability to modify the contents of those files or directories,
then that script could modify or delete those files or directories.
==== how to manage it ====
For future versions of Tahoe, we are considering ways to close off
this leakage of authority while preserving ease of use -- the
discussion of this issue is ticket #615.
For future versions of Tahoe-LAFS, we are considering ways to close off
this leakage of authority while preserving ease of use -- the discussion
of this issue is ticket #615.
For the present, either do not view files stored in Tahoe through a web
user interface, or turn off JavaScript in your web browser before doing
so, or limit your viewing to files which you know don't contain
For the present, either do not view files stored in Tahoe-LAFS through a
web user interface, or turn off JavaScript in your web browser before
doing so, or limit your viewing to files which you know don't contain
malicious JavaScript.
=== potential disclosure of file through embedded
hyperlinks or JavaScript in that file ===
If there is a file stored on a Tahoe storage grid, and that file gets
downloaded and displayed in a web browser, then JavaScript or
If there is a file stored on a Tahoe-LAFS storage grid, and that file
gets downloaded and displayed in a web browser, then JavaScript or
hyperlinks within that file can leak the capability to that file to a
third party, which means that third party gets access to the file.
@ -54,36 +54,38 @@ sufficient to prevent this from happening.
==== how to manage it ====
For future versions of Tahoe, we are considering ways to close off
this leakage of authority while preserving ease of use -- the
discussion of this issue is ticket #127.
For future versions of Tahoe-LAFS, we are considering ways to close off
this leakage of authority while preserving ease of use -- the discussion
of this issue is ticket #127.
For the present, a good work-around is that if you want to store and
view a file on Tahoe and you want that file to remain private, then
remove from that file any hyperlinks pointing to other people's
servers and remove any JavaScript unless you are sure that the
JavaScript is not written to maliciously leak access.
view a file on Tahoe-LAFS and you want that file to remain private, then
remove from that file any hyperlinks pointing to other people's servers
and remove any JavaScript unless you are sure that the JavaScript is not
written to maliciously leak access.
=== command-line arguments are leaked to other local users ===
Remember that command-line arguments are visible to other users
(through the 'ps' command, or the windows Process Explorer tool), so
if you are using a Tahoe node on a shared host, other users on that
host will be able to see (and capture) any directory caps that you set
up with the "tahoe add-alias" command. Use "tahoe create-alias" instead.
Remember that command-line arguments are visible to other users (through
the 'ps' command, or the windows Process Explorer tool), so if you are
using a Tahoe-LAFS node on a shared host, other users on that host will
be able to see (and copy) any caps that you pass as command-line
arguments. This includes directory caps that you set up with the "tahoe
add-alias" command. Use "tahoe create-alias" for that purpose instead.
==== how to manage it ====
Bypass add-alias and edit the NODEDIR/private/aliases file directly,
by adding a line like this:
Bypass add-alias and edit the NODEDIR/private/aliases file directly, by
adding a line like this:
fun: URI:DIR2:ovjy4yhylqlfoqg2vcze36dhde:4d4f47qko2xm5g7osgo2yyidi5m4muyo2vjjy53q4vjju2u55mfa
By entering the dircap through the editor, the command-line arguments are
bypassed, and other users will not be able to see them. Once you've added the
alias, no other secrets are passed through the command line, so this
vulnerability becomes less significant: they can still see your filenames and
other arguments you type there, but not the caps that Tahoe uses to permit
access to your files and directories. Starting in Tahoe-LAFS v1.3.0, there is
a "tahoe create-alias" command that does this for you.
By entering the dircap through the editor, the command-line arguments
are bypassed, and other users will not be able to see them. Once you've
added the alias, if you use that alias instead of a cap itself on the
command-line, then no secrets are passed through the command line. Then
other processes on the system can still see your filenames and other
arguments you type there, but not the caps that Tahoe uses to permit
access to your files and directories. Starting in Tahoe-LAFS v1.3.0,
there is a "tahoe create-alias" command that does this for you.

View File

@ -9,11 +9,11 @@ You may use this package under the GNU General Public License, version 2 or, at
your option, any later version.
You may use this package under the Transitive Grace Period Public Licence,
version 1.0. The Transitive Grace Period Public Licence has requirements
similar to the GPL except that it allows you to wait for up to twelve months
after you redistribute a derived work before releasing the source code of your
derived work. See the file COPYING.TGPPL.html for the terms of the Transitive
Grace Period Public Licence, version 1.0.
version 1 or, at your option, any later version. The Transitive Grace Period
Public Licence has requirements similar to the GPL except that it allows you to
wait for up to twelve months after you redistribute a derived work before
releasing the source code of your derived work. See the file COPYING.TGPPL.html
for the terms of the Transitive Grace Period Public Licence, version 1.
(You may choose to use this package under the terms of either licence, at your
option.)

View File

@ -9,11 +9,11 @@ You may use this package under the GNU General Public License, version 2 or, at
your option, any later version.
You may use this package under the Transitive Grace Period Public Licence,
version 1.0. The Transitive Grace Period Public Licence has requirements
similar to the GPL except that it allows you to wait for up to twelve months
after you redistribute a derived work before releasing the source code of your
derived work. See the file COPYING.TGPPL.html for the terms of the Transitive
Grace Period Public Licence, version 1.0.
version 1 or, at your option, any later version. The Transitive Grace Period
Public Licence has requirements similar to the GPL except that it allows you to
wait for up to twelve months after you redistribute a derived work before
releasing the source code of your derived work. See the file COPYING.TGPPL.html
for the terms of the Transitive Grace Period Public Licence, version 1.
(You may choose to use this package under the terms of either licence, at your
option.)

View File

@ -9,11 +9,11 @@ You may use this package under the GNU General Public License, version 2 or, at
your option, any later version.
You may use this package under the Transitive Grace Period Public Licence,
version 1.0. The Transitive Grace Period Public Licence has requirements
similar to the GPL except that it allows you to wait for up to twelve months
after you redistribute a derived work before releasing the source code of your
derived work. See the file COPYING.TGPPL.html for the terms of the Transitive
Grace Period Public Licence, version 1.0.
version 1 or, at your option, any later version. The Transitive Grace Period
Public Licence has requirements similar to the GPL except that it allows you to
wait for up to twelve months after you redistribute a derived work before
releasing the source code of your derived work. See the file COPYING.TGPPL.html
for the terms of the Transitive Grace Period Public Licence, version 1.
(You may choose to use this package under the terms of either licence, at your
option.)

View File

@ -1,19 +1,28 @@
We are pleased to announce the release of version 1.5.0 of Tahoe-LAFS.
ANNOUNCING the immediate availability of version 1.5 of Tahoe-LAFS.
Tahoe-LAFS is the only secure cloud storage technology. All of the source code is available under a choice of two Free Software, Open Source licences.
This filesystem is encrypted and distributed over multiple servers in such a way it continues to function even when some of the servers are unavailable, malfunctioning, or malicious. Users can easily and securely share files with other users.
Tahoe-LAFS is the first cloud storage technology which offers security and
privacy in the sense that the cloud storage service provider itself can't read
or alter your data. Here is the one-page explanation of Tahoe's unique security
and fault-tolerance properties:
http://allmydata.org/source/tahoe/trunk/docs/about.html
This is the successor to v1.4.1, which was released April 13, 2009. This is a major new release, improving the user interface and performance and fixing a few bugs. See the release notes for details:
This is the successor to v1.4.1, which was released April 13, 2009. This is a
major new release, improving the user interface, increasing performance, and
fixing a few bugs. See the release notes for details:
http://allmydata.org/source/tahoe/trunk/relnotes.txt
In addition to the functionality of Tahoe-LAFS itself, a crop of related projects have sprung up to extend it and to integrate it into operating systems and applications. These include frontends for Windows, Macintosh, JavaScript, and iPhone, and plugins for duplicity, bzr, Hadoop, and TiddlyWiki, and more. See the Related Projects page on the wiki:
In addition to the functionality of Tahoe-LAFS itself, a crop of related
projects have sprung up to extend it and to integrate it into other tools.
These include frontends for Windows, Macintosh, JavaScript, and iPhone, and
plugins for duplicity, bzr, Hadoop, and TiddlyWiki, and more. See the Related
Projects page on the wiki:
http://allmydata.org/trac/tahoe/wiki/RelatedProjects
Tahoe is the basis of the consumer backup product from Allmydata, Inc. -- http://allmydata.com .
Tahoe is the basis of the consumer backup product from Allmydata, Inc. --
http://allmydata.com .
We believe that erasure coding, strong encryption, Free/Open Source Software and careful engineering make Tahoe safer than common alternatives, such as RAID, removable drive, tape, or "on-line storage" or "Cloud storage" systems.
We believe that erasure coding, strong encryption, Free/Open Source Software
and good engineering make Tahoe-LAFS safer than other storage technologies.

View File

@ -1,88 +1,78 @@
ANNOUNCING Tahoe, the Least-Authority Filesystem, v1.XXX
The allmydata.org team is pleased to announce the release of version
1.XXX of "Tahoe", the Long-lived, Axe-tolerant Filesystem. This is the
second release of Tahoe-LAFS which was created solely as a labor of love
by volunteers -- developer time is no longer funded by allmydata.com (see [1] for
details).
ANNOUNCING Tahoe, the Lofty-Atmospheric Filesystem, v1.5.
Tahoe-LAFS is a secure, decentralized, fault-tolerant cloud storage
system. All of the source code is publicly available under Free
Software, Open Source licences.
The Tahoe-LAFS team is pleased to announce the immediate availability of
version 1.5 of Tahoe, the Lofty Atmospheric File System.
This filesystem is distributed over multiple servers in such a way the
filesystem continues to operate correctly even when some of the servers
are unavailable, malfunctioning, or malicious. Here is the one-page
explanation of Tahoe's unique security and fault-tolerance properties:
Tahoe-LAFS is the first cloud storage technology which offers security
and privacy in the sense that the cloud storage service provider itself
can't read or alter your data. Here is the one-page explanation of
its unique security and fault-tolerance properties:
http://allmydata.org/source/tahoe/trunk/docs/about.html
This is the successor to Tahoe-LAFS v1.3, which was released February
13, 2009 [2]. This is a major new release, adding XXX new WUI style, port to ARM CPU and embedded systems such as NAS boxes.
This release is the successor to v1.4.1, which was released April 13,
2009 [1]. This is a major new release, improving the user interface and
performance and fixing a few bugs, and adding ports to OpenBSD, NetBSD,
ArchLinux, NixOS, and embedded systems built on ARM CPUs. See the NEWS
file [2] for more information.
See the NEWS file [3] and the known_issues.txt file [4] for more
information.
Besides the Tahoe core, a crop of related projects have sprung up,
including frontends for Windows and Macintosh, two front-ends written in
JavaScript, a Ruby interface, a plugin for duplicity, a plugin for
TiddlyWiki, a new backup tool named "GridBackup", CIFS/SMB integration,
an iPhone app, and three incomplete frontends for FUSE. See the Related
Projects page on the wiki: [5].
In addition to the functionality of Tahoe-LAFS itself, a crop of related
projects have sprung up to extend it and to integrate it into operating
systems and applications. These include frontends for Windows,
Macintosh, JavaScript, and iPhone, and plugins for duplicity, bzr,
Hadoop, and TiddlyWiki, and more. See the Related Projects page on the
wiki [3].
COMPATIBILITY
Tahoe v1.4 is fully compatible with the version 1 series of Tahoe. Files
written by v1.4 clients can be read by clients of all versions back to
v1.0. v1.4 clients can read files produced by clients of all versions since
v1.0. v1.4 servers can serve clients of all versions back to v1.0 and v1.4
clients can use servers of all versions back to v1.0.
Version 1.5 is fully compatible with the version 1 series of
Tahoe-LAFS. Files written by v1.5 clients can be read by clients of all
versions back to v1.0. v1.5 clients can read files produced by clients
of all versions since v1.0. v1.5 servers can serve clients of all
versions back to v1.0 and v1.5 clients can use servers of all versions
back to v1.0.
This is the fifth release in the version 1 series. The version 1 series
of Tahoe will be actively supported and maintained for the forseeable
future, and future versions of Tahoe will retain the ability to read
files and directories produced by Tahoe v1 for the forseeable future.
This is the sixth release in the version 1 series. The version 1 series
of Tahoe-LAFS will be actively supported and maintained for the
forseeable future, and future versions of Tahoe-LAFS will retain the
ability to read and write files compatible with Tahoe-LAFS v1.
The version 1 branch of Tahoe is the basis of the consumer backup
The version 1 series of Tahoe-LAFS is the basis of the consumer backup
product from Allmydata, Inc. -- http://allmydata.com .
WHAT IS IT GOOD FOR?
With Tahoe, you can distribute your filesystem across a set of servers,
such that if some of them fail or even turn out to be malicious, the
entire filesystem continues to be available. You can share your files
with other users, using a simple and flexible access control scheme.
With Tahoe-LAFS, you can distribute your filesystem across a set of
servers, such that if some of them fail or even turn out to be
malicious, the entire filesystem continues to be available. You can
share your files with other users, using a simple and flexible access
control scheme.
Because this software is new, we do not categorically recommend it as
the sole repository of data which is extremely confidential or
precious. However, we believe that erasure coding, strong encryption,
Free/Open Source Software and careful engineering make Tahoe safer than
common alternatives, such as RAID, removable drive, tape, "on-line
storage" or "Cloud storage" systems.
We believe that the combination of erasure coding, strong encryption,
Free/Open Source Software and careful engineering make Tahoe-LAFS safer
than RAID, removable drive, tape, on-line backup or other Cloud storage
systems.
This software comes with extensive tests, and there are no known
security flaws which would compromise confidentiality or data integrity.
(For all currently known issues please see the known_issues.txt file
[3].)
This release of Tahoe is suitable for the "friendnet" use case [6] --
it is easy to create a filesystem spread over the computers of you and
your friends so that you can share disk space and files.
security flaws which would compromise confidentiality or data integrity
in typical use. (For all currently known issues please see the
known_issues.txt file [4].)
LICENCE
You may use this package under the GNU General Public License, version
2 or, at your option, any later version. See the file "COPYING.GPL"
[7] for the terms of the GNU General Public License, version 2.
You may use this package under the GNU General Public License, version 2
or, at your option, any later version. See the file "COPYING.GPL" [5]
for the terms of the GNU General Public License, version 2.
You may use this package under the Transitive Grace Period Public
Licence, version 1 or, at your option, any later version. (The
Transitive Grace Period Public Licence has requirements similar to the
GPL except that it allows you to wait for up to twelve months after you
redistribute a derived work before releasing the source code of your
derived work.) See the file "COPYING.TGPPL.html" [8] for the terms of
derived work.) See the file "COPYING.TGPPL.html" [6] for the terms of
the Transitive Grace Period Public Licence, version 1.
(You may choose to use this package under the terms of either licence,
@ -91,23 +81,22 @@ at your option.)
INSTALLATION
Tahoe works on Linux, Mac OS X, Windows, Cygwin, and Solaris, and
probably most other systems. Start with "docs/install.html" [9].
Tahoe-LAFS works on Linux, Mac OS X, Windows, Cygwin, Solaris, *BSD, and
probably most other systems. Start with "docs/install.html" [7].
HACKING AND COMMUNITY
Please join us on the mailing list [10]. Patches are gratefully
accepted -- the RoadMap page [11] shows the next improvements that we
plan to make and CREDITS [12] lists the names of people who've
contributed to the project. The wiki Dev page [13] contains resources
for hackers.
Please join us on the mailing list [8]. Patches are gratefully accepted
-- the RoadMap page [9] shows the next improvements that we plan to make
and CREDITS [10] lists the names of people who've contributed to the
project. The Dev page [11] contains resources for hackers.
SPONSORSHIP
Tahoe was originally developed thanks to the sponsorship of Allmydata,
Inc. [14], a provider of commercial backup services. Allmydata,
Inc. [12], a provider of commercial backup services. Allmydata,
Inc. created the Tahoe project, and contributed hardware, software,
ideas, bug reports, suggestions, demands, and money (employing several
Tahoe hackers and instructing them to spend part of their work time on
@ -118,17 +107,20 @@ Inc. has continued to provide servers, co-lo space and bandwidth to the
open source project. Thank you to Allmydata, Inc. for their generous and
public-spirited support.
This is the second release of Tahoe-LAFS which was created solely as a
labor of love by volunteers; developer time is no longer funded by
allmydata.com (see [13] for details).
Zooko Wilcox-O'Hearn
on behalf of the allmydata.org team
on behalf of the Tahoe-LAFS team
Special acknowledgment goes to Brian Warner, whose superb engineering
skills and dedication are primarily responsible for the Tahoe
implementation, and significantly responsible for the Tahoe design as
well, not to mention most of the docs and tests and many other things
besides.
well, not to mention most of the docs and tests. Tahoe-LAFS wouldn't
exist without him.
April 13, 2009
August 1, 2009
Boulder, Colorado, USA
P.S. Just kidding about that acronym. "LAFS" actually stands for
@ -136,17 +128,16 @@ P.S. Just kidding about that acronym. "LAFS" actually stands for
"Least-Authority File System". There is no truth to the rumour that it
actually stands for "Long-lived Axe-tolerant File System".
[1] http://allmydata.org/pipermail/tahoe-dev/2009-March/001461.html
[2] http://allmydata.org/trac/tahoe/browser/relnotes.txt?rev=3620
[3] http://allmydata.org/trac/tahoe/browser/NEWS?rev=3835
[1] http://allmydata.org/trac/tahoe/browser/relnotes.txt?rev=3853
[2] http://allmydata.org/trac/tahoe/browser/NEWS?rev=4033
[3] http://allmydata.org/trac/tahoe/wiki/RelatedProjects
[4] http://allmydata.org/trac/tahoe/browser/docs/known_issues.txt
[5] http://allmydata.org/trac/tahoe/wiki/RelatedProjects
[6] http://allmydata.org/trac/tahoe/wiki/UseCases
[7] http://allmydata.org/trac/tahoe/browser/COPYING.GPL
[8] http://allmydata.org/source/tahoe/trunk/COPYING.TGPPL.html
[9] http://allmydata.org/source/tahoe/trunk/docs/install.html
[10] http://allmydata.org/cgi-bin/mailman/listinfo/tahoe-dev
[11] http://allmydata.org/trac/tahoe/roadmap
[12] http://allmydata.org/trac/tahoe/browser/CREDITS?rev=3758
[13] http://allmydata.org/trac/tahoe/wiki/Dev
[14] http://allmydata.com
[5] http://allmydata.org/trac/tahoe/browser/COPYING.GPL
[6] http://allmydata.org/source/tahoe/trunk/COPYING.TGPPL.html
[7] http://allmydata.org/source/tahoe/trunk/docs/install.html
[8] http://allmydata.org/cgi-bin/mailman/listinfo/tahoe-dev
[9] http://allmydata.org/trac/tahoe/roadmap
[10] http://allmydata.org/trac/tahoe/browser/CREDITS?rev=4035
[11] http://allmydata.org/trac/tahoe/wiki/Dev
[12] http://allmydata.com
[13] http://allmydata.org/pipermail/tahoe-dev/2009-March/001461.html

View File

@ -2,9 +2,9 @@
# Allmydata Tahoe -- secure, distributed storage grid
#
# Copyright (C) 2008 Allmydata, Inc.
# Copyright (C) 2008-2009 Allmydata, Inc.
#
# This file is part of tahoe.
# This file is part of Tahoe-LAFS.
#
# See the docs/about.html file for licensing information.

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
#
# Copyright (c) 2002-2008 Bryce "Zooko" Wilcox-O'Hearn
# Copyright (c) 2002-2009 Zooko Wilcox-O'Hearn
# mailto:zooko@zooko.com
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this work to deal in this work without restriction (including the rights

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
# Copyright (c) 2002-2008 Bryce "Zooko" Wilcox-O'Hearn
# Copyright (c) 2002-2009 Zooko Wilcox-O'Hearn
# mailto:zooko@zooko.com
# Permission is hereby granted to any person obtaining a copy of this work to
# deal in this work without restriction (including the rights to use, modify,

View File

@ -1,10 +1,5 @@
# Copyright (c) 2000 Autonomous Zone Industries
# Copyright (c) 2002-2007 Bryce "Zooko" Wilcox-O'Hearn
# This file is licensed under the
# GNU Lesser General Public License v2.1.
# See the file COPYING or visit http://www.gnu.org/ for details.
# Portions snarfed out of the Python standard library.
# The du part is due to Jim McCoy.
# Copyright (c) 2002-2009 Zooko Wilcox-O'Hearn
# This file is part of pyutil; see README.txt for licensing terms.
"""
Futz with files like a pro.

View File

@ -1,8 +1,5 @@
# Copyright (c) 2001 Autonomous Zone Industries
# Copyright (c) 2002-2007 Bryce "Zooko" Wilcox-O'Hearn
# This file is licensed under the
# GNU Lesser General Public License v2.1.
# See the file COPYING or visit http://www.gnu.org/ for details.
# Copyright (c) 2002-2009 Zooko Wilcox-O'Hearn
# This file is part of pyutil; see README.txt for licensing terms.
import exceptions, os
from repr import Repr

View File

@ -1,11 +1,5 @@
# Copyright (c) 2005-2009 Bryce "Zooko" Wilcox-O'Hearn
# mailto:zooko@zooko.com
# http://zooko.com/repos/pyutil
# http://pypi.python.org/pypi/pyutil
# http://allmydata.org/trac/pyutil
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this work to deal in this work without restriction (including the rights
# to use, modify, distribute, sublicense, and/or sell copies).
# Copyright (c) 2002-2009 Zooko Wilcox-O'Hearn
# This file is part of pyutil; see README.txt for licensing terms.
"""
A few commonly needed functions.