github.com/olivere/camlistore@v0.0.0-20140121221811-1b7ac2da0199/TODO (about) 1 There are two TODO lists. This file (good for airplanes) and the online bug tracker: 2 3 https://code.google.com/p/camlistore/issues/list 4 5 Offline list: 6 7 -- UI: video, at least thumbnailing (use external program, 8 like VLC or whatever nautilus uses?) 9 10 -- rename server.ImageHandler to ThumbnailRequest or something? It's 11 not really a Handler in the normal sense. It's not built once and 12 called repeatedly; it's built for every ServeHTTP request. 13 14 -- unexport more stuff from pkg/server. Cache, etc. 15 16 -- look into garbage from openpgp signing 17 18 -- make leveldb memdb's iterator struct only 8 bytes, pointing to a recycled 19 object, and just nil out that pointer at EOF. 20 21 -- genconfig needs to be updated to route incoming blobs to sync handlers; 22 or should sync handlers subscribe to their source's blobhub? 23 No, see latest email to Bill Thiede: sync handlers already subscribe 24 with a blocking hook. Related: index should too. 25 26 -- bring in the google glog package to third_party and use it in 27 places that want selective logging (e.g. pkg/index/receive.go) 28 29 -- use 'uint32' instead of 'int64' for blob sizes everywhere (notably 30 blob.SizedRef). blobs have a max size of 10-32 MB anyway, and the 31 index.Corpus is now using uint32 to save memory. 32 33 -- verify all ReceiveBlob calls and see which should be 34 blobserver.Receive instead, or ReceiveNoHash. git grep -E 35 "\.ReceiveBlob\(" And maybe ReceiveNoHash should go away and be 36 replaced with a "ReceiveString" method which combines the 37 blobref-from-string and ReceiveNoHash at once. 38 39 -- union storage target. sharder can be thought of a specialization 40 of union. sharder already unions, but has a hard-coded policy 41 of where to put new blobs. union could a library (used by sharder) 42 with a pluggable policy on that. 43 44 -- support for running cammount under camlistored. especially for OS X, 45 where the lifetime of the background daemon will be the same as the 46 user's login session. 47 48 -- website: remove the "Installation" heading for /cmd/*, since 49 they're misleading and people should use "go run make.go" in the 50 general case. 51 52 -- website: add godoc for /server/camlistored (also without a "go get" 53 line) 54 55 -- tests for all cmd/* stuff, perhaps as part of some integration 56 tests. 57 58 -- move most of camput into a library, not a package main. 59 60 -- server cron support: full syncs, camput file backups, integrity 61 checks. 62 63 -- status in top right of UI: sync, crons. (in-progress, un-acked 64 problems) 65 66 -- finish metadata compaction on the encryption blobserver.Storage wrapper. 67 68 -- get security review on encryption wrapper. (agl?) 69 70 -- peer-to-peer server and blobserver target to store encrypted blobs 71 on stranger's hardrives. server will be open source so groups of 72 friends/family can run their own for small circles, or some company 73 could run a huge instance. spray encrypted backup chunks across 74 friends' machines, and have central server(s) present challenges to 75 the replicas to have them verify what they have and how big, and 76 also occasionally say what the SHA-1("challenge" + blob-data) is. 77 78 -- sharing: make camget work with permanode sets too, not just 79 "directory" and "file" things. 80 81 -- sharing: when hitting e.g. http://myserver/share/sha1-xxxxx, if 82 a web browser and not a smart client (Accept header? User-Agent?) 83 then redirect or render a cutesy gallery or file browser instead, 84 still with machine-readable data for slurping. 85 86 -- rethink the directory schema so it can a) represent directories 87 with millions of files (without making a >1MB or >16MB schema blob), 88 probably forming a tree, similar to files. but rather than rolling checksum, 89 just split lexically when nodes get too big. 90 91 -- delete mostly-obsolete camsigd. see big TODO in camsigd.go. 92 93 -- we used to be able live-edit js/css files in server/camlistored/ui when 94 running under the App Engine dev_appserver.py. That's now broken with my 95 latest efforts to revive it. The place to start looking is: 96 server/camlistored/ui/fileembed_appengine.go 97 98 -- should a "share" claim be not a claim but its own permanode, so it 99 can be rescinded? right now you can't really unshare a "haveref" 100 claim. or rather, TODO: verify we support "delete" claims to 101 delete any claim, and verify the share system and indexer all 102 support it. I think the indexer might, but not the share system. 103 Also TODO: "camput delete" or "rescind" subcommand. 104 Also TODO: document share claims in doc/schema/ and on website. 105 106 -- make the -transitive flag for "camput share -transitive" be a tri-state: 107 unset, true, false, and unset should then mean default to true for "file" 108 and "directory" schema blobs, and "false" for other things. 109 110 -- index: static directory recursive sizes: search: ask to see biggest directories? 111 112 -- index: index dates in filenames ("yyyy-mm-dd-Foo-Trip", "yyyy-mm blah", etc). 113 114 -- get webdav server working again, for mounting on Windows. This worked before Go 1 115 but bitrot when we moved pkg/fs to use the rsc/fuse. 116 117 -- work on runsit more, so I can start using this more often. runsit should 118 be able to reload itself, and also watch for binaries changing and restart 119 when binaries change. (or symlinks to binaries) 120 121 -- add gofmt check to "make presubmit". also add "make fmt" target. 122 123 -- BUG: osutil paths.go on OS X: should use Library everywhere instead of mix of 124 Library and ~/.camlistore? 125 126 OLD: 127 128 -- add CROS support? 129 http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/ 130 131 -- brackup integration, perhaps sans GPG? (requires Perl client?) 132 133 -- blobserver test suite: flesh it out. (bs-test.pl ... it's pretty good 134 so far, but not done) 135 136 -- blobserver: clean up channel-closing consistency in blobserver interface 137 (most close, one doesn't. all should probably close) 138 139 Android: 140 141 [ ] Fix wake locks in UploadThread. need to hold CPU + WiFi whenever 142 something's enqueued at all and we're running. Move out of the Thread 143 that's uploading itself. 144 [ ] GPG signing of blobs (brad) 145 http://code.google.com/p/android-privacy-guard/ 146 http://www.thialfihar.org/projects/apg/ 147 (supports signing in code, but not an Intent?) 148 http://code.google.com/p/android-privacy-guard/wiki/UsingApgForDevelopment 149 ... mailed the author. 150 151 Client libraries: 152 153 [X] Go 154 [X] JavaScript 155 [/] Python (Brett); but see https://github.com/tsileo/camlipy 156 [ ] Perl 157 [ ] Ruby 158 [ ] PHP