I was accepted into Google Summer of Code for my proposal to introduce a way of sharing files between users of ownCloud. If you haven’t heard about ownCloud yet, then you should read this blog post by Frank Karlitschek. I’m having lots of fun along the way and would like to thank my mentor Robin Appelman for all of his advice and programming help. So in this first post of my new blog I would like to share what I’ve accomplished so far.
To create this feature within ownCloud I created an app that handles file sharing. A library keeps track of the files being shared in the database and using ownCloud’s file system abstraction I give users access to the files shared with them. ownCloud was designed to be able to grab data from anywhere with something called a storage provider. Right now there is only one storage provider being using by default, which is for the local filesystem. I created a storage provider for sharing that translates a target location into the source location of the shared file which is in someone else’s data directory.
As you can see those files don’t exist in my user’s data directory, however they do exist in Bob’s. There are database entries for both of those files, which is allowing me to access them in my shared directory.
What’s next? Well, I’ll be working on permissions for the next few days. The idea is that for some files you share you only want people to be able to read the file and not modify it. Or you may want to work together on a document, in whch another user has write permission. After that it will be time to add support for user group file sharing. I’d also eventually like to integrate my sharing app with the public link app. This app creates a public link for anyone to download one of your files. I believe this could easily be included with the sharing app.
I’m very excited with where this is going and it should unlock new potential for ownCloud. Besides my own work with sharing, the development of ownCloud has increased pace. Many people are working on cool new features; Robin Appelman is working on a media player using Ampache, Aamir Khan is making progress with a sync app, and Jakob Sack has added support for translation. I’m sure there’s even more going on that I’m not aware of yet.
If you’d like to see my code, you can view it at ownCloud’s repository in my sharing branch. However, it isn’t ready for testing yet as some things are hard-coded for my own environment.