Fossil SCM

fossil-scm / www / server / whyuseaserver.wiki
Source Blame History 95 lines
f9cfadf… wyoung 1 <title>Benefits of a Fossil Server</title>
f146e21… drh 2
f146e21… drh 3 <h2>No Server Required</h2>
f146e21… drh 4
b2426c2… drh 5 Fossil does not require a central server.
f146e21… drh 6 Data sharing and synchronization can be entirely peer-to-peer.
fd1282e… drh 7 Fossil uses
130abdc… wyoung 8 [https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type |
130abdc… wyoung 9 conflict-free replicated data types]
f146e21… drh 10 to ensure that (in the limit) all participating peers see the same content.
f146e21… drh 11
f9cfadf… wyoung 12 <h2>But, a Server Can Be Useful</h2>
f146e21… drh 13
f146e21… drh 14 Fossil does not require a server, but a server can be very useful.
f146e21… drh 15 Here are a few reasons to set up a Fossil server for your project:
f146e21… drh 16
1fd407f… wyoung 17 1. <b>A server works as a complete project website.</b>
1fd407f… wyoung 18
b2426c2… drh 19 Fossil does more than just version control. It also supports
fd1282e… drh 20 [../tickets.wiki|trouble-tickets],
5d3ba8a… drh 21 [../wikitheory.wiki|wiki],
5d3ba8a… drh 22 a [../chat.md|developer chat room], and a [../forum.wiki|forum].
b2426c2… drh 23 The [../embeddeddoc.wiki|embedded documentation]
b2426c2… drh 24 feature provides a great mechanism for providing project documentation.
b2426c2… drh 25 The [../unvers.wiki|unversioned files] feature is a convenient way
b2426c2… drh 26 to host builds and downloads on the project website.
b2426c2… drh 27
b2426c2… drh 28 2. <b>A server gives developers a common point of rendezvous for
1fd407f… wyoung 29 syncing their work.</b>
1fd407f… wyoung 30
b2426c2… drh 31 It is possible for developers to synchronize peer-to-peer but
f146e21… drh 32 that requires the developers coordinate the sync, which in turn
f146e21… drh 33 requires that the developers both want to sync at the same moment.
e755561… danield 34 A server alleviates this time dependency by allowing each developer
05e7979… wyoung 35 to sync whenever it is convenient. For example, a developer may
05e7979… wyoung 36 choose to automatically sync
05e7979… wyoung 37 after each commit and before each update. Developers all stay
05e7979… wyoung 38 in sync with each other without having to interrupt each other
f146e21… drh 39 constantly to set up a peer-to-peer sync.
f146e21… drh 40
1fd407f… wyoung 41 3. <b>A server provides project leaders with up-to-date status.</b>
1fd407f… wyoung 42
f146e21… drh 43 Project coordinators and BDFLs can click on a link or two at the
4f9c621… wyoung 44 central Fossil server for a project and quickly tell what is
4f9c621… wyoung 45 going on. They can do this from anywhere — even from their phones
4f9c621… wyoung 46 — without needing to actually sync to the device they are using.
f146e21… drh 47
1fd407f… wyoung 48 4. <b>A server provides automatic off-site backups.</b>
1fd407f… wyoung 49
f146e21… drh 50 A Fossil server is an automatic remote backup for all the work
4f9c621… wyoung 51 going into a project. ([../backup.md | Within limits].)
4f9c621… wyoung 52 You can even set up multiple servers at
4f9c621… wyoung 53 multiple sites with automatic synchronization between them for
4f9c621… wyoung 54 added redundancy. Such a setup means that no work is lost due
b45da25… drh 55 to a single machine failure.
f9cfadf… wyoung 56
f9cfadf… wyoung 57 5. <b>A server consolidates [https://www.sqlite.org/howtocorrupt.html
1fd407f… wyoung 58 | SQLite corruption risk mitigation] to a single point.</b>
1fd407f… wyoung 59
f9cfadf… wyoung 60 The concerns in section 1 of that document assume you have direct
f9cfadf… wyoung 61 access to the central DB files, which isn't the case when the
1fd407f… wyoung 62 server is remote and secure against tampering.
1fd407f… wyoung 63
f9cfadf… wyoung 64 Section 2 is about file locking, which concerns disappear when Fossil's
f9cfadf… wyoung 65 on the other side of an HTTP boundary and your server is set up
1fd407f… wyoung 66 properly.
1fd407f… wyoung 67
50a0e02… wyoung 68 Sections 3.1, 4 thru 6, and 8 apply to all Fossil configurations,
50a0e02… wyoung 69 but setting up a server lets you address the risks
50a0e02… wyoung 70 in a single place. Once a given commit is
f9cfadf… wyoung 71 sync'd to the server, you can be reasonably sure any client-side
f9cfadf… wyoung 72 corruption can be fixed with a fresh clone. Ultimately, this
50a0e02… wyoung 73 is an argument for off-machine backups, which returns us to reason
1fd407f… wyoung 74 #4 above.
1fd407f… wyoung 75
f9cfadf… wyoung 76 Sections 3.2 and the entirety of section 7 are no concern with
f9cfadf… wyoung 77 Fossil at all, since it's primarily written by the creator and
f9cfadf… wyoung 78 primary maintainer of SQLite, so you can be certain Fossil doesn't
1fd407f… wyoung 79 actively pursue coding strategies known to risk database corruption.
1fd407f… wyoung 80
1fd407f… wyoung 81 For another take on this topic, see the article
130abdc… wyoung 82 "[https://sqlite.org/useovernet.html | SQLite Over a Network,
130abdc… wyoung 83 Caveats and Considerations]". Fossil runs in rollback mode by
130abdc… wyoung 84 default per recommendation #3 at the end of that article, and a
130abdc… wyoung 85 Fossil server operates as a network proxy for the underlying
130abdc… wyoung 86 SQLite repository DB per recommendation #2. This <i>may</i> permit
130abdc… wyoung 87 you to safely switch it into WAL mode (<b>fossil rebuild --wal</b>)
1fd407f… wyoung 88 depending on the underlying storage used by the server itself.
a3a70a0… wyoung 89
1fd407f… wyoung 90 6. <b>A server allows [../caps/ | Fossil's RBAC system] to work.</b>
1fd407f… wyoung 91
a3a70a0… wyoung 92 The role-based access control (RBAC) system in Fossil only works
a3a70a0… wyoung 93 when the remote system is on the other side of an HTTP barrier.
4f9c621… wyoung 94 ([../caps/#webonly | Details].) If you want its benefits, you need
a3a70a0… wyoung 95 a Fossil server setup of some kind.

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button