nextcloud android app development process insights

Post on 21-Jan-2018

450 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

NextcloudAndroid App Development

Process Insights

Andy Scherzinger

Spare-time Android Dev

AndyScherzinger 14th Sept. 2016

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

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

Topics

• General Development Model

• From Idea to Release

• Tools used in between

• Release Channel

General Development Model

Collective Code Construction Contract - C4vs.

Gitflowvs.

Github Flow

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

General Development ModelGitflow

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

master

hofixes

release

develop

feature

feature

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

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

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

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

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

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.

Release channelsBeta releases

Feature

beta1 beta2 beta3 beta4 beta5

Release

feature branch

to review to release

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

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

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/

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

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

top related