9.2 KiB
Nextcloud Android app
Index
- Guidelines
- Issue reporting
- Labels
- PR
- Issue
- Contributing to Source Code
- Developing process
- Android Studio formatter setup
- Contribution process
- Fork and download android/master repository
- Create pull request
- Create another pull request
- Translations
- Developing process
- Releases
- Types
- Stable
- Release Candidate
- Beta
- Version Name and number
- Release cycle
- Release Process
- Stable
- Release Candidate
- Development Beta
- Types
Guidelines
Issue reporting
- Report the issue using our [template][template], it includes all the information we need to track down the issue.
- This repository is only for issues within the Nextcloud Android app code. Issues in other components should be reported in their own repositories, e.g. Nextcloud core
- Search the existing issues first, it's likely that your issue was already reported. If your issue appears to be a bug, and hasn't been reported, open a new issue.
Labels
Pull request
- 1 to develop
- 2 developing
- 3 to review
- 4 to release
Issue
- nothing
- approved
- PR exists (and then the PR# should be shown in first post)
Contributing to Source Code
Thanks for wanting to contribute source code to Nextcloud. That's great!
New contributions are addded under AGPL version 3.
Developing process
We are all about quality while not sacrificing speed so we use a very pragmatic workflow.
- create an issue with feature request
- discuss it with other developers
- create mockup if necessary
- must be approved --> label approved
- after that no conceptual changes!
- develop code
- create pull request
- to assure the quality of the app, any PR gets reviewed, approved and tested by two developers before it will be merged to master
Android Studio formatter setup
Our formatter setup is rather simple:
- Standard Android Studio
- Line length 120 characters (Settings->Editor->Code Style->Right margin(columns): 120)
- Auto optimize imports (Settings->Editor->Auto Import->Optimize imports on the fly)
Contribution process
- Contribute your code in the branch 'master'. It will give us a better chance to test your code before merging it with stable code.
- For your first contribution start a pull request on master.
1. Fork and download android/master repository:
- Please follow SETUP.md to setup Nextcloud Android app work environment.
2. Create pull request:
- Commit your changes locally:
git commit -a
- Push your changes to your GitHub repo:
git push
- Browse to https://github.com/YOURGITHUBNAME/android/pulls and issue pull request
- Enter description and send pull request.
3. Create another pull request:
To make sure your new pull request does not contain commits which are already contained in previous PRs, create a new branch which is a clone of upstream/master.
git fetch upstream
git checkout -b my_new_master_branch upstream/master
- If you want to rename that branch later:
git checkout -b my_new_master_branch_with_new_name
- Push branch to server:
git push -u origin name_of_local_master_branch
- Use GitHub to issue PR
Translations
We manage translations via Transifex. So just request joining the translation team for Android on the site and start translating. All translations will then be automatically pushed to this repository, there is no need for any pull request for translations.
Releases
At the moment we are releasing the app in two app stores:
Types
We do differentiate between three different kinds of releases:
Stable
Play store and f-droid releases for the masses. Pull Requests that have been tested and reviewed can go to master. After the last release candidate is out in the wild for ~2 weeks and no errors get reported (by users or in the developer console) the master branch is ready for the stable release. So when we decide to go for a new release we freeze the master feature wise.
Release Candidate
stable beta releases done via the Beta program of the Google Play store and f-droid. Whenever a PR is reviewed/approved we put it on master. Before releasing a new stable version there is at least one release candidate. It is based on the current master and during this phase the master is feature freezed. After ~2 weeks with no error a stable version will be releaded, which is identically to the latest release candidate.
Development Beta
Done as a standalone app that can be installed in parallel to the stable app. Any PR which is labelled "ready for beta" will be automatically included in the beta app. This label should only set by the main developers.
Version Name and number
Stable / Release candidate
For stable and release candidate the version name follows the semantic versioning schema and the version number has several digits reserved to parts of the versioning schema inspired by the jayway version numbering, where:
- 2 digits for beta code as in release candidates starting at '01'
- 2 digits for hot fix code
- 3 digits for minor version code
- n digits for mayor version code
Examples for different versions:
- 1.0.0
10000099
- 8.12.2
80120200
- 9.8.4-rc18
90080418
beware, that beta releases for an upcoming version will always use the minor and hotfix version of the release they are targeting. So to make sure the version code of the upcoming stable release will always be higher stable releases set the 2 beta digits to '99' as seen above in the examples.
Development Beta
For development beta the version name is in format YYYYMMDD. It is mainly as a reference for reporting bugs and is not related to stable/release candidates as it is an independent app.
Release cycle
- for each release we choose several PRs that will be included in the next release. Currently there are many open PRs from ownCloud, but after merging them, the intention is to choose the PRs that are ready (reviewed, tested) to get them merged very soon.
- these will be merged into master, tested heavily, maybe automatic testing
- after feature freeze a public release candidate on play store and f-droid is released
- ~2 weeks testing, bug fixing
- release final version on f-droid and play store
To get an idea which PRs and issues will be part of the next release simply check our milestone plan
Release process
Stable Release
Stable releases are based on the git master.
- Bump the version name and version code in the AndroidManifest.xml, see chapter 'Version Name and number'.
- Create a release/tag in git. Tag name following the naming schema:
stable-Mayor.Minor.Hotfix
(e.g. stable-1.2.0) naming the version number following the semantic versioning schema
Release Candidate Release
Release Candidate releases are based on the git master and are done between stable releases.
- Bump the version name and version code in the AndroidManifest.xml, see below the version name and code concept.
- Create a release/tag in git. Tag name following the naming schema:
rc-Mayor.Minor.Hotfix-betaIncrement
(e.g. rc-1.2.0-12) naming the version number following the semantic versioning schema
###Development Beta Release Beta releases are based on the git beta and are done independently from stable releases and integrate open PRs that might not be production ready or heavily tested but being put out there for people willing to test new features and provide valuable feedback on new features to be incorporated before a feature gets released in the stable app.
The deployment/build is done once a day automatically. If code has changed a new apk will be published on https://github.com/nextcloud/android/tree/beta/apks and it will also be available on f-droid.