]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - relnotes.txt
relnotes.txt: edit and update relnotes and clarify licence
[tahoe-lafs/tahoe-lafs.git] / relnotes.txt
1 NEW VERSION RELEASED
2
3 We are pleased to announce the release of version 0.5 of allmydata.org
4 "Tahoe", a secure, decentralized storage grid under a free-software
5 licence.  This is the follow-up to v0.4 which was released June 29,
6 2007 (see [1]).
7
8 Since then we've made several improvements, including:
9
10  * a RESTful API for programming your Tahoe node in the language of
11    your choice [2]
12
13  * a command-line interface in the Unix style for uploading and
14    downloading files (ticket #53)
15
16  * ported to Solaris
17
18  * reduced the memory used when uploading large files (ticket #29)
19
20  * reduced the bandwidth and disk space used when uploading many small
21    files (tickets #80, 81, #85)
22
23  * added configurable erasure-coding parameters: how many total shares
24    to produce, and how many shares are required to reconstruct the
25    file (ticket #84)
26
27  * added configurable limits on how much disk space your node will
28    allocate for storing data on behalf of other peers (ticket #34)
29
30  * many bugs fixed and enhancements implemented
31
32 For complete details, see this web page which shows all ticket
33 changes, repository checkins, and wiki changes from June 29 to today,
34 August 17: [3].
35
36 Allmydata.org Tahoe v0.5 is incompatible with v0.4 due to a change in
37 the formatting of URIs to make them more human-friendly.
38
39
40 WHAT IS IT GOOD FOR?
41
42 With Tahoe, you can store your files in a distributed way across a set
43 of computers, such that if some of the computers fail or become
44 unavailable, you can still retrieve your data from the remaining
45 computers.  You can also securely share your files with other users.
46
47 This release is targeted at hackers and users who are willing to use a
48 text-oriented web user interface, or a command-line user interface.
49 (Or a RESTful API.  Just telnet to localhost and type HTTP requests to
50 get started.)
51
52 Because this software is new, it is not yet recommended for storage of
53 highly confidential data nor for important data which is not otherwise
54 backed up. Given that caveat, this software works and there are no
55 known security flaws which would compromise confidentiality or data
56 integrity.
57
58 This release of Tahoe is suitable for the "friendnet" use case [4].
59 It is easy to set up a private grid which is securely shared among a
60 specific, limited set of friends.  Files uploaded to this shared grid
61 will be available to all friends, even when some of the computers are
62 unavailable.  It is also easy to encrypt individual files and
63 directories so that only designated recipients can read them.
64
65
66 LICENCE
67
68 Tahoe is offered under the GNU General Public License (v2 or later),
69 with the added permission that, if you become obligated to release a
70 derived work under this licence (as per section 2.b), you may delay
71 the fulfillment of this obligation for up to 12 months.  If you are
72 obligated to release code under section 2.b of this licence, you are
73 obligated to release it under these same terms, including the 12-month
74 grace period clause.
75
76
77 INSTALLATION
78
79 This release of Tahoe works on Linux, Mac OS X, Windows, Cygwin, and
80 Solaris.
81
82 To install, download the tarball [5], untar it, go into the resulting
83 directory, and follow the directions in the README [6].
84
85
86 USAGE - web interface
87
88 Once installed, create a "client node".  Instruct this client node to
89 connect to a specific "introducer node" by means of config files in
90 the client node's working directory.  To join a grid, copy in the
91 .furl files for that grid.  To create a private grid, run your own
92 introducer, and copy its .furl files.  See the README for step-by-step
93 instructions.
94
95 Each client node runs a local webserver (enabled by writing the
96 desired port number into a file called 'webport').  The welcome page
97 of this webserver shows the node's status, including which introducer
98 is being used and which other nodes are connected.  Links from the
99
100 Links from the welcome page lead to other pages that give access to a
101 virtual filesystem, in which each directory is represented by a
102 separate page.  Each directory page shows a list of the files
103 available there, with download links, and forms to upload new files.
104
105 USAGE - command-line interface
106
107 Run "allmydata-tahoe ls [VIRTUAL DIRECTORY NAME]" to list the contents
108 of a virtual directory.  Run "allmydata-tahoe get [VIRTUAL FILE NAME]
109 [LOCAL FILE NAME]" to download a file.  Run "allmydata-tahoe put
110 [LOCAL FILE NAME] [VIRTUAL FILE NAME]" to upload a file.
111
112 USAGE - other
113
114 You can control the filesystem through the RESTful web API [2].  Other
115 ways to access the filesystem are planned: please see the roadmap.txt
116 [7] for some plans.
117
118
119 HACKING AND COMMUNITY
120
121 Please join the mailing list [8] to discuss the ideas behind Tahoe and
122 extensions of and uses of Tahoe.  Patches that extend and improve
123 Tahoe are gratefully accepted -- roadmap.txt shows the next
124 improvements that we plan to make and CREDITS lists the names of
125 people who've contributed to the project.  You can browse the revision
126 control history, source code, and issue tracking at the Trac instance
127 [9].  Please see the buildbot [10], which shows how Tahoe builds and
128 passes unit tests on each checkin, and the code coverage results [11]
129 and percentage-covered graph [12], which show how much of the Tahoe
130 source code is currently exercised by the test suite.
131
132
133 NETWORK ARCHITECTURE
134
135 Each peer maintains a connection to each other peer.  A single
136 distinct server called an "introducer" is used to discover other peers
137 with which to connect.
138
139 To store a file, the file is encrypted and erasure coded, and each
140 resulting share is uploaded to a different peer.  The secure hash of
141 the encrypted file and the encryption key are packed into a URI,
142 knowledge of which is necessary and sufficient to recover the file.
143
144 To fetch a file, starting with the URI, a subset of shares is
145 downloaded from peers, the file is reconstructed from the shares, and
146 then decrypted.
147
148 A single distinct server called a "vdrive server" maintains a global
149 mapping from pathnames/filenames to URIs.
150
151 We are acutely aware of the limitations of decentralization and
152 scalability inherent in this version.  In particular, the
153 completely-connected property of the grid and the requirement of a
154 single distinct introducer and vdrive server limits the possible size
155 of the grid.  We have plans to loosen these limitations (see
156 roadmap.txt).  Currently it should be noted that the grid already
157 depends as little as possible on the accessibility and correctness of
158 the introduction server and the vdrive server.  Also note that the
159 choice of which servers to use is easily configured -- you should be
160 able to set up a private grid for you and your friends almost as
161 easily as to connect to our public test grid.
162
163
164 SOFTWARE ARCHITECTURE
165
166 Tahoe is a "from the ground-up" rewrite, inspired by Allmydata's
167 existing consumer backup service.  It is primarily written in the
168 Python programming language.
169
170 Tahoe is based on the Foolscap library [13] which provides a remote
171 object protocol inspired by the capability-secure "E" programming
172 language [14].  Foolscap allows us to express the intended behavior of
173 the distributed grid directly in object-oriented terms while relying
174 on a well-engineered, secure transport layer.
175
176 The network layer is provided by the Twisted library [15].
177 Computationally intensive operations are performed in native compiled
178 code, such as the "zfec" library for fast erasure coding (also
179 available separately: [16]).
180
181 Tahoe is sponsored by Allmydata, Inc. [17], a provider of consumer
182 backup services.  Allmydata, Inc. contributes hardware, software,
183 ideas, bug reports, suggestions, demands, and money (employing several
184 Allmydata-Tahoe hackers and allowing them to spend part of their work
185 time on the next-generation, free-software project).  We are eternally
186 grateful!
187
188
189 Zooko O'Whielacronx
190 on behalf of the Allmydata-Tahoe team
191 August 17, 2007
192 Grand Junction, Colorado
193
194
195 [1]  http://allmydata.org/trac/tahoe/browser/relnotes.txt?rev=849
196 [2]  http://allmydata.org/trac/tahoe/browser/docs/webapi.txt
197 [3]  http://allmydata.org/trac/tahoe/timeline?from=2007-08-17&daysback=51&changeset=on&ticket=on&wiki=on&update=Update
198 [4]  http://allmydata.org/trac/tahoe/wiki/UseCases
199 [5]  http://allmydata.org/source/tahoe/tahoe-0.5.tar.gz
200 [6]  http://allmydata.org/trac/tahoe/browser/README?rev=1102
201 [7]  http://allmydata.org/trac/tahoe/browser/roadmap.txt
202 [8]  http://allmydata.org/cgi-bin/mailman/listinfo/tahoe-dev
203 [9]  http://allmydata.org/trac/tahoe
204 [10] http://allmydata.org/buildbot
205 [11] http://allmydata.org/tahoe-figleaf/figleaf/
206 [12] http://allmydata.org/tahoe-figleaf-graph/hanford.allmydata.com-tahoe_figleaf.html
207 [13] http://twistedmatrix.com/trac/wiki/FoolsCap
208 [14] http://erights.org/
209 [15] http://twistedmatrix.com/
210 [16] http://allmydata.org/trac/tahoe/browser/src/zfec
211 [17] http://allmydata.com
212