Hi all,
Cloud Shake - the project to allow a shared multi-machine cache of
build objects - is underway.
I've just released Shake v0.17.6, which includes improvements to the
--shared feature. It's definitely not ready for prime time yet, but it
does work, see
https://github.com/ndmitchell/shake/blob/master/docs/Cloud.md
for some details.
The original plan was to add a feature called History to Shake. An
entry in the history describes a key, it's dependencies, and it's
outputs. The plan was to provide two ways to satisfy the history:
* Via a shared file area, which records history entries in files.
* Via a web server, with a custom protocol.
That was the plan, but then Simon Peyton Jones suggested that actually
the shared drive approach is sufficient. You can map a drive over the
internet, use NFS, rsync, you can control permissions, you can explore
it with the file system. The only purpose of a web server was to
provide a more efficient communication pipe, but is it actually more
efficient? And it is worth the cost? These are open questions.
At the moment the shared file area approach is implemented, and works.
It hasn't been tested on a remote shared drive, and isn't particularly
well designed to support that, although it might work, and could
certainly be adapted. The web server approach hasn't been finished, so
doesn't work at all. We're left with the question - push forward with
the shared file area and delete the web server, or push forward with
the web server.
I'm keen to get information, such as:
* The shared drive approach is a real pain on some CI system on some
OS because <specific flaw>.
* The shared drive can't work because of <fundamental flaw>.
* The network approach isn't necessary because <a way to emulate them>.
Any feedback welcome! I'm definitely out of my comfort zone.
Thanks, Neil