]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - relnotes.txt
add licence, update metadata and URLs
[tahoe-lafs/tahoe-lafs.git] / relnotes.txt
1
2 Allmydata, Inc. [1], provider of the "Allmydata" consumer backup product, is
3 pleased announce the first public release of "Tahoe", a secure, distributed
4 storage mesh with a free-software licence.
5
6 The source code that we are releasing is the current working prototype for
7 Allmydata's next-generation product.  This prototype is not recommended for
8 storage of confidential data nor for data which is not otherwise backed up,
9 but it is already implements a functional distributed storage mesh and is
10 useful for experimentation, prototyping, and extension.
11
12
13 INSTALLATION
14
15 This release of Tahoe passes all unit tests on Linux/x86, Linux/amd64,
16 Mac/Intel, Mac/PPC, Windows, and Cygwin.
17
18 To install, download the tarball [2], untar it, cd into the resulting
19 directory, and follow the directions in the README [3].
20
21
22 USAGE
23
24 Once installed, create a "client node" as described in the README.  Instruct
25 this client node to connect to a specific "introducer node" by means of
26 config files in the client node's working directory.  To join a public mesh,
27 copy in the .furl files for that mesh.  To create a private mesh, run your
28 own introducer, and copy the .furl files from there.
29
30 Each client node runs a local webserver (enabled by writing the desired port
31 number into a file called 'webport').  The front page of this webserver shows
32 the node's status, including which introducer is being used and which other
33 nodes are connected.  Links from the status page lead to others that give
34 access to a shared virtual filesystem, in which each directory is represented
35 by a separate page.  Each directory page shows a list of the files available
36 there, with download links, and forms to upload new files.
37
38 Other ways to access the filesystem are planned, as well as other structures
39 than the single globally-shared namespace implemented by this release: please
40 see the roadmap.txt for some rough details.
41
42
43 HACKING AND COMMUNITY
44
45 Please join the mailing list [4] to discuss the ideas behind Tahoe and
46 extensions of and uses of Tahoe.  Patches that extend and improve Tahoe are
47 gratefully accepted -- roadmap.txt [5] shows the next improvements that we
48 plan to make.  You can browse the revision control history, source code, and
49 issue tracking at the Trac instance [6].  Please note the buildbot results
50 page [7], which show how Tahoe builds and passes unit tests on each checkin,
51 and the code coverage results [8] and percentage-covered graph [9], which
52 show how much of the Tahoe source code is currently exercised the test suite.
53
54
55 LICENCE
56
57 Tahoe is offered under the GNU General Public License (v2 or later), with the
58 added permission that, if you become obligated to release a derived work
59 under this licence (as per section 2.b), you may delay the fulfillment of
60 this obligation for up to 12 months.
61
62
63 NETWORK ARCHITECTURE
64
65 Each peer maintains a connection to each other peer.  A single distinct
66 server called an "introducer" is used to discover other peers with which to
67 connect.
68
69 To store a file, the file is encrypted and erasure coded, and each resulting
70 share is uploaded to a different peer.  The secure hash of the encrypted file
71 and the encryption key are packed into a URI, knowledge of which is necessary
72 and sufficient to recover the file.
73
74 To fetch a file, starting with the URI, a subset of shares is downloaded from
75 peers, the file is reconstructed from the shares, and then decrypted.
76
77 A single distinct server called a "vdrive server" maintains a global share
78 mapping from pathnames/filenames to URIs.
79
80 We are well aware of the limitations of decentralization and scalability
81 inherent in this prototype.  In particular, the completely-connected property
82 of the mesh and the requirement of a single distinct introducer and vdrive
83 server limits the possible size of the mesh.  We have plans to loosen these
84 limitations (see roadmap.txt [5]).  Currently it should be noted that the
85 mesh already depends as little as possible on the accessibility and
86 correctness of the introduction server and the vdrive server.  Also note that
87 the choice of which servers to use is easily configured -- you should be able
88 to set up a private mesh for you and your friends almost as easily as to
89 connect to our public test mesh.
90
91
92 SOFTWARE ARCHITECTURE
93
94 Tahoe is a "from the ground-up" rewrite, inspired by Allmydata's existing
95 consumer backup service.  It is primarily written in Python.
96
97 It uses the Foolscap library [10] which provides a remote object protocol
98 inspired by the capability-secure "E" programming language [11].  Foolscap
99 allows us to express the intended behavior of the distributed mesh directly
100 in object-oriented terms while relying on a well-engineered, secure transport
101 layer.
102
103 The underlying networking is provided by the Twisted library [12].
104 Computationally intensive operations are performed in native compiled code,
105 such as the "zfec" library for fast erasure coding (also available
106 separately: [13]).
107
108
109 [1]  http://allmydata.com
110 [2]  http://allmydata.org/source/tahoe/tahoe-0.1.1-0-UNSTABLE.tar.bz2
111 [3]  http://allmydata.org/trac/tahoe/browser/README
112 [4]  http://allmydata.org/cgi-bin/mailman/listinfo/tahoe-dev
113 [5]  http://allmydata.org/trac/tahoe/browser/roadmap.txt
114 [6]  http://allmydata.org/trac
115 [7]  http://allmydata.org/buildbot
116 [8]  http://allmydata.org/tahoe-figleaf/figleaf/
117 [9]  http://allmydata.org/tahoe-figleaf-graph/hanford.allmydata.com-tahoe_figleaf.html
118 [10] http://twistedmatrix.com/trac/wiki/FoolsCap
119 [11] http://erights.org/
120 [12] http://twistedmatrix.com/
121 [13] http://allmydata.com/source/zfec