mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-08 22:31:04 +00:00
goals, readme: Add updated project goals
This commit is contained in:
parent
1313ba8c0a
commit
bd55ec79d2
83
GOALS.md
Normal file
83
GOALS.md
Normal file
@ -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.
|
53
README.md
53
README.md
@ -5,20 +5,50 @@
|
|||||||
[![MPLv2 License](https://img.shields.io/badge/license-MPLv2-blue.svg?style=flat-square)](https://www.mozilla.org/MPL/2.0/)
|
[![MPLv2 License](https://img.shields.io/badge/license-MPLv2-blue.svg?style=flat-square)](https://www.mozilla.org/MPL/2.0/)
|
||||||
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/88/badge)](https://bestpractices.coreinfrastructure.org/projects/88)
|
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/88/badge)](https://bestpractices.coreinfrastructure.org/projects/88)
|
||||||
|
|
||||||
This is the Syncthing project which pursues the following goals:
|
## Goals
|
||||||
|
|
||||||
1. Define a protocol for synchronization of a folder between a number of
|
Syncthing is a **continous file synchronization program**. It synchronizes
|
||||||
collaborating devices. This protocol should be well defined, unambiguous,
|
files between two or more computers. We strive to fulfill the goals below.
|
||||||
easily understood, free to use, efficient, secure and language neutral.
|
The goals are listed in order of importance, the most important one being
|
||||||
This is called the [Block Exchange Protocol][1].
|
the first. This is the summary version of the goal list - for more
|
||||||
|
commentary, see the full [Goals document][13].
|
||||||
|
|
||||||
2. Provide the reference implementation to demonstrate the usability of
|
Syncthing should be:
|
||||||
said protocol. This is the `syncthing` utility. We hope that
|
|
||||||
alternative, compatible implementations of the protocol will arise.
|
|
||||||
|
|
||||||
The two are evolving together; the protocol is not to be considered
|
1. Safe From Data Loss
|
||||||
stable until Syncthing 1.0 is released, at which point it is locked down
|
|
||||||
for incompatible changes.
|
Protecting the user's data is paramount. We take every reasonable
|
||||||
|
precaution to avoid corrupting the user's files.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
3. Easy to Use
|
||||||
|
|
||||||
|
Syncthing should be approachable, understandable and inclusive.
|
||||||
|
|
||||||
|
4. Automatic
|
||||||
|
|
||||||
|
User interaction should be required only when absolutely necessary.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
6. For Individuals
|
||||||
|
|
||||||
|
Syncthing is primarily about empowering the individual user with safe,
|
||||||
|
secure and easy to use file synchronization.
|
||||||
|
|
||||||
|
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 long as they are not in conflict
|
||||||
|
with the stated goals above.
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
@ -73,3 +103,4 @@ All code is licensed under the [MPLv2 License][7].
|
|||||||
[10]: https://github.com/syncthing/syncthing/issues
|
[10]: https://github.com/syncthing/syncthing/issues
|
||||||
[11]: https://docs.syncthing.net/users/contrib.html#gui-wrappers
|
[11]: https://docs.syncthing.net/users/contrib.html#gui-wrappers
|
||||||
[12]: https://www.bountysource.com/teams/syncthing/issues
|
[12]: https://www.bountysource.com/teams/syncthing/issues
|
||||||
|
[13]: https://github.com/syncthing/syncthing/blob/master/GOALS.md
|
||||||
|
Loading…
Reference in New Issue
Block a user