LinuxFest Northwest 2018: Perkeep
ytvideoOn YT
About
Goal
Perkeep is a project to help you keep your content and online memories for life.
Written in
[ GoLang ]
Interfaces
Web
API
Cli
Apps
FUSE
Operation model
PESOS
Publish Elsewhere, Syndicate (to your) Own Site
Internals
Based on
Blob storage
Everything is stored as an immutable blob, content-addressable
Metadata is handled as a blob too
Advantages
Simplicity
Deduplication for free
Cacheability
Note
no expiration times
Versioning
Integrity checking
Blob server operations
PUT
GET
Enumerate
Doesn't support
blobs
Can be done if asked nicely
Multiple backend storage implementations
They can inter-sync
Schema blobs are JSON blobs
File chunking is done in a smart way, so modifying part of a binary doesn't require a full upload
They mention [ rsync ] as an analogue
Variable chunk size
Indexing layer
Takes the blob storage and generates a sorted key-value interface, from that it generates a <<<Corpus>>>
No problem if it's deleted or corrupted
It can be indexed later
It only applies to blobs with a JSON schema, not to raw blobs
If it finds a file schema
EXIF tags
modtime
audio ID3 tags
Directory schema
iterate
Mutation schema
Validate
record attributes it modifies
Search layer
Starts from the Corpus that result from Indexing layer
Searches can be saved to use on easy-search-mode
How to model mutable values
`pk put permanode`
Add attributes
`pk claim` will show all versions
Special support for OpenPGP (for signing)
Funded via
[ OpenCollective ]
As-of
[ 2018-04-28 Sat ]