| 42 | |
| 43 | === Medium sized Distributed Mutable Files (MDMF) === |
| 44 | |
| 45 | Mutable files in Tahoe-LAFS have some significant limitations and |
| 46 | performance issues, as discussed in |
| 47 | [http://allmydata.org/trac/tahoe-lafs/browser/docs/performance.txt docs/performance.txt]. Users who aren't aware of these limitations are |
| 48 | surprised when they find out that mutable files can't scale to large |
| 49 | sizes without using unacceptable levels of memory, and that reading one |
| 50 | byte of the file costs as much as reading the entire file. |
| 51 | |
| 52 | A fix for this issue would essentially be fixing #393. That is, |
| 53 | |
| 54 | * Developing mutable files that are segmented on upload, as with immutable files. Part of this would involve making sure that the way we currently ensure the integrity of the parts of mutable files stored on servers is adequate for your new design, and altering it if it isn't. |
| 55 | * Implementing efficient reading and writing of arbitrary spans of those mutable files. |
| 56 | |
| 57 | This would make Tahoe-LAFS less surprising to users, and allow mutable |
| 58 | files to be used in more ways than they currently are. |
| 59 | |
| 60 | To learn more about this issue, you should first read |
| 61 | [http://allmydata.org/trac/tahoe-lafs/browser/docs/performance.txt docs/performance.txt], so you're familiar with the performance problems |
| 62 | with mutable files as currently implemented. You should also look at the |
| 63 | [http://allmydata.org/trac/tahoe-lafs/browser/docs/specifications/file-encoding.txt file encoding specification], to understand how immutable files are |
| 64 | segmented (since you'll be doing something similar with this project). [http://allmydata.org/trac/tahoe-lafs/browser/docs/specifications/mutable.txt The mutable file specification] may be informative as well. |
| 65 | The mutable file upload and download code is in |
| 66 | [http://allmydata.org/trac/tahoe-lafs/browser/src/allmydata/mutable mutable], |
| 67 | and, for comparison, the immutable file upload and download code is in |
| 68 | [http://allmydata.org/trac/tahoe-lafs/browser/src/allmydata/immutable immutable]. |