aboutsummaryrefslogtreecommitdiff
path: root/GOALS.md
diff options
context:
space:
mode:
authorJakob Borg <jakob@kastelo.net>2017-01-19 18:12:40 +0100
committerJakob Borg <jakob@kastelo.net>2017-01-19 18:12:40 +0100
commitbd55ec79d2bab88138c69aa693ce6ce044d8c7fe (patch)
tree7958876c5e659b594edf2e945faed3c0912c5db1 /GOALS.md
parent1313ba8c0ab04764a694479a2d501b8b708fd251 (diff)
downloadsyncthing-bd55ec79d2bab88138c69aa693ce6ce044d8c7fe.tar.gz
syncthing-bd55ec79d2bab88138c69aa693ce6ce044d8c7fe.zip
goals, readme: Add updated project goals
Diffstat (limited to 'GOALS.md')
-rw-r--r--GOALS.md83
1 files changed, 83 insertions, 0 deletions
diff --git a/GOALS.md b/GOALS.md
new file mode 100644
index 000000000..31ea91db8
--- /dev/null
+++ b/GOALS.md
@@ -0,0 +1,83 @@
+# The Syncthing Goals
+
+Syncthing is a **continous file synchronization program**. It synchronizes
+files between two or more computers. We strive to fulfill the goals below.
+The goals are listed in order of importance, the most important one being
+the first.
+
+> "Syncing files" here is precise. It means we specifically exclude things
+> that are not files - calendar items, instant messages, and so on. If those
+> are in fact stored as files on disk, they can of course be synced as
+> files.
+
+Syncthing should be:
+
+### 1. Safe From Data Loss
+
+Protecting the user's data is paramount. We take every reasonable precaution
+to avoid corrupting the user's files.
+
+> This is the overriding goal, without which synchronizing files becomes
+> pointless. This means that we do not make unsafe trade offs for the sake
+> of performance or, in some cases, even usability.
+
+### 2. Secure Against Attackers
+
+Again, protecting the user's data is paramount. Regardless of our other
+goals we must never allow the user's data to be susceptible to eavesdropping
+or modification by unauthorized parties.
+
+> This should be understood in context. It is not necessarily reasonable to
+> expect Syncthing to be resistant against well equipped state level
+> attackers. We will however do our best. Note also that this is different
+> from anonymity which is not, currently, a goal.
+
+### 3. Easy to Use
+
+Syncthing should be approachable, understandable and inclusive.
+
+> Complex concepts and maths form the base of Synchting's functionality.
+> This should nonetheless be abstracted or hidden to a degree where
+> Syncthing is usable by the general public.
+
+### 4. Automatic
+
+User interaction should be required only when absolutely necessary.
+
+> Specifically this means that changes to files are picked up without
+> prompting, conflicts are resolved without prompting and connections are
+> maintained without prompting. We only prompt the user when it is required
+> to fulfill one of the (overriding) Secure, Safe or Easy goals.
+
+### 5. Universally Available
+
+Syncthing should run on every common computer. We are mindful that the
+latest technology is not always available to any given individual.
+
+> Computers include desktops, laptops, servers, virtual machines, small
+> general purpose computers such as Raspberry Pis and, *where possible*,
+> tablets and phones. NAS appliances, toasters, cars, firearms, thermostats
+> and so on may include computing capabitilies but it is not our goal for
+> Syncthing to run smoothly on these devices.
+
+### 6. For Individuals
+
+Syncthing is primarily about empowering the individual user with safe,
+secure and easy to use file synchronization.
+
+> We acknowledge that it's also useful in an enterprise setting and include
+> functionality to support that. If this is in conflict with the
+> requirements of the individual, those will however take priority.
+
+### 7. Everything Else
+
+There are many things we care about that don't make it on to the list. It is
+fine to optimize for these values as well, as long as they are not in
+conflict with the stated goals above.
+
+> For example, performance is a thing we care about. We just don't care more
+> about it than safety, security, etc. Maintainability of the code base and
+> providing entertainment value for the maintainers are also things that
+> matter. It is understood that there are aspects of Syncthing that are
+> suboptimal or even in opposition with the goals above. However, we
+> continously strive to align Syncthing more and more with these goals. \ No newline at end of file