Fossil - simple, high-reliability, distributed software configuration management system (for SAFE Network?)

This could be a boon to devs wanting to shift to tools entirely on SAFE network, avoiding problems like the recent censorship of github in India (access since restored) or to collaborate on projects that would otherwise be DDoS’d or censored, and of course to avoid the old ad driven privacy destroying web. :slight_smile:

Written by the inventor of MySQL, Fossil could give SAFE an almost instant replacement for github, with developers using a local Fossil instance (loaded from SAFE storage if they want) and syncing changes with each other. Its useful out of the box, but with some tweaking it could serve as a github style system entirely on SAFE, including your apps own Wiki, documentation and bug tracking). Fossil is a single executable that runs on pretty much anything with a C compiler, so easy to provide downloads for different platforms, and its networking support is simple so could be easy to port to SAFE to allow collaborative working directly from within Fossil - but even without this I think it will allow a significant degree of server-repo style collaboration (although I’ve literally only read the landing page so far! :slight_smile: Extract below.)

Run it, and you have a web like front end with:

  1. Integrated Bug Tracking, Wiki, and Technotes - In addition to doing distributed version control
    like Git and Mercurial, Fossil also supports bug tracking, wiki, and technotes.
  2. Built-in Web Interface - Fossil has a built-in and intuitive web interface with a rich assortment of information pages (examples) designed to promote situational awareness. This entire website is just a running instance of Fossil. The pages you see here are all wiki or embedded documentation. When you clone Fossil from one of its self-hosting repositories, you get more than just source code - you get this entire website. (¹except the download page)
  3. Self-Contained - Fossil is a single self-contained stand-alone executable. To install, simply download a precompiled binary for Linux, Mac, OpenBSD, or Windows and put it on your $PATH. Easy-to-compile source code is also available.
  4. Simple Networking - No custom protocols or TCP ports. Fossil uses ordinary HTTP (or HTTPS or SSH) for network communications, so it works fine from behind restrictive firewalls, including proxies. The protocol is bandwidth efficient to the point that Fossil can be used comfortably over dial-up.
    CGI/SCGI Enabled - No server is required, but if you want to set one up, Fossil supports four easy server configurations.
  5. Autosync - Fossil supports “autosync” mode which helps to keep projects moving forward by reducing the amount of needless forking and merging often associated with distributed projects.
  6. Robust & Reliable - Fossil stores content using an enduring file format in an SQLite database so that transactions are atomic even if interrupted by a power loss or system crash. Automatic self-checks verify that all aspects of the repository are consistent prior to each commit.
  7. Free and Open-Source - Uses the 2-clause BSD license.



@dirvine David, I’ve been looking into this to see if there’s a way to get Fossil working collaboratively on SAFE and there’s a possibility, but it would depend on multiple server processes accessing a shared repository file, which requires some form of locking.

I am wondering if you can say anything about how r/w access to shared files will work and whether some form of file locking will be in place.

One scheme I’m discussing is for each client machine to have a local Fossil repo, and to be running a Fossil server which manages a shared repo (perhaps mounted locally on a virtual drive).

It seems a bit clunky, but do you think it could work? The mailing list thread is here.

1 Like

There is a thing I am working on in the background which may prove even easier. For now we need to investigate, a nice thing about rust is at a system level we can try a few ways like this and just find out. It’s a different world now so yes we will try. For shared (private) files there is a new type called MSID, works like this, the MSID as with other keys is a key type, so has a encrypt and sign key-pair. For read only you give the encrypt key (to decrypt) and for read write then you give both (sign needed fro updates/mutates).

It’s not much more than public shares in terms of code so we can try in a weeks sprint now. We are looking at feature complete for now not even including this, but it is not that much to add in really. No side effects on the network if we try it either, so that is nice.


So happy that others see GitHub as the SPOF that it is.