Date post: | 21-Jan-2018 |
Category: |
Technology |
Upload: | andy-scherzinger |
View: | 449 times |
Download: | 1 times |
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