tahoe-lafs/relnotes.txt
2007-04-26 11:24:57 -07:00

120 lines
5.3 KiB
Plaintext

Allmydata, Inc. [1], provider of the "Allmydata" consumer backup product, is
pleased announce the first public release of "Tahoe", a distributed storage
mesh with a free-software licence.
The source code that we are releasing is the current working prototype for
Allmydata's next-generation product. This prototype is not recommended for
storage of confidential data nor for data which is not otherwise backed up,
but it is already implements a functional distributed storage mesh and is
useful for experimentation, prototyping, and extension.
INSTALLATION
This release of Tahoe passes all unit tests on Linux/x86, Linux/amd64,
Mac/Intel, Mac/PPC, Windows, and Cygwin.
To install, download the tarball [2], untar it, cd into the resulting
directory, and follow the directions in the README [3].
USAGE
Once installed, create a "client node" as described in the README. 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 mesh,
copy in the .furl files for that mesh. To create a private mesh, run your
own introducer, and copy the .furl files from there.
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 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, as well as other structures
than the single globally-shared namespace implemented by this release: please
see the roadmap.txt for some rough details.
HACKING AND COMMUNITY
Please join the mailing list [4] to discuss the ideas behind Tahoe and
extensions of and uses of Tahoe. Patches that extend and improve Tahoe are
gratefully accepted -- roadmap.txt [5] shows the next improvements that we
plan to make. You can browse the revision control history, source code, and
issue tracking at the Trac instance [6]. Please note the buildbot results
page [7], which show how Tahoe builds and passes unit tests on each checkin,
and the code coverage results [8] and percentage-covered graph [9], which
show how much of the Tahoe source code is currently exercised the test suite.
LICENCE
Tahoe is offered under the GNU General Public License (v2). It also comes
with the added permission that, in the case that you are obligated to release
a derived work under this licence (as per section 2.b of the GPLv2), you may
delay the fulfillment of this obligation for up to 12 months.
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 share
mapping from pathnames/filenames to URIs.
We are well aware of the limitations of decentralization and scalability
inherent in this prototype. In particular, the completely-connected property
of the mesh and the requirement of a single distinct introducer and vdrive
server limits the possible size of the mesh. We have plans to loosen these
limitations (see roadmap.txt [5]). Currently it should be noted that the
mesh 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.
SOFTWARE ARCHITECTURE
Tahoe is a "from the ground-up" rewrite, inspired by Allmydata's existing
consumer backup service, written in Python.
It uses the Foolscap library [10] which provides a remote object protocol
inspired by the capability-secure "E" programming language [11]. Foolscap
allows us to express the intended behavior of the distributed mesh directly
in object-oriented terms while relying on a well-engineered, secure transport
layer.
The underlying networking is provided by the Twisted library [12].
Computationally intensive operations are performed in native compiled code,
such as the "zfec" library for fast erasure coding (also available
separately: [13]).
[1] http://allmydata.com
[2] http://allmydata.com/source/tahoe-0.1.0-0-UNSTABLE.tar.bz2
[3] http://allmydata.com/source/tahoe/README
[4] https://postman.allmydata.com/cgi-bin/mailman/listinfo/tahoe XYZ Zandr or someone: right URL?
[5] http://allmydata.com/source/tahoe/roadmap.txt
[6] http://allmydata.org/trac
[7] http://allmydata.org/buildbot
[8] http://allmydata.org/test-coverage
[9] http://allmydata.org/test-coverage-graph
[10] http://twistedmatrix.com/trac/wiki/FoolsCap
[11] http://erights.org/
[12] http://twistedmatrix.com/
[13] http://allmydata.com/source/zfec