The Three ownCloud Development Priorities

Deep Magic
We recently blogged about the 6 ownCloud user interaction design principles from a conversation with ownCloud designer Jan. In this blog, we talked to ownCloud project lead Frank to cover the priorities underlying technical development: keeping data safe, being easy to use and being fast. Why these three and what happens when they conflict?

Primary Goal

Towards an end user the main goal of ownCloud is to, without any work on their part, always do what the user expects. This might be a captain-obvious statement and seem like a massive over-simplification, but it is an important goal to keep in mind. Frank recently blogged about the new ownCloud slogan “A safe home for all your data” and this forms the base under the three rules for ownCloud development decisions.

click to learn more about our security measures
Security is important for ownCloud.

Rule 1: keep data SAFE

Doing what the user expects, of course, includes not losing data. ownCloud should NEVER lose user data. This again might seem obvious but due to both technical and social circumstances there are countless situations where users could end up losing data, many of which are not even due to faults in ownCloud itself. We have to think of each of those and do something about it before that happens and think beyond the ownCloud code itself!

Compare this to being a car company. Your first priority should be–: nobody dies! So you make sure that the care you give is bigger and strongera bigger, stronger care. But what if people don’t check tire pressure? You have to warn them, beep and blink. If the user forgets the seat belt, you have to remind them. Is that annoying? Yes. Will they dislike it? Yes. Do you offer a switch to turn it off? No, you must force the user to be safe.

We follow the same rule: you want to get rid of all ways users could lose data, even if it is due to a problem in the underlying technology rather than ownCloud itself and even if it is the users’ fault. We could say “you didn’t read the documentation;, your fault” or “you didn’t do a backup;, your fault,” but this is not the right way of dealing with people and their data.

Security is a part of this, of course, and security is indeed one of these things people often find annoying. But, to keep their data safe and secure, you have to make tough choices sometimes.

Click to learn more about UI design by ownCloud
ownCloud 8.2 introduced a easier, cleaner UI

Rule 2: be easy to use

The second key goal for ownCloud is to be easy to use. This not only means having an easy, simple user interface, but also to try and avoid making the user do manual work. And this is extremely hard. Take updating – you want the upgrade to happen by simply overwriting the files with a new version. The rest should be handled by ownCoud. This is freakishly hard to do in a way that is 100% reliable (see rule number one!) and a constant focus in our development!

Rule 3: be as fast as possible

The third rule is simple: ownCloud should be fast. Nobody likes to wait!

Together

The challenge is how these three goals relate to one another. Do you compromise data safety for speed? Do you reduce security to make ownCloud easier to use? Is it acceptable to run an upgrade automatically even if that risks data loss in 0.01% of the upgrades?

We put the rules in this order for a reason– we never compromise rule 1 for 2 or 3, nor 2 for 3. Don’t ever lose user data and be easy to use and fast as long as you don’t compromise safety!

click to learn more
We use Blackfire to profile our code.

This is a constant topic of discussion and something to always stay on top off. There are always many ways to think of a problem. Take warnings. ownCloud tells you when your user folder is world-readable, as that is a security thread. This annoys some users and they have asked for a button to ignore this warning. We have not added this, even though people call our support and ask how to remove the warning! Our answer is– do what the documentation tells you and secure the installation. We don’t offer a way to hide a problem! Users even submit bugs about this– ownCloud claims it can’t connect to the internet and certain functions are missing. Well, it says that for a reason – it is not a bug! Though, in this case, we allowed users to disable the warning in the config file as it was functionality-related, not a security or data safety problem.

Sometimes, you can use clever design to help the user not lose data. Offering an undo for many actions and use of the trashcan are two ways of doing that. An example involving speed vs safety is when we discussed a config option where ownCloud will never do the database migration test again because it takes so much time during the upgrade. That is essentially a feature to permanently remove a safety feature. Frank was clearly not a big fan of it, believing we always protect the user, even if they don’t like it!

We thus continue to put effort in all these areas. While ownCloud 9 will make significant improvements in speed, it also enables clients to store and retrieve checksums on files they sync with the server. Is it likely that a file gets damaged while it is being sent over a secure connection to the server? Not at all, but even though it is extremely, extremely rare, an extra layer of protection won’t hurt and future releases will expand on this new layer of data safety.

Together, these three priorities, when developing ownCloud, guarantee that it remains a stable, secure home for all your data, while being easy to use and fast!

What do you think about our priorities in this regard? Your input is welcome and you can always get involved to make it happen!

6 Responses to “The Three ownCloud Development Priorities”

  1. Christian

    I do like your priorities and you wrote a nice blog post about it, but as a user this is not what I see ownCloud doing.
    I use ownCloud in an business environment with about 40 to 50 users.

    Rule 2 – I agree with. Don’t think we got any user complaints about ownCloud being difficult to use so you manage to follow this rule perfectly.

    Rule 1 – Bugs happen and usually you (ownCloud) take care of them so I would also agree that this seems like one of the ownCloud priorities.

    Rule 3 – This is the one I’m not sure about at all.
    The desktop client works but it isn’t the fastest. The webinterface also works fast enough unless you do a search then it might take a while. However we for example use a lot of webDav connections and typing this comment probably took the same time as opening some folders with webDav 🙁

    Also there seem to be more and more features being added to ownCloud that seem to distract from those rules.
    I’m sure there are people who want to tag all sorts of files, do video conferencing out of a file storage application or use it as an e-mail client or be able to edit pictures online or …
    But more features also means more possibilities for bugs and other problems.

    I guess from my point I would wish ownCloud would really concentrate on your 3 rules and not try to do everything under the sun too.

    Christian

    • Jos

      Performance is very important but it’s true that we’ve got a lot of work to do there. We make continuous progress, even when sometimes we have to pick 1 or 2 over performance. And note that scalability and speed can actually bite each other and we have to provide and balance both.

      With regards to features added, comments and tags are quite central to using ownCloud. It is all about files, after all. And you’ll see that especially in the enterprise features coming in 9.0 enterprise edition – tags make some great stuff possible.

      Things like video conferencing and office are done by third parties as apps – it neither costs us time nor does it impact the performance of ownCloud, it just grows and enables our ecosystem which brings more users, resources and development to ownCloud. Nothing bad about that at all. With regards to Mail, Calendar and Contacts – for many home users these are core functions and while we don’t support them for enterprise, with millions of users depending on them we put in some effort from the company side to enable them, too.

      The thing is, ownCloud is immensely flexible so it is used in many, many scenario’s. There’s loads of functionality you won’t need in most scenario’s you would use ownCloud in, it’s just that it is always different things you won’t need 😉

      That’s why ownCloud is so modular: you can disable sharing if you just use it for document storage, heck, you can disable versioning, commenting, tags, almost everything.

      Now I won’t say that less time spend on any of those features wouldn’t mean more on the features YOU use, that’s certainly true–like for any product. But on the enterprise side, we have got to do what most customers want; and on the community side, what users need and what contributors want to work on. It’s always a balance between various needs and the available resources. As small/medium business you help with that if you’re a customer of Inc or contribute back in other ways 😉

  2. Bostjan

    “enables clients to store and retrieve checksums on files they sync with the server”
    I’m looking for this kind of solution for a long time. I’m sad that it was not available sooner.

    • Jos

      It wasn’t a hugely invasive change – if you’d been interested and knowledgeable of PHP you could’ve jumped in 😉

  3. Gabriel

    Really enjoy ownCloud and telling others about it with word of mouth and blog.

    I’m really looking forward to the 2FA integration. It the only real missing piece for my use.

    https://github.com/owncloud/core/issues/12102

    • Jos

      We plan on having this for 9.1, no promises of course but it seems likely.

Comments are closed.