summaryrefslogtreecommitdiff
path: root/libraries/zfec/README
blob: 957d71bbb661e300927242f03addec55c02385d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
This package implements an "erasure code", or "forward error correction code".

You may use this package under the GNU General Public License, version 2 or,
at your option, any later version. You may use this package under the
Transitive Grace Period Public Licence, version 1.0. (You may choose to use
this package under the terms of either licence, at your option.) See the file
COPYING.GPL for the terms of the GNU General Public License, version 2. See
the file COPYING.TGPPL.html for the terms of the Transitive Grace Period
Public Licence, version 1.0.

The most widely known example of an erasure code is the RAID-5 algorithm which
makes it so that in the event of the loss of any one hard drive, the stored
data can be completely recovered. The algorithm in the zfec package has a
similar effect, but instead of recovering from the loss of only a single
element, it can be parameterized to choose in advance the number of elements
whose loss it can tolerate.

This package is largely based on the old "fec" library by Luigi Rizzo et al.,
which is a mature and optimized implementation of erasure coding. The zfec
package makes several changes from the original "fec" package, including
addition of the Python API, refactoring of the C API to support zero-copy
operation, a few clean-ups and optimizations of the core code itself, and the
addition of a command-line tool named "zfec".