mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-21 05:53:12 +00:00
204 lines
8.3 KiB
Plaintext
204 lines
8.3 KiB
Plaintext
NEW VERSION RELEASED
|
|
|
|
We are pleased to announce the release of version 0.5 of
|
|
Allmydata-Tahoe, a secure, decentralized storage grid under a
|
|
free-software licence. This is the follow-up to v0.4 which was
|
|
released June 29, 2007 (see [1]).
|
|
|
|
Since then we've made several improvements, including:
|
|
|
|
* a RESTful API for programmatically controlling your tahoe node with
|
|
* the programming language of your choice:
|
|
|
|
http://allmydata.org/trac/tahoe/browser/docs/webapi.txt
|
|
|
|
* a command-line interface for uploading and downloading files in the
|
|
Unix style (ticket #53)
|
|
|
|
* ported to Solaris
|
|
|
|
* significantly reduced the memory used when uploading files
|
|
(ticket #29)
|
|
|
|
* significantly reduced the bandwidth and disk space used when
|
|
uploading many small files (tickets #80, 81, #85)
|
|
|
|
* added configurable erasure-coding parameters: how many total shares
|
|
to produce, and how many shares are required to reconstruct the
|
|
file (ticket #84)
|
|
|
|
* added configurable limits on how much disk space your node will
|
|
allocate for storing data on behalf of other peers (ticket #34)
|
|
|
|
* many bugs fixed and enhancements implemented
|
|
|
|
For complete details, see this web page which shows all ticket
|
|
changes, repository checkins, and wiki changes from June 29 to today,
|
|
August 16: [2].
|
|
|
|
Allmydata-Tahoe v0.5 is incompatible with v0.4 due to XXX
|
|
|
|
|
|
WHAT IS IT GOOD FOR?
|
|
|
|
With Tahoe, you can store your files in a distributed way across a set
|
|
of computers, such that if some of the computers fail or become
|
|
unavailable, you can still retrieve your data from the remainder. You
|
|
can also securely share your files with other users.
|
|
|
|
This release is targeted at hackers and users who are willing to use a
|
|
text-oriented web user interface, or a command-line user interface.
|
|
(Or a RESTful API. Just telnet to localhost and type HTTP requests to
|
|
get started...)
|
|
|
|
Because this software is new, it is not yet recommended for storage of
|
|
highly confidential data nor for important data which is not otherwise
|
|
backed up, but it works and there are no known security flaws which
|
|
would compromise confidentiality.
|
|
|
|
This release of Allmydata-Tahoe is suitable for the "friendnet" Use
|
|
Case (see the wiki page "UseCases": [3]). It is easy to set up a
|
|
private grid which is securely shared among a specific, limited set of
|
|
friends. Files uploaded to this shared grid will be available to all
|
|
friends, even when some of the computers are unavailable. It is also
|
|
easy to use a public grid, but to encrypt individual files and
|
|
directories so that only intended recipients can read them.
|
|
|
|
|
|
LICENCE
|
|
|
|
Tahoe is offered under the GNU General Public License (v2 or later),
|
|
with the added permission that, if you become obligated to release a
|
|
derived work under this licence (as per section 2.b), you may delay
|
|
the fulfillment of this obligation for up to 12 months. If you are
|
|
obligated to release code under section 2.b of this licence, such code
|
|
must be released under these same terms including the 12-month grace
|
|
period clause.
|
|
|
|
|
|
INSTALLATION
|
|
|
|
This release of Tahoe works on Linux, Mac OS X, Windows-native,
|
|
Cygwin, and Solaris.
|
|
|
|
To install, download the tarball [4], untar it, go into the resulting
|
|
directory, and follow the directions in the README [5].
|
|
|
|
|
|
USAGE
|
|
|
|
Once installed, create a "client node". Instruct this client node to
|
|
connect to a specific "introducer node" by means of config files in
|
|
the client node's working directory. To join a public grid, copy in
|
|
the .furl files for that grid. To create a private grid, run your own
|
|
introducer, and copy its .furl files. See the README for step-by-step
|
|
instructions.
|
|
|
|
Each client node runs a local webserver (enabled by writing the
|
|
desired port number into a file called 'webport'). The front page of
|
|
this webserver shows the node's status, including which introducer is
|
|
being used and which other nodes are connected. Links from the status
|
|
page lead to others that give access to a shared virtual filesystem,
|
|
in which each directory is represented by a separate page. Each
|
|
client node also has a separate (non-shared) virtual filesystem. Each
|
|
directory page shows a list of the files available there, with
|
|
download links, and forms to upload new files.
|
|
|
|
Other ways to access the filesystem are planned: please see the
|
|
roadmap.txt [6] for some rough details.
|
|
|
|
|
|
HACKING AND COMMUNITY
|
|
|
|
Please join the mailing list [7] to discuss the ideas behind Tahoe and
|
|
extensions of and uses of Tahoe. Patches that extend and improve
|
|
Tahoe are gratefully accepted -- roadmap.txt shows the next
|
|
improvements that we plan to make and CREDITS lists the names of
|
|
people who've contributed to the project. You can browse the revision
|
|
control history, source code, and issue tracking at the Trac instance
|
|
[8]. Please see the buildbot [9], which shows how Tahoe builds and
|
|
passes unit tests on each checkin, and the code coverage results [10]
|
|
and percentage-covered graph [11], which show how much of the Tahoe
|
|
source code is currently exercised by the test suite.
|
|
|
|
|
|
NETWORK ARCHITECTURE
|
|
|
|
Each peer maintains a connection to each other peer. A single
|
|
distinct server called an "introducer" is used to discover other peers
|
|
with which to connect.
|
|
|
|
To store a file, the file is encrypted and erasure coded, and each
|
|
resulting share is uploaded to a different peer. The secure hash of
|
|
the encrypted file and the encryption key are packed into a URI,
|
|
knowledge of which is necessary and sufficient to recover the file.
|
|
|
|
To fetch a file, starting with the URI, a subset of shares is
|
|
downloaded from peers, the file is reconstructed from the shares, and
|
|
then decrypted.
|
|
|
|
A single distinct server called a "vdrive server" maintains a global
|
|
mapping from pathnames/filenames to URIs.
|
|
|
|
We are acutely aware of the limitations of decentralization and
|
|
scalability inherent in this version. In particular, the
|
|
completely-connected property of the grid and the requirement of a
|
|
single distinct introducer and vdrive server limits the possible size
|
|
of the grid. We have plans to loosen these limitations (see
|
|
roadmap.txt). Currently it should be noted that the grid already
|
|
depends as little as possible on the accessibility and correctness of
|
|
the introduction server and the vdrive server. Also note that the
|
|
choice of which servers to use is easily configured -- you should be
|
|
able to set up a private grid for you and your friends almost as
|
|
easily as to connect to our public test grid.
|
|
|
|
|
|
SOFTWARE ARCHITECTURE
|
|
|
|
Tahoe is a "from the ground-up" rewrite, inspired by Allmydata's
|
|
existing consumer backup service. It is primarily written in the
|
|
Python programming language.
|
|
|
|
Tahoe is based on the Foolscap library [12] which provides a remote
|
|
object protocol inspired by the capability-secure "E" programming
|
|
language [13]. Foolscap allows us to express the intended behavior of
|
|
the distributed grid directly in object-oriented terms while relying
|
|
on a well-engineered, secure transport layer.
|
|
|
|
The network layer is provided by the Twisted library [14].
|
|
Computationally intensive operations are performed in native compiled
|
|
code, such as the "zfec" library for fast erasure coding (also
|
|
available separately: [15]).
|
|
|
|
Tahoe is sponsored by Allmydata, Inc. [16], a provider of consumer
|
|
backup services. Allmydata, Inc. contributes hardware, software,
|
|
ideas, bug reports, suggestions, demands, and money (employing several
|
|
Allmydata-Tahoe hackers and allowing them to spend part of their work
|
|
time on the next-generation, free-software project). We are eternally
|
|
grateful!
|
|
|
|
|
|
Zooko O'Whielacronx and Brian Warner
|
|
on behalf of the Allmydata-Tahoe team
|
|
June 29, 2007
|
|
Boulder, Colorado and San Francisco, California
|
|
|
|
|
|
[1] http://allmydata.org/trac/tahoe/browser/relnotes.txt?rev=849
|
|
[2] http://allmydata.org/trac/tahoe/timeline?from=2007-08-16&daysback=50&changeset=on&ticket=on&wiki=on&update=Update
|
|
[3] http://allmydata.org/trac/tahoe/wiki/UseCases
|
|
[4] http://allmydata.org/source/tahoe/tahoe-0.4.tar.gz
|
|
[5] http://allmydata.org/trac/tahoe/browser/README?rev=844
|
|
[6] http://allmydata.org/trac/tahoe/browser/roadmap.txt
|
|
[7] http://allmydata.org/cgi-bin/mailman/listinfo/tahoe-dev
|
|
[8] http://allmydata.org/trac/tahoe
|
|
[9] http://allmydata.org/buildbot
|
|
[10] http://allmydata.org/tahoe-figleaf/figleaf/
|
|
[11] http://allmydata.org/tahoe-figleaf-graph/hanford.allmydata.com-tahoe_figleaf.html
|
|
[12] http://twistedmatrix.com/trac/wiki/FoolsCap
|
|
[13] http://erights.org/
|
|
[14] http://twistedmatrix.com/
|
|
[15] http://allmydata.org/trac/tahoe/browser/src/zfec
|
|
[16] http://allmydata.com
|
|
|