Wednesday, 30 August 2017

Mounting Dropbox into ownCloud

I just finished adding support for mounting Dropbox and Google Drive in the external storage user interface. These took a while longer than the other storage backends because both require OAuth authentication.

It is a fairly simple process to configure both in the user interface, but Dropbox has one extra step. Dropbox requires that developers create an ‘app’ that is registered with Dropbox in order to access their API. Unfortunately, ownCloud can’t take care of this part because the app must be approved by Dropbox and the app key distributed with the source. This would allow someone to potentially violate Dropbox’s policies acting as ownCloud. No worries though, mounting your free 2 GB of storage at Dropbox is still possible. It requires that you create an app with Dropbox and then provide the app key and secret to the external storage configuration user interface. Go to My apps at Dropbox and create an app. Select ‘Full Dropbox’ for access level.
Now grab the app key and secret and paste these into the corresponding fields for the Dropbox storage (please don’t attempt to apply for production status). Click the ‘Grant access’ button and you will be redirected to the Dropbox website to give ownCloud permission to access your account.
Your username and password at Dropbox is not stored on your ownCloud, instead a token and token secret are stored that represent your account.
Your Dropbox files should now be available through ownCloud! The last step only applies to mounting Google Drive, no app key or secret is necessary. Have fun with your free 7 GB of storage space!

Sharing in ownCloud 5

Last summer it started with file sharing, now it’s time to share everything in ownCloud! This has always been in the back of my mind and now it has become a reality.

Sharing in ownCloud 4 suffered and had a bad reputation due to many issues. File sharing was hit by a number of bugs because of changes outside of sharing, and other apps started their own implementations of sharing. It was not always a satisfactory experience for the user. It was time to rethink how sharing works. The result is the new Share API in ownCloud 5.
The goal of the Share API is to provide a consistent sharing experience across apps and give developers the tools to easily integrate sharing into their apps. This is achieved by managing the shared content of apps in a generic database and providing a sharing user interface to be used by apps. App developers only need to write a small backend class, use the functions in the Share API to retrieve their shared items, and add an anchor tag in their user interface for the sharing user interface to be triggered. I’ll share more technical details for developers wishing to use the Share API in their apps in my next post.
Users should already be comfortable with the user interface, because it is almost identical to the one found in the older versions of file sharing. The select form has been replaced with an autocomplete search textbox, which now allows you to share with not only users and groups, but also contacts and email addresses.
Unfortunately, not everything is complete. Multiple apps need to be integrated with the Share API, private links need to be implemented, and there are many problems displaying the user interface due to style conflicts in apps. Please help out by testing the share_api branch and joining me in #owncloud-dev to complete the Share API and make it bug free for ownCloud 5.
I’m also going to the openSUSE Summit to give a presentation on ownCloud! ownCloud Inc. will also be sponsoring a party there on Friday evening. Anyone else going?

ownCloud at the openSUSE Summit

I just got back from the openSUSE Summit and it was a great experience! Thanks to Bryen Yunashko and Alan Clark for organizing the fun event. There were many people interested in ownCloud and my session was well attended. I’m hoping to see some new contributions and bug reports from these Summit attendees. openSUSE users should have no problem getting started with ownCloud thanks to the ownCloud in a boxappliance available in SUSE Studio. I also had the opportunity to meet and chat with Holger Dyroff, VP of Sales and Marketing at ownCloud Inc. ownCloud is in great hands with our management team.

Don’t forget there is the Great Lakes ownCloud Developer Meetup in Ann Arbor, Michigan October 27th – 28th. Alessandro started calling the meeting the Great Lakes ownCloud Developer Meetup on his blog. I like the name, so I’ll start using it as well. Even if you have no programming experience, you are more than welcome to join us. We can always benefit from a user’s perspective of ownCloud.

Great Lakes ownCloud Developer Meetup

During the weekend of October 27-28th, we held the first Great Lakes ownCloud Developer Meetup in Ann Arbor, Michigan. It was also the first developer meetup outside of Europe for ownCloud. The ownCloud community and, in general, the KDE community is mostly European and this was a satellite event of the larger ownCloud meetup held during the same weekend at KDAB Berlin. Over the weekend we had seven people attend. A great turnout for the first ownCloud meeting in North America and hopefully there will be many more great meetings to follow.
During the meeting we got valuable user feedback and helped people get the latest ownCloud version running. There’s some interest in contributing and we’re looking forward to seeing some new pull requests on GitHub soon. Alessandro and I worked on integrating the Share API in the upcoming News app for sharing articles between users. We also began compiling some small tasks for middle school and high school students for the Google Code-In competition. The ownCloud tasks can be viewed here. Furthermore, we brainstormed about some potential features for upcoming versions of ownCloud: History app, Annotation system, and more. Lastly, we enjoyed conversation about space conquest, open source, Linux, along with probably the best Reuben sandwiches you can have on the entire planet from Zingerman’s Deli (take this, Berliners! :P ).
We hope to continue this event in the future for all ownCloud fans in North America! Thanks to those who joined us for the weekend.

GSoC: ownCloud Sharing

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.

Mounting Dropbox into ownCloud