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