I saw the ticket for the hosting request for SparkleShare and was
immediately interested. I've actually been scoping out in my mind a very
similar project for the last couple months (though I haven't found the
time to implement anything yet).
So I figured I'd share my thoughts on it, and possibly get involved in
this project.
First, a little background on my potential use-cases for such a project.
(Maybe they match SparkleShare's, maybe they don't). I work on a project
called SSSD (the System Security Services Daemon). This project is
designed around the idea that pretty much everyone has a laptop these
days, and without the SSSD, you are generally forced to keep a separate
local user for the laptop so you can use it when not connected to the
corporate network. With the SSSD, you gain cached offline login, so it's
possible to use the same account online and offline (less juggling of
accounts that way).
But something that we haven't solved yet is that many companies prefer
to use shared home directories so that a user who logs into any random
machine has access to all of their files. Generally, this is done using
NFS, so the information is immediately available to any
network-connected computer. But this doesn't address the laptop case. So
one use-case I can see for something like this is to enable essentially
an offline cached home directory.
Now that we have some idea of what I'd like to do with it, let's talk a
little about implementation. SparkleShare should run as a daemon, whose
primary purpose is to set up and maintain inotify on all (or more likely
a selected subset) of the files on the NFS share for a user. These files
should be checked into a per-user git repository (e.g.
git://gitserver.com/13041.git, where 13041 is the user's UID). Then,
SparkleShare on the laptop would poll the git server regularly for
changes and apply them to the local user's home directory.
Now, here's the tricky part about this approach, and the one that I
haven't worked out completely yet. If the laptop is connected directly
to the network, it should mount the home directory from NFS. If it is
operating in disconnected mode, it should mount the cached version from
SparkleShare. Thus, a user on the go will be able to maintain access to
their most important files.
As I mentioned above, I think a SparkleShare-enabled home directory
would need to be configured such that it was possible to exclude files
from automatic syncing. Perhaps the default could be all files in
/home/username except for those in /home/user/dontsync (as well as
certain special-case filenames like those ending in ~ or other special
filenames that denote temporary files.
Obviously, this would be a more advanced use-case than the simple
DropBox replacement that SparkleShare is probably targeting at first,
but I think it would be way to expose the project to a wider audience,
and solve a long-standing problem.
--
Stephen Gallagher
RHCE 804006346421761
Delivering value year after year.
Red Hat ranks #1 in value among software vendors.
http://www.redhat.com/promo/vendor/