{"id":7944,"date":"2015-03-26T14:24:48","date_gmt":"2015-03-26T14:24:48","guid":{"rendered":"https:\/\/owncloud.com\/?p=7944"},"modified":"2015-03-26T14:24:48","modified_gmt":"2015-03-26T14:24:48","slug":"contributing-to-the-owncloud-mobile-apps","status":"publish","type":"post","link":"https:\/\/owncloud.com\/de\/blogs\/contributing-to-the-owncloud-mobile-apps\/","title":{"rendered":"Contributing to the ownCloud mobile apps"},"content":{"rendered":"<div id=\"attachment_7952\" style=\"width: 298px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-7952\" class=\"wp-image-7952 size-large\" src=\"https:\/\/owncloud.com\/wp-content\/uploads\/2015\/03\/Screenshot_2015-03-10-11-34-38-576x1024.png\" alt=\"The Android app\" width=\"288\" height=\"512\" \/><p id=\"caption-attachment-7952\" class=\"wp-caption-text\">The Android app<\/p><\/div>\n<p>The source code of the ownCloud iOS app was <a href=\"https:\/\/owncloud.com\/blog\/want-to-add-a-feature-to-the-owncloud-ios-app-now-you-can\" target=\"_blank\" rel=\"noopener noreferrer\">made available under the GPL<\/a> this past November. The Android app has been open source for a while and managed to build up a healthy community.<\/p>\n<p>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&#8217;ll discuss the state of both apps and how you can to contribute to them.<\/p>\n<h2>Activity in the Android and iOS apps<\/h2>\n<p>The ownCloud Android app has been open source for a long time and a <a href=\"https:\/\/github.com\/owncloud\/android\/pulls\" target=\"_blank\" rel=\"noopener noreferrer\">lot<\/a><a href=\"https:\/\/github.com\/owncloud\/android\/pulls\" target=\"_blank\" rel=\"noopener noreferrer\"> is going on<\/a>. The most prolific contributor would have to be <a href=\"https:\/\/github.com\/owncloud\/android\/issues?q=is%3Apr+is%3Aopen+author%3AtobiasKaminsky\" target=\"_blank\" rel=\"noopener noreferrer\">Tobias Kaminsky<\/a> who is working his way to 30 pull requests, with <a href=\"https:\/\/github.com\/owncloud\/android\/issues?q=is%3Apr+author%3AtobiasKaminsky+is%3Aclosed\" target=\"_blank\" rel=\"noopener noreferrer\">over 20 merged<\/a> (note: many went in through other pull requests). Altogether, though, 37 people have <a href=\"http:\/\/projects.bitergia.com\/ownCloud\/browser\/repository.html?repository=android&amp;ds=scm\" target=\"_blank\" rel=\"noopener noreferrer\">contributed to the Android app already<\/a>.<\/p>\n<p>The iOS app, having just been open sourced, has <a href=\"https:\/\/github.com\/owncloud\/iOS\/pulls\" target=\"_blank\" rel=\"noopener noreferrer\">not seen that much help yet<\/a> from outside our ream of ownCloud, Inc. employees.<\/p>\n<h2>How to get your code in?<\/h2>\n<p>So let&#8217;s assume you have a change you&#8217;d like to see in the Android or iOS app and you have some experience with Android or iOS development &#8212; or at least the languages they are written in. Here is what you can do:<\/p>\n<ul>\n<li>Read up on contributing to ownCloud with our <a href=\"https:\/\/doc.owncloud.org\/server\/8.0\/developer_manual\/general\/codingguidelines.html\" target=\"_blank\" rel=\"noopener noreferrer\">general guidelines<\/a> and our <a href=\"https:\/\/doc.owncloud.org\/server\/8.0\/developer_manual\/general\/code-of-conduct.html\" target=\"_blank\" rel=\"noopener noreferrer\">code of conduct<\/a>, as well as about the specific apps : iOS, <a href=\"https:\/\/github.com\/owncloud\/android\/blob\/develop\/CONTRIBUTING.md\" target=\"_blank\" rel=\"noopener noreferrer\">Android<\/a>.<\/li>\n<li>Decide if you&#8217;d like to <a href=\"https:\/\/owncloud.com\/contribute\/agreement\/\" target=\"_blank\" rel=\"noopener noreferrer\">sign the contributor agreement<\/a> or contribute your code <a href=\"http:\/\/opensource.org\/licenses\/MIT\" target=\"_blank\" rel=\"noopener noreferrer\">under the MIT license<\/a>.<\/li>\n<li>Then it is time to <a href=\"https:\/\/github.com\/owncloud\/ios\" target=\"_blank\" rel=\"noopener noreferrer\">check out the code<\/a>, get building, and code what you&#8217;d like to have. It is recommended that you create an issue to announce you&#8217;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!<\/li>\n<li>It is key to keep changes proposed for inclusion separate and small. The bigger and more hairy a pull request (<a href=\"https:\/\/help.github.com\/articles\/creating-a-pull-request\/\" target=\"_blank\" rel=\"noopener noreferrer\">PR<\/a>) grows, the harder it is to get it in. So split things up where you can into smaller changes &#8212; 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.<\/li>\n<li>Note that both mobile apps develop against the <em>develop<\/em> 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!<\/li>\n<li>Once your code is in shape people will be looking at it. Ask questions and answer them, even ping people by name if you&#8217;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 &#8212; we talk plenty on github!<\/li>\n<\/ul>\n<p>For example, see how <a href=\"https:\/\/github.com\/LukeOwncloud\" target=\"_blank\" rel=\"noopener noreferrer\">LukeOwncloud<\/a> fixed a problem that got merged: <a href=\"https:\/\/github.com\/owncloud\/android\/pull\/798\" target=\"_blank\" rel=\"noopener noreferrer\">on downgrading upload db, delete and re-create #798<\/a><\/p>\n<p>Even if things are sometimes a little more complicated, as in this case of a nice new feature by <a href=\"https:\/\/github.com\/tobiasKaminsky\" target=\"_blank\" rel=\"noopener noreferrer\">Tobias Kaminsky<\/a>, we all work together to get improvements integrated: <a href=\"https:\/\/github.com\/owncloud\/android\/pull\/746\" target=\"_blank\" rel=\"noopener noreferrer\">Thumbnail for upload #746<\/a><\/p>\n<p>As you can see, \u201ctogether\u201d is the keyword. We like to help each other out and you are always free to ask questions if you have any!<\/p>\n<div id=\"attachment_7953\" style=\"width: 310px\" class=\"wp-caption alignright\"><a href=\"https:\/\/owncloud.com\/wp-content\/uploads\/2015\/03\/iOS-app.jpeg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-7953\" class=\"wp-image-7953 size-full\" src=\"https:\/\/owncloud.com\/wp-content\/uploads\/2015\/03\/iOS-app.jpeg\" alt=\"The iOS app\" width=\"290\" height=\"514\" \/><\/a><p id=\"caption-attachment-7953\" class=\"wp-caption-text\">The iOS app<\/p><\/div>\n<h4>Junior Jobs<\/h4>\n<p>If you&#8217;d like to try your hand on something relatively simple at first, consider one of the Junior Jobs for <a href=\"https:\/\/github.com\/owncloud\/ios\/issues?q=is%3Aopen+is%3Aissue+label%3A%22Junior+Job%22\" target=\"_blank\" rel=\"noopener noreferrer\">iOS<\/a> or <a href=\"https:\/\/github.com\/owncloud\/android\/issues?q=is%3Aopen+is%3Aissue+label%3A%22Junior+Job%22\" target=\"_blank\" rel=\"noopener noreferrer\">Android<\/a>.<\/p>\n<p>A Junior Job is a task which the maintainers have deemed relatively simple. That doesn&#8217;t mean it&#8217;s just a five minute job, especially if you&#8217;re unfamiliar with the code base, you&#8217;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.<\/p>\n<p>Of course, you&#8217;re also very much welcome to ask for help, ideas, and mentoring. You can ask questions <a href=\"irc:\/\/#owncloud-dev@freenode.net\" target=\"_blank\" rel=\"noopener noreferrer\">on our IRC channel<\/a> or on the <a href=\"https:\/\/mailman.owncloud.org\/mailman\/listinfo\/devel\" target=\"_blank\" rel=\"noopener noreferrer\">development mailing list<\/a>!<\/p>\n<h3>Building a third party app<\/h3>\n<p>If instead you&#8217;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 <a href=\"https:\/\/github.com\/owncloud\/ios-library\" target=\"_blank\" rel=\"noopener noreferrer\">ios-library here<\/a> and the <a href=\"https:\/\/github.com\/owncloud\/android-library\" target=\"_blank\" rel=\"noopener noreferrer\">android-<\/a><a href=\"https:\/\/github.com\/owncloud\/android-library\" target=\"_blank\" rel=\"noopener noreferrer\">library here<\/a>.<\/p>\n<p>Both have a simple example use case of the library, the <a href=\"https:\/\/github.com\/owncloud\/ios-library\/tree\/master\/OCLibraryExample\" target=\"_blank\" rel=\"noopener noreferrer\">OCLibraryExample for iOS<\/a> and the <a href=\"https:\/\/github.com\/owncloud\/android-library\/tree\/master\/sample_client\" target=\"_blank\" rel=\"noopener noreferrer\">sample_client for Android<\/a>. Documentation for developing an app with the client libraries is available for iOS and Android and you won&#8217;t be the first &#8211; see for example <a href=\"https:\/\/itunes.apple.com\/us\/app\/crypto-cloud-lite-client-safe\/id956567465?l=es&amp;mt=8\" target=\"_blank\" rel=\"noopener noreferrer\">Crypto Cloud<\/a> and <a href=\"https:\/\/itunes.apple.com\/us\/app\/cloud-music-best-app-to-stream\/id888603652?l=en&amp;mt=8\" target=\"_blank\" rel=\"noopener noreferrer\">Cloud Music<\/a> for iOS.<\/p>\n<h2>Are you app for it?<\/h2>\n<p>Contributing to an open source project isn&#8217;t the easiest thing in the world but, as Lukas notes in his <a href=\"https:\/\/statuscode.ch\/2015\/02\/contributing-back-to-open-source\" target=\"_blank\" rel=\"noopener noreferrer\">blog about contributing<\/a> to open source projects:<\/p>\n<blockquote><p>&#8222;You too can be one of those hidden heroes ensuring that open-source rocks the world&#8220;<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>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 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":78665,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[342,332,333,335,341],"tags":[],"class_list":["post-7944","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud","category-coding","category-community","category-development","category-news-from-owncloud"],"acf":[],"_links":{"self":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/7944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/comments?post=7944"}],"version-history":[{"count":0,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/7944\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/media\/78665"}],"wp:attachment":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/media?parent=7944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/categories?post=7944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/tags?post=7944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}