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