The source code of the ownCloud iOS app was made available under the GPL this past November. The Android app has been open source for a while and managed to build up a healthy community.
Unfortunately, there have yet to be many contributions to the iOS app, but there too, the availability of the code means people can step up if they want to improve it! In this blog we’ll discuss the state of both apps and how you can to contribute to them.
Activity in the Android and iOS apps
The ownCloud Android app has been open source for a long time and a lot is going on. The most prolific contributor would have to be Tobias Kaminsky who is working his way to 30 pull requests, with over 20 merged (note: many went in through other pull requests). Altogether, though, 37 people have contributed to the Android app already.
The iOS app, having just been open sourced, has not seen that much help yet from outside our ream of ownCloud, Inc. employees.
How to get your code in?
So let’s assume you have a change you’d like to see in the Android or iOS app and you have some experience with Android or iOS development — or at least the languages they are written in. Here is what you can do:
- Read up on contributing to ownCloud with our general guidelines and our code of conduct, as well as about the specific apps : iOS, Android.
- Decide if you’d like to sign the contributor agreement or contribute your code under the MIT license.
- Then it is time to check out the code, get building, and code what you’d like to have. It is recommended that you create an issue to announce you’re working on this, that way you get feedback, UI suggestions from our interaction design team and, once you have a basic prototype, perhaps help and reviews early!
- It is key to keep changes proposed for inclusion separate and small. The bigger and more hairy a pull request (PR) grows, the harder it is to get it in. So split things up where you can into smaller changes — if you need a small improvement like an API addition for a big feature, get the API change in via a small PR first rather than adding it to the big piece of work.
- Note that both mobile apps develop against the develop branch, where we keep a master copy of the code published on the app markets. So fork over the develop branch and get coding there!
- Once your code is in shape people will be looking at it. Ask questions and answer them, even ping people by name if you’d like them to review your code! After two positive reviews one of the maintainers will merge the code. Sometimes it has to be reworked a bit and a maintainer will take it to another pull request, but you will figure it out — we talk plenty on github!
For example, see how LukeOwncloud fixed a problem that got merged: on downgrading upload db, delete and re-create #798
Even if things are sometimes a little more complicated, as in this case of a nice new feature by Tobias Kaminsky, we all work together to get improvements integrated: Thumbnail for upload #746
As you can see, “together” is the keyword. We like to help each other out and you are always free to ask questions if you have any!
Junior Jobs
If you’d like to try your hand on something relatively simple at first, consider one of the Junior Jobs for iOS or Android.
A Junior Job is a task which the maintainers have deemed relatively simple. That doesn’t mean it’s just a five minute job, especially if you’re unfamiliar with the code base, you’ll still busy for a good while! However, going through the process is a great way of finding out how it all works and getting yourself prepared for a bigger task.
Of course, you’re also very much welcome to ask for help, ideas, and mentoring. You can ask questions " target="_blank" rel="noopener noreferrer">on our IRC channel or on the development mailing list!
Building a third party app
If instead you’d like to build an app that can use ownCloud to store and sync data, the iOS and Android libraries are at your disposal! These are very permissively licensed and can thus be included in your app, which takes care of the talking to the ownCloud server. You can find the ios-library here and the android-library here.
Both have a simple example use case of the library, the OCLibraryExample for iOS and the sample_client for Android. Documentation for developing an app with the client libraries is available for iOS and Android and you won’t be the first – see for example Crypto Cloud and Cloud Music for iOS.
Are you app for it?
Contributing to an open source project isn’t the easiest thing in the world but, as Lukas notes in his blog about contributing to open source projects:
“You too can be one of those hidden heroes ensuring that open-source rocks the world”