February is the month that ownCloud development picked up steam, following the holiday period and the release freeze. ownCloud 8.0 was released on the 9th so code was free to flow in again, resulting in over 362 pull requests getting merged – almost 100 more than in January. As always, we’re writing about these pull requests as well as other development activities gathered from mailing lists, blogs and whatever is shared with us. Tips are very much welcome! Ping Jos with your input.
The biggest items in February were the release of ownCloud 8, our presence at SCALE and FOSDEM, the many performance improvements in ownCloud and ownCloud arriving to 500,000 students in Germany.
You can read a report on January here.
An important focus for ownCloud 8.1 lies in clean up, improving stability and ease of maintenance, as well as massively improving the performance of ownCloud. There has thus been a lot of work under the hood making operations, such as moving, uploading and syncing files, much faster. Feature improvements worth noting are those to external storage like SFTP and Samba. Also, the Chat app is integrating its user interface much more deeply in to ownCloud and there have been many updates on apps.owncloud.com.
The app framework
As always, Raydiation led the efforts to improve our App Framework, making ownCloud app development even easier–the database layer has been cleaned up framework apps can specify a custom Content-Security-Policy for enhanced security, there is a new StreamResponse, and so on. Furthermore,the Antivirus app was migrated to the App Framework and there is a new API in ownCloud for working with asynchronous tasks. Some usage examples are in the Pull Request.
Under the hood
There has been a lot of under-the-hood work including improving stability and making ownCloud easier to maintain and improve. First up, Sabre/DAV was updated to version 2.1, allowing ownCloud to take advantage of fixed natural sorting, many new features and a cleaner API. doctrine/dbal has been updated to 2.5.1 and phpseclib is now at 0.3.9.
For systems without the php5-intl extension (like shared hosting), bug reporter AW-UC got an update to merged that. Some security hardening was also done, disallowing path traversals in file view. This prevents a misuse of \OC\Files\View by calling it with user-supplied input. In such cases an exception is now thrown.
In cleanup news, OC\Preferences was dropped as per the (in progress) master plan to clean up I*Config classes. LukasReschke found code that never worked – as usual, having our security expert go over code helps with more than just security. He later removed more unused and deprecated code. There was also a big re-factoring effort to split the activity app from recording activities. Similar to the activity extension of the sharing app, the current logic for the sharing, create, delete and other file activities will be done with an activity extension, lowering resource usage of tracking what is going on in your ownCloud.
icewind1991 and LukasReschke have been especially active improving ownCloud performance, andagain, Blackfire.io was used for code profiling to find areas in which to improve.
This PR was introduced as “how to save 99% execution time with 2 simple lines”, bringing the execution time of moving 5000 files from 33 seconds down to 600 miliseconds. Improving the caching of enabled apps and their versions and activity manager improvements sped up their respective apps and storing data in ownCloud was sped up by saving some database queries.
A known performance bottleneck is the ‘propfind’ command, and this optimization to quota calculation is a first step in dealing with it. A ‘per request’ array caching implementation was added (which can be used when no memory cache such as APCu is available) and windaishi contributed an index for file_map. Unfortunately, this last improvement was later discovered to cause issues in MariaDB and had to be backed out again. MariaDB again proved problematic with this performance improvement to file scanning – this time, however, the problem could be fixed. It looks like MariaDB has diverged enough from MySQL to cause such problems and it is good ownCloud has some proper testing in place to catch these issues!
There was a 15% performance improvement in NaturalSort and looking for a user avatar was sped up. But truly epic was the two 15 time speedup for the SAMBA external storage back-end. This was possible thanks to dropping smb4php and wrapping the OS native smbclient or libsmbclient using a new library that is able to use streams as well as reuse existing connections.
New and improved features
In the App manager the search box can now filters apps. In User management, thanks to rullzer, you can now get an overview of which groups a certain user is a member off. In the SFTP external storage backend, mthosting contributed support for custom ports, while rnicoll added public key authentication support.
Also new are Avatars in the share dialog and a 404 page when accessing empty share URL’s. cdamken’s first contribution has fixed scaling problems with PDF previews and Zillode has made it possible to show app-specific favicons.
Smaller, yet equally important, improvements consist mostly of design and usability related improvements include showing the time since the last cron run rather than the absolute time of the last run. sebomoto‘s first contribution added a load of feedback to finish setting up ownCloud and similar attention to detail was paid by cmeh with a clean up of the wording in the setup dialogs. The last change to the Setup was a check for UTF-8 support moving in, as that issue is important enough to stop the installation upon detection.
Outside of the core are apps like News, where joeplus got his first patch in. There is also the Chat app, which features a whole new level of ownCloud integration, Notes, which is being migrated to ownCloud 8, and the Tasks app, in which raimund-schluessler integrated the new search provider.
In the desktop client, rullzer introduced thumbnails in the share dialog. This and other features were released with the recent launch of the1.8 client. The Android app also received a flickr-style thumbnail view of images from tobiasKaminsky.
If you want to get involved in coding on ownCloud check out this page! And if you’d like to see improvements in the mobile clients, we recently posted a blog about contributing to the Android and iOS clients.
On apps.owncloud.com major updates include updates to the eReader app, Storage Charts, Secure Container, XMPP chat and Roundcube to support ownCloud 8. Also, there is the new, and quite awesome, ownCloud Custom tags app as well as a much improved version 1.2 of the Dashboard app and Tasks app.
Devel list conversations
The ownCloud development lists had notable threads including: Defensive Programming, a deprecating API schedule for ownCloud, a call for testers for the Shorty app, and a shout-out to the forum team that has compiled a GREAT list of common upgrade tips and issues for ownCloud 8.
Join the discussions here.
Other ownCloud happenings
On Planet ownCloud our news feed has featured a number of different topics including: the announcement from ownCloud, Inc. that Sciebo is bringing ownCloud to 500,000 students, how ownCloud rocked FOSDEM and SCALE, the ownCloud 8 release (of course), and how to celebrate Software Freedom day, a declaration of love to the ideas behind Free Software, detailing some ownCloud contributions to other projects.
Some informative and educational blogs include a post by Raghu about writing quality CSS, a blog by Thomas about the concepts behind ownCloud’s public API, and another informative technical blog about incremental sync in ownCloud by Klaas and Volkan about using an external ownCloud instance using HTTPS as external storage with ownCloud.
Besides all this online news, there are also real-life ownCloud events taking place! You can meet fellow ownCloud users and developers at ownCloud meetups or come visit us at the conferences we will be attending. You can find the calendar of ownCloud events on owncloud.org/events.
ownCloud meetups are a great chance to learn more about ownCloud or how to get coding work done, plus they’re really fun! If you know of other (regular or not) meetups or are interested in organizing one yourself, check out this page on how to get involved.