Adventures in synchronisation volume 3 - Files and Stuff
Having established an ownCloud synchronisation framework to share my contacts and calendar between devices, it makes sense to see what other things I can do with it.
The webDAV  standard at the core of the ownCloud  project is about files; like other cloud services, file sharing is a primary feature of the ownCloud application. So what's the big deal?
- Access to project files from client sites. Although I generally take a computer with me to a client site, there are times when an alternative method of accessing files is important. The client's IT policies might prevent a third party computer from connecting to their internal network (which is a Good Thing) or I might need to transfer a file and not have easy access to a USB drive. Uploading the file to ownCloud does the job without the security concern of a public service like Dropbox and similar services.
- Redundant availability. Tragically, sometimes computers die; usually at the most inconvenient times, such as when you're overseas at a client meeting about to make and important presentation. Being able to get the important files onto another computer without is much more likely to win the business than apologising for the smoking wreck that used to be your laptop.
- Off site storage. For important documents, I can use the secured web service to keep a copy somewhere that wont burn down. This isn't a substitute for proper backups, but can complement them.
Synchronising files is a two-way process (duh-oh!) that imposes some overheads on the host device. In different operating system contexts, these constraints give different default behaviours worth noting. Although I'm mostly using the ownCloud clients and server, the same issues apply to any webDAV service.
The basic synchronisation process identifies a folder or directory on the local and remote computers which should stay synchronised.
There are two testing processes here:
- Modifications on the client computer. This tends to be a low-intensity process using either file system event notifications or polling depending on operating system and development status. Because this is a local process it can run more frequently (or in the case of event notifications almost immediately).
- Modifications on the server. Although detecting such changes is much the same as for local files, there is some additional (internet) traffic overhead in the status requests. For devices more likely to be using a mobile phone data network (such as Android phones and tablets) these checks can incur additional costs for the user. The ownCloud Android client doesn't keep an entire folder synchronised by default - you can select individual files to keep up to date, but not an entire folder (yet - there is discussion about this feature on the mailing lists). This isn't a perfect solution, but will do.
The other slight limitation I've found is that a local client can only synchronise with one server. I'd like to be able to access several ownCloud instances from different servers (eg belonging to different clients); there are some work-arounds for this, but at the moment it's not built-in.
I can share with specific users within my ownCloud instance, or make a shared resource (file or folder) available publicly via a URL. There are administrative controls over what sort of sharing is allowed, so business rules around internal content should be supportable.
The next version (6.0 available now, but I haven't tested it) even has a shared document editing function to allow direct manipulation of rich documents through the web interface.
Consider a project team spread across multiple sites and/or multiple organisations (so there isn't a local network solution easily available).
You can set up all the team members with ownCloud accounts for their project files (I'd probably have project-specific directories rather than just dump everything at the top level of the folder tree), the project lead can create a common project data folder and share it with the group (or specific individuals).
These editing permissions and expiration date options, plus the global sharing rules, allow quite good control over who can see what. It's not as much control as you have over a local file system, but it's probably enough for general collaboration.
If you mostly use the local clients, then theming isn't an issue, but it's nice to know that you can control the appearance of the web interface - adjusting colours, logos etc.
 WebDAV wikipedia article
 ownCloud project
I don't endorse or recommend any particular software package or solution, this article describes what worked for me, but you should make your own assessments before installing or using any of these programs.