I've just learned about Fossil and am very impressed with its
capabilities, and think it could be an excellent way of providing
collaborative development environment on SAFE Network, which is a
secure, decentralised network, including storage and communications (and
later computation).

The problem I'm trying to solve is that while SAFE network acts like a
server in some limited respects there's no central server on which to
install a Fossil server, and no way for remote devices to communicate
with a server on another client over HTTP (because this would defeat the
security of the network).

It might be feasible to re-route client-server HTTP interactions over
SAFE messaging, but this would require one client act as a hub which is
again breaking the raison d'etre of SAFE (decentralisation).

We can treat SAFE network like a shared disk with a simple key/value
store API, for example a REST style interface with basic CRUD operations
- but there is no server, communications does not involve not HTTP, so
the only place to run the Fossil server would be on the client(s).

I'm wondering if you have any advice (or pointers to info) that would
help with something like this arrangement:

Each client has:
- one or more _FOSSIL_ source trees
- a corresponding fossil repo (e.g. a local file)
- a fossil server pointing to.. here's where it gets tricky

We either have...

1) something like a shared disk, containing a shared fossil repo, which
the server on each client can push/pull/clone. SAFE Network supports
mounting of storage as a virtual drive for example, and sharing would
allow multiple clients to access a shared storage area in this way.
I'm thinking it's unlikely that Fossil caters for multiple servers
talking to a shared repo file, but if it does, let me kiss your hand! I
think this would just work out of the box

2) I would need some way for each server to make changes to the shared
repo file without interference from any other servers. Any hints on the
feasibility of this would be appreciated - for example, is there a spec
detailing the HTTP interface, and the low level repo "operations"
involved with this REST interface? I'm wondering if its feasible for me
to modify the server code so that multiple servers can lock/unlock the
shared repo file while they respond to push/pull/clone operations
initiated on the client by the Fossil cli.

Thanks for reading, I hope that its clear what I'm trying to achieve.

Secure Access For Everyone:
SAFE Network - launches soon!
Fully Decentralised Internet
fossil-users mailing list

Reply via email to