Cloud | Coding | Community | development

ownCloud Development in the First Half of July

Welcome to the ownCloud community update for the first half of July – covering a crazy month! We released ownCloud 8.1 and published many blogs and videos about what’s new and improved. In coding news, work on 8.2 has started with work towards moving the Files app to WebDAV, revival of the Bookmarks app and […]

collaboration
Welcome to the ownCloud community update for the first half of July – covering a crazy month! We released ownCloud 8.1 and published many blogs and videos about what’s new and improved. In coding news, work on 8.2 has started with work towards moving the Files app to WebDAV, revival of the Bookmarks app and the merge of many feature branches.

If you have thoughts or contributions for a future news post, ping Jos with your input. You can read our previous report here.

ownCloud Server 8.1

The biggest news this month is the release of ownCloud Server 8.1! This release brought many new features and performance improvements. You can find a short overview of them in the announcement and on the dedicated page on owncloud.org.

We published more details about the new release in blogs like the introduction of release channels, how to upgrade to ownCloud Server 8.1, the improvements to the Documents app, and how to configure the new caching features. We also published a blog about what changed in ownCloud Server 8.1 for developers.

Simultaneously with the blogs, we’ve been releasing a series of tutorials and demos of ownCloud Server 8.1 to our YouTube channel. Check out our tutorial playlist or the list with demos!

In Other Blogs

At the beginning of the month we talked about our collaboration with CERN on testing ownCloud (part 1, part 2) and announced an update to the ownCloud android app.

Development on the Upcoming Release

With the release of ownCloud 8.1, development of 8.2 has kicked off and there is a lot going on. Below we summarize progress in some major areas.


The Files app

The Files app

Moving Files app to WebDAV

A long-time goal has seen recent progress– moving the Files app to use the WebDAV interface. Reducing the number of code paths for file management, this will make it easier to test and improve ownCloud file handling.

Currently there are two ways in which files are managed, WebDAV and private PHP AJAX end points in the Files app. By moving the Files app over to using the WebDAV API, we concentrate future efforts in one place. As the WebDAV API is used by our mobile and desktop clients as well as any other WebDAV tool, performance and stability improvements will benefit those as well.

A lot of work is required to make this work. The Files app has previews, icons, favorite and sharing information, chunked upload and much more. Some of this is already available in the WebDAV API, as the clients have had a need for it, but much will still has to be added. Some interesting challenges are related to performance, like batch file deletion or moving. Older ownCloud releases used to delete or move files one by one, creating a huge number of database, network and file system operations. Newer ownCloud releases bundle such operations, something currently not available for WebDAV.

However, fixing these issues will greatly benefit the clients as well, as they can also make use of the new capabilities to improve their own performance and feature set. Moreover, the WebDAV backend, being based on the well-known SabreDAV, has several capabilities and advantages over the custom AJAX API’s. One of those advantages is using ‘part files’ internally, which makes it easy to resume uploads or retry parts which went wrong. This also helps deal with concurrency issues where, for example, a mobile or desktop client starts to sync a file before it is completely uploaded in the web interface (example). Similar issues exist with regards to encryption.

Work on the Files app is currently tracked in progress in this issue, with a more big-picture view.

Other related work includes the ability to use webdav to serve zip files. More significantly, this also ties in with the conversations around a next generation chunking method for the client, with first a blog introducing the challenge here and a follow-up with more details to the proposal. As this work is about using the capabilities of WebDAV, the Files app will be able to use the same interface.

Right now progress on moving the Files app to WebDAV has stalled due to a compatibility issue–Internet Explorer 8 is incapable of handling the needed WebDAV commands, creating issues for the new Files app. Unless IE 8 support gets dropped or another work around implemented, introduction of the new WebDAV based Files app might have to be delayed to a later release.

The OCS logo

The OCS logo


Improving the OCS API

Complementing WebDAV, the OCS API is the other half of the external interface ownCloud offers to third party developers to access data provided by ownCloud apps. It is documented here.

There is work going on to improve the OCS API. To support Smashbox testing, an OCS API was developed for sending, receiving, accepting, and declining remote shares and OCS Share API link shares now always have a URL which fixes issue 16488. As that issue explains, this makes sure that the URL is correct (since we use the URL generator to get the route) and not depend on a client generating the correct URL. It also ensures that if the URL would change in the future the client would directly generate the new URL. It would also make it easier to write an app for URL shortening.

Another part of the effort to improve the OCS Share API is that Javascript is now used to fetch mimetype icons. This is kind of a separation of concenrs. The javascript is resposible for getting the correct icon for a given mimetype (without additional server calls) making sure ownCloud does not have to pass the icon around everywhere. This change was implemented in the Files app, bringing more responsive performance as an added advantage. In other mimetype work, users can add their own mimetypes and icons can now be changed by the theme.

Using Public API Internally

As described above, the Files app uses private PHP AJAX functionality rather than using the public OCS and WebDAV APIs to bring data from an ownCloud Server to the browser. Within the ownCloud Server, a similar situation exists where many ownCloud server apps have been developed using non-public functionality from the Core to do their work (the OC_ namespaces). Often there are public APIs (\OCP namespaces) available and this duplication is also due for cleanup.

Work on this is tracked in issue 4774 and the developers are hopeful that most instances of API duplication can be dealt with during the ownCloud 8.2 release cycle. This “dogfooding” will have similar benefits overall as those in the Files app– reducing the number of code paths allows more focused testing, bug fixing and improvement efforts.

There is quite some progress to report, for example this work which moves files_external to use public API, a pull request moving many core apps from internal OC_Log::write to OCP\Util, this PR which moves the files sharing app (mostly) to OCP\DB and this work on the files app.
php7-transparent

PHP 7 Compatibility

As you might know, the PHP community is preparing for the release of PHP 7 for the end of this year. This first major release in quite some years will bring significant performance improvements between cleanups and new features. ownCloud developers have been making some modifications to ensure that ownCloud will run on this new PHP, like this PR.

Flysystem Storage Backend Support

A new generic storage backend for flysystem adapters was merged. This allows developers to create a storage backend for any external storage supported by flysystem with minimal effort. Flysystem supports many backends already and new ones are easy to build. An example can be found in this Azure external storage backend. Now existing ownCloud external storage systems will have to be adapted to make use of this, decreasing the amount of code ownCloud has to maintain. There is already progress in this area for the FTP external storage app.

Reviving Bookmarks

Blizzz blogged about his decision to make the ownCloud bookmarks app “prosper and flourish” again. He went through the open issues and pull requests, closing many, cleaning others, merging some and fixing more. A beta release has been made and you can expect a final release with many improvements in the ownCloud app store soon.

Command Line Tool Improvements

A final improvement we want to highlight is the work on the occ command line tool. It is now possible to delete older versions of files with the occ tool. Similarly, occ can now get rid of deleted files in the trash. There was also work on a new feature to get/set configuration attributes and several improvements to configure the verbosity of the occ command.

If you want to get involved in coding on ownCloud – check out this page!
datto-ownCloud

Other ownCloud Happenings

On Planet ownCloud, a post from ownCloud.com featured a video of the Datto announcement of ownCloud partnership. This article (forbes.com) explains that Datto, a company with over 5 million customers world-wide, now ships ownCloud as part of their storage solutions. The writer points out that, in the crowded Enterprise File Sync and Share market, solutions have to provide something unique and many companies are looking for ways to store their data on-premise, benefiting from the security advantages this brings. Watch the announcement video at dattocon 2015 on owncloud.com

Note that if you’re an ownCloud contributor, you should get your blog aggregated on owncloud.org/news! Ping Jos with your RSS feed.

We hope you enjoyed this fresh report from ownCloud development!

Thanks to Vincent Petry and others for the tireless catching of embarrassing mistakes

ownCloud

July 30, 2015

Read now:

The ownCloud Infinite Scale Early Adopter Program

The ownCloud Infinite Scale Early Adopter Program

For the past years we have been working on a new project called “Infinite Scale”. For this new file platform it was vital for us to gather feedback efficiently from a group of techies on a regular basis, like partners, customers and future users: thus the Early Adopter Program was born.

read more