summaryrefslogtreecommitdiffstats
path: root/report/chapters/5-con-f.tex
blob: bf45478d91c3ce224aed13afc280117ff5393392 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
\chapter{Conclusion and Future Work}\label{ch:5}

\epigraph{In general, I hope to contribute to a world where we value
  skills and relationships over careers and money, where we know
  better than to trust cops or politicians, and where we're passionate
  about building and creating things in a self-motivated and
  self-directed way.}{\textit{Moxie Marlinspike}}

combox is at a stage where it can be used as a tool to use the storage
provided by two file storage providers -- Google Drive and Dropbox --
such that only part of each file in the encrypted form is stored on
the data store of the file storage providers. This method of storing
files on file storage providers makes it difficult, but not
impossible, for file storage providers or ``third parties'' to gain
access to the user's personal files.

combox is at version 0.2.3, it is a python package licensed under the
GNU General Public License version 3 or later. It is compatible with
GNU/Linux and OS X. The program is considered to be in ``alpha'' stage
and must be used for experimental use only. It is not recommended to
store critical files on storage provided by file storage providers
using combox. Individuals who wish to try combox would want to look at
\url{https://ricketyspace.net/combox/setup/} to get the program
installed on their machines; Individuals who want to hack/learn about
combox would want to look at
\url{https://ricketyspace.net/combox/api/}. combox's canonical source
repository is at \url{https://git.ricketyspace.net/combox}, the
repository is also mirrored at
\url{https://bitbucket.org/bgsucodeloverslab/combox/src} and
\url{http://rsiddharth.ninth.su/git/cb.git/}.

There are a lot of things that can be done to improve combox, and what
follows is a non-exhaustive list of things to do in the future:

\begin{itemize}
\item Make combox cognizant about space available on each node
  directory. At the moment, combox reads the amount of free space
  available on each node directory (file storage provider's directory)
  when configuring combox on a computer but does not use this
  information to reckon the space left in each node directory. The
  major issue here is how to determine what space is available without
  interacting with a service provider's API or asking the end user.


\item Re-think \verb+combox.events+ module. This module was written
  with the assumption that combox will be the only one to make changes
  to the node directories. This assumption was found to be not true
  when manually testing combox with node clients (Google Drive and
  Dropbox client that sync files to/from the respective node
  directories to/from their respective data stores). Both the Google
  Drive and the Dropbox client make modifications to the Google Drive
  and Dropbox directory respectively whenever pulling a modified shard
  from their data store to the user's computer, this behavior broke
  combox and major changes were made to the \verb+combox.events+
  module to make it understand the node client's behavior in the node
  directory. These changes increased the complexity of the classes
  defined in the \verb+combox.events+. Tt would be great to re-think
  this module in such a way that it reduces its complexity.

\item Evaluate if more information needs to tracked about each file in
  the combox directory. At the moment, combox only keeps track of the
  SHA-256 hash of each file stored in the combox directory.

\item Support more file storage providers. For this, ideally no code
  needs to be written for supporting a new file storage provider,
  combox must be tested with the new file storage provider's directory
  as a node directory. If the new file storage provider's client (that
  sync's the shards their data store) makes non-standard changes to
  its directory (like the official Dropbox and Google Drive clients
  do), then the \verb+combox.events.NodeDirMonitor+ must be
  accordingly updated to make combox cognizant about the file storage
  provider client's non-standard behavior.

\item Make unit tests more modular. At the moment, there are some unit
  test functions that test more than one usecase/facet of a function
  or class. For instance, the \verb+test_CDM+ test method, part of the
  the \verb+tests.events_test.TestEvents+ test class tests the
  correctness of the \verb+combox.events.ComboxDirMonitor+ for file
  creation, deletion, rename and modification; this method would
  ideally broken down into four tests methods.

\item Make combox Python 3 compatible. The \verb+2to3+ program (which
  is part of the standard Python library since Python version 2.6) and
  the \verb+six+ library can be used to achieve this. See Appendix
  \ref{a-python3c} for more information on this.

\item Support Microsoft Windows. The way to make combox compatible
  with Windows will be to run unit tests on Windows. The failing tests
  might give pointers to what parts of combox needs to be
  changed/updated in order for it to be compatible with
  Windows. Individuals interested in making combox compatible with
  Windows might find
  \url{https://ricketyspace.net/combox/setup/#windows} useful. It
  contains information about setting up the development environment
  for combox on Windows.
\end{itemize}