+ All Categories
Home > Technology > Nextcloud Android App Development Process Insights

Nextcloud Android App Development Process Insights

Date post: 21-Jan-2018
Category:
Upload: andy-scherzinger
View: 449 times
Download: 1 times
Share this document with a friend
19
Nextcloud Android App Development Process Insights Andy Scherzinger Spare-time Android Dev AndyScherzinger 14th Sept. 2016
Transcript
Page 1: Nextcloud Android App Development Process Insights

NextcloudAndroid App Development

Process Insights

Andy Scherzinger

Spare-time Android Dev

AndyScherzinger 14th Sept. 2016

Page 2: Nextcloud Android App Development Process Insights

Nextcloud Android ClientOverview

• Forked in May 2016

• 4 Feature releases since then

• ~200 new users per day

• Maintained by two spare time devs

• OSS – GPLv2 & AGPLv3

• Published on Play store and F-Droid

Page 3: Nextcloud Android App Development Process Insights

Nextcloud Android ClientOverview

• Instant uplod for photo & video

• Manual uploads

• Multi account capability

• Document provider (read-only)

• File sharing incl. permissions

• Minimal media player

• Multi select with CAB

• Quick actions via FAB

• Respects metered wifi

• Available in 32 languages

Page 4: Nextcloud Android App Development Process Insights

Topics

• General Development Model

• From Idea to Release

• Tools used in between

• Release Channel

Page 5: Nextcloud Android App Development Process Insights

General Development Model

Collective Code Construction Contract - C4vs.

Gitflowvs.

Github Flow

Page 6: Nextcloud Android App Development Process Insights

General Development ModelCollective Code Construction Contract - C4

• Use OSS share-alike licence

• Use Git+Issue Tracker on a hosted platform and document your code style

• Trunk-based development

• Create issue, open PR, get it merged

http://rfc.zeromq.org/spec:42/C4/

master

Page 7: Nextcloud Android App Development Process Insights

General Development ModelGitflow

http://nvie.com/posts/a-successful-git-branching-model/

master

hofixes

release

develop

feature

feature

Page 8: Nextcloud Android App Development Process Insights

General Development ModelGithub Flow

• Create Branch

• Add commits

• Open PR

• Discuss and review code

• Deploy to production

• Merge

https://guides.github.com/introduction/flow/

master

branch

Page 9: Nextcloud Android App Development Process Insights

General Development ModelDecission: custom Github Flow

• Create Branch

• Add commits

• Open PR

• Discuss and review code

• Merge

• Deploy to designated release channel

https://guides.github.com/introduction/flow/

master

branch

Page 10: Nextcloud Android App Development Process Insights

From Idea to Release

1. Open issues for discussion

2. Positive decision on issue

3. Implementation + PR creation

4. Code Review & Fixes

5. Release to designated channel

approved

1. to develop

2. developing

3. to review

4. to release

Page 11: Nextcloud Android App Development Process Insights

Tools used in betweenDevelopment

• Github for

– dvcs

– issue tracking

– to enforce peer reviews

• Travis for

– unit testing (active)

– integration testing (deactivated atm)

– Quality metrics / coverage (tbd)

Octocat by GitHub, Inc. | Travis CI mascot by Travis CI, GmbH

Page 12: Nextcloud Android App Development Process Insights

Tools used in betweenDevelopment

• Transifex for

– translations

– Pushed to github repo via Jenkins job

• Jenkins for

– Pushing translations to the code repo

Transifex by https://www.transifex.com | Jenkins mascot by https://jenkins.io

Page 13: Nextcloud Android App Development Process Insights

Tools used in betweenCommunication

• Quassel (irc) for

– Short living instant discussion

– Quassel saves the irc history (server)

• Discourse for

– Community forum (feedback/discussion)

– Beta/RC announcements

Quassel logo by http://quassel-irc.org | Discourse logo by Civilized Discourse Construction Kit, Inc.

Page 14: Nextcloud Android App Development Process Insights

Release channelsBeta releases

Feature

beta1 beta2 beta3 beta4 beta5

Release

feature branch

to review to release

Page 15: Nextcloud Android App Development Process Insights

Release channelsFrom rc to stable

1.2.0 1.3.01.2.0 RC1 1.2.0 RC2 1.3.0 RC1

Feature Release

~2 weeks ~2 weeks

Page 16: Nextcloud Android App Development Process Insights

Release channelsFrom beta to stable

1.2.0 1.3.01.2.0 RC1 1.2.0 RC2 1.3.0 RC1

Feature

beta1 beta2 beta3 beta4 beta5

Release

Page 17: Nextcloud Android App Development Process Insights

Release channelsFrom beta to stable - Summary

• Labeled „3. to review“ gets merged to beta

• Beta branch gets released as required

• Beta app installed in parallel to stable/RC

• Release Candidate needs to survive in the wild for two weeks

– then stable gets released

• Using semantic versioning

Semantic verisoning: http://semver.org/

Page 18: Nextcloud Android App Development Process Insights

Nextcloud Android AppDevelopment Insight- Summary

• Provide an easy entrance

• As little process as possible

• As much process as necessary

• Document your process

• Utilize release channels for community power

• Collaborate, plan and discuss in the open

easy, open & transparent

Page 19: Nextcloud Android App Development Process Insights

Some linksFor your after work browsing

• Development / Git Processes

– http://rfc.zeromq.org/spec:42/C4/

– http://nvie.com/posts/a-successful-git-branching-model/

– https://guides.github.com/introduction/flow/

• Nextcloud Android App Process & Links

– https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md

– https://www.transifex.com/nextcloud/nextcloud/android/

– https://webchat.freenode.net/?channels=nextcloud-mobile

– https://travis-ci.org/nextcloud/android/builds/

• Used Tools

– https://www.transifex.com

– https://travis-ci.org

– http://semver.org

– https://jenkins.io

– https://lgtm.co

– http://www.discourse.org

– http://quassel-irc.org


Recommended