2014-12-20



We’re nearing the end of the year but with 191 merged pull requests in the last two weeks of November, development was nowhere near slow. For this report we have pulled together activities from development mailing lists, blogs, coding work and everything else community members share with us. Tips are very much welcome! Ping Jos with your input.

This has been a very busy period for the ownCloud community. In the area of code, the biggest items during the last weeks of November were massive API work and refactoring in Core and the new QR share and Polls apps as well as big upcoming changes in Passman. And you should not have missed the big announcement of the open sourcing of the iOS app, a call for help to clean up bugs in ownCloud and the announcement of ownCloud event resources! Read on to learn more details on these and all other happenings in the ownCloud universe.

You can read a report on the first half of November here.

Development

Core had a focus on API improvements and cleanups, while the Apps moved forward with a variety of features including a rewrite of the Bookmarks app, gif playing in the Gallery,

ownCloud Core

with 93 PR’s in core, a strong focus in this period was on cleaning up, refactoring and improving the API ownCloud offers to App developers. A few performance improvements and many bugfixes made it in as well. But let’s start with some feature, security and performance improvements.

Previews are cleaned up deleted when a folder is removed

Adam Williamson contributed an update of the Google Drive external storage app tot he latest version of the goolge API PHP client library.

An improvement to SQLite handling can lead to up to three times better performance on low-end hardware

LDAP got unified count filters and introduced display name attribute detection, improving compatibility with various LDAP setups

By checking for XMLWriter class, a php module not installed on all systems, ownCloud can warn users. The documentation has also been adjusted to mention this

For trusted domains, the port check has been removed, fixing lots of small issues. Testing of this issue is still ongoing to make sure it works properly and safely.

That the logic to show the right user the right shares can be complicated is shown in this PR, fixing the first half of of this issue

A change was introduced to make sure ownCloud wouldn’t try to rotate TIFF files in the thumbnail handling code. This would be needed for a performance improvement in thumbnail handling which got unfortunately orphaned. If you’re interested in further hacking on this to speed up showing files with thumbnails, checkout this pull request!

thanks to this fix user management can now properly search in groups as well as users

Users will now get a warning about the dangers of password resetting when their files are encrypted and in the shared files list, the delete button is no longer visible to avoid the confusion with unsharing

To improve security and privacy protection of ownCloud, this PR adds the OCSS API header by default to all jQuery AJAX requests done from oC JS to prevent being the cookies re-used from another domain

phpass was replaced with the new Hasher interface. Developers were notified by mail

Improved session handling makes public sharing of files when using the encryption app more robust and more session handling improvements were merged here

As another privacy improvement, this PR makes sure ownCloud doesn’t disclose the relative directory path for single shared files of users

Below a summary of the changes and improvements to the ownCloud API in the last weeks of November.

work on dependency handling for Apps is in progress. An xml parser was introduced (part two). This is loosely related to the improved app management merged earlier, and coming with ownCloud 8 as well.

The AppFramework gained the ability to modify and access cookies. The documentation was also taken care off.

Activities now can have priorities, making it possible for more apps to reuse them. Some needed cleanup followed. The activity manager was also modified to deal with the new reality.

It is now possible to override the route name generation, thanks to this PR. But with this discussion, Raydiation is opening “another Pandora’s box“, according to DeepDiver1975

There is now a public interface for enabling/disabling apps, prompting a ticket to track progress on further refactoring of \OC_App

A function was added for apps to load translations from JavaScript

The removal of namespace permission constants, making all interfaces/classes autoloadable, autoloading preview providers and the move of constants from GET_TYPE to OC\Files finished the work started last year to turn all namespace constants into class constants

Besides API improvements benefiting ownCloud App developers, there has been a lot of work done to clean up code and refactoring core ownCloud code to improve maintainability, stability and make room for further improvements.

Deprecation of \OC::$session resulted in work in a variety of areas but it has now been removed and cleaned up

Several more old API wrappers and calls were deprecated and oparoz got rid of deprecated switches in the command line client

In preparation of a cleanup of I*Config classes, Morris replaced all static calls to OC_Config and OC_Preferences with calls to OCP\IConfig

More cleanup work related to handling configuration was done with dropping OC_Preferences::getUsers and getApps and OC_Preferences refactoring

Some legacy code was let go, a notification was send to the mailing list about this last PR. Code related to upgrading from ownCloud 6 to 7 disappeared as well. So did this and a dependency of some commands on an old config object was cleaned up as well

As part of an effort to refactor shared storage (which is made possible thanks to the removal of the Shared folder in ownCloud 7), Jail and PermissionsMask storage wrappers were merged. This PR was central to this work that once fully finished will bring improved performance and more robust shared folder behavior.

More refactoring took place when DatabaseSetupException handling was fixed and a good look at the storage handling code kicked of some changes like this one

One PR highlighted: Dependency Injection and performance

A small change, caching the results of available languages, makes page loading slightly faster. In the comments, MorrisJobke pointed out that Dependency Injection could get us similar gains for all static functions in ownCloud, giving a noticeable performance increase all over.

He explained this further on IRC.

Dependency injection is a software pattern which helps a developer to not repeatedly call some globally available code parts, but instead request what he needs in advance. These are then registered at a Dependency Injection Container. For example, you tell the code that you need: a User instance, a Database connection and a config object. This is looked up in the container, where it is also noted how these objects themselves are constructed (what dependencies they require) and once the object is instantiated, the container holds it. For every additional request for this object, it isn’t recreated, but the previously generated one is used, saving time! As noted in the pull request about caching the available languages, the function providing them was called 8 times while a page was generated. You can imagine that avoiding this decreases overhead significantly and could speed up page loading in ownCloud all over.

Some examples:

iuser.php the user interface and the method needed in the given example above

application.php: mailsettings controller that needs several instances and they are specified in the container to put them in

If you find this interesting and would like to help speed up ownCloud, Morris and Lukas would be more than happy to help you get going. Ping them on IRC under ‘MorrisJobke’ and ‘AnybodyElse’ or mail the ownCloud devel mailing list and note you’d like to take on this challenge!

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



The Polls app in action

ownCloud Apps

The design of ownCloud is such that the apps is where most of the ‘cool stuff’ happens! The apps maintained in the ownCloud repository had over 60 pull requests merged. Some of the most interesting merges include:

The Bookmarks app was rewritten and refactored for the App Framework thanks to the hard work of ganomi, who is now maintainer of the app

Thanks to oparoz, the gallery now plays gifs when viewing them fullscreen

morsik contributed to the Music app, adding info about authentication so users know that Ampache needs an apikey rather than the ownCloud password and made sure the app returns the correct album count while wakeup removed obsolete languages

The chat app added presence and synchronise roster with the contacts app so you connect to your facebook account, your friends are listed in the side bar to chat with. Both changes where done by LEDfan

nickel-chrome contributed automatic account creation to the Mozilla Sync app

The contacts app progressed thanks to jbtbnl who fixed the trash can and hamburger icon size and ockham who made it possible to share contact groups

The news app improved its dealing with some more websites

In the Activity app, some cleaup work was done and a bug was fixed and code tests were added. The app now follows the users’ timezone

The Android app mostly had small fixes and improvements

On apps.owncloud.com, we welcomed the QR share and Polls apps as well as updates to several existing entries. We also have an update on what is going on with the Passman app for you!

The brand new QR Share allows you to generate a QR code for share links

Also new is Polls, which lets you create a wide variety of public polls. Find the app on github – it already has had contributions from 5 different people and is moving fast!

Imprint updated to 0.2.2, fixing a crash, cleaning up some code and introducing markdown support to complement the existing html and plain text

The user_sql app, which lets you authenticate against an arbitrary SQL database, added support for Joomla 2.5.18+ encryption and a bugfix

The youtube downloader updated to 0.4, improving performance and fixing some bugs

Version 1.3 of the Large File Upload app removed dependencies for the App Framework and included some CSS fixes but the author notes that there is more work to be done there

Old Menu bugfixed up to 0.2.1

The files_clipboard app offers a minimal clipboard to move files between folders in the files app and was updated with some bug fixes

Passman update

Passman author brantje mailed about the Passman password manager app he’s working on. A big update is coming “when it is ready”, version 2.0.

This new release uses AngluarJS besides jQuery and introduces a series of improvements:

Password sharing

The idea behind this feature is to share passwords with other users or even groups and public links, with expiration based on either date or how many times the link was opened (making it suitable for sharing of one-time passwords). This is build with help from animalillo!

OTP generator

This can load a two-factor authentication QR code in passman and save this; and generates the OTP codes for login when needed. Brantje noted that this is useful when your phone battery is empty and you need to log in your Google account with 2-factor authentication – no need for a backup code thanks to Passman!

A new and improved password generator

Password strength indicator which gives an estimate for how long it takes to crack a password

Password strength scanner can show you all weak passwords

Abitlity to remove custom fields and use custom icons

Permanent removal

Fast search

support for the Activity app, showing:

When an item expires; is shared; soft or hard deleted; and recovered

As you see, the new Passman brings large improvements. If you’re interested in helping out with coding or testing, check out the github repo!

Mailing list

Besides the emails referenced already, some interesting conversations from the devel mailing list include:

an email about the ownCloud release schedule and versioning changes

A note from a contributor interested in developing client side encryption

and a notification that a team of 5 developers is working on a Ubuntu Touch ownCloud app, code for which you can find on launchpad

You can join the discussions on the mailing list here.



Other ownCloud happenings

On Planet ownCloud, ownCloud contributor blogs are gathered. Blogs in this period include the big announcement of the open sourcing of the iOS app, a call for help to clean up bugs in ownCloud and the announcement of ownCloud event resources.

The ownCloud iOS app source code is now available under the GPLv3

Some ownCloud developers gave a very successful workshop at CERN

The ownCloud developers asked for help with triaging and cleaning up bug reports and while December 5 is long gone, if you’re still willing to help, there is no reason not to!

Jos asked what’s holding ownCloud back?

If you want to organize meetups or go to events to represent ownCloud, we now got you covered with online and physical materials including presentation slides, flyers and posters. Find a calendar of ownCloud events on owncloud.org/events.

Stathis wrote an informative blog about organizing a local community

Please note that if you’re an ownCloud contributor, you should get your blog aggregated on owncloud.org/news! Ping Jos with your RSS feed. And if you want to become part of the action but aren’t yet, check out our contribute page on owncloud.org to find out how to get involved and become part of the awesome that is ownCloud!

Show more