reformat headlines

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
Andy Scherzinger 2021-05-25 09:22:58 +02:00
parent d43fe8938b
commit 69c7873626
No known key found for this signature in database
GPG key ID: 6CADC7E3523C308B
3 changed files with 21 additions and 60 deletions

View file

@ -1,6 +1,5 @@
# [Nextcloud](https://nextcloud.com) Talk for Android app
# Index
1. [Guidelines](#guidelines)
1. [Issue reporting](#issue-reporting)
@ -41,31 +40,25 @@
1. [Release Candidate Release](#release-candidate-release)
1. [Alpha Release](#alpha-release)
# Guidelines
## Issue reporting
* [Report the issue](https://github.com/nextcloud/talk-android/issues/new/choose) and choose bug report or feature request. The template includes all the information we need to track down the issue.
* This repository is *only* for issues within the Nextcloud Talk Android app code. Issues in other components should be reported in their own repositories, e.g. [Nextcloud server](https://github.com/nextcloud/server/issues)
* Search the [existing issues](https://github.com/nextcloud/talk-android/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
* 2. developing
* 3. to review
### Issue
* nothing
* approved
* PR exists (and then the PR# should be shown in first post)
### Bug workflow
Every bug should be triaged in approved/needs info in a given time.
* approved: at least one other is able to reproduce it
@ -73,14 +66,13 @@ Every bug should be triaged in approved/needs info in a given time.
* if no response within 1 months, bug will be closed
* pr exists: if bug is fixed, link to pr
# Contributing to Source Code
Thanks for wanting to contribute source code to Nextcloud. That's great!
New contributions are added under GPL 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
@ -92,8 +84,8 @@ We are all about quality while not sacrificing speed so we use a very pragmatic
* create [pull request](https://github.com/nextcloud/talk-android/pulls)
* to assure the quality of the app, any PR gets reviewed, approved and tested before it will be merged to master
### Branching model
![branching model](/doc/branching.png "Branching Model")
* All contributions bug fix or feature PRs target the ```master``` branch
* Feature releases will always be based on ```master```
@ -101,21 +93,19 @@ We are all about quality while not sacrificing speed so we use a very pragmatic
* Bug fixes relevant for the most recent _and_ released feature (e.g. ```11.0.0```) or bugfix (e.g. ```11.2.1```) release will be backported to the respective bugfix branch (e.g. ```stable-11.0``` or ```stable-11.2```)
* Hot fixes not relevant for an upcoming feature release but the latest release can target the bug fix branch directly
### 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)
### Build variants
There are three build variants
* generic: no Google Stuff, used for F-Droid
* gplay: with Google Stuff (Push notification), used for Google Play Store
* qa: based on pr and available as direct download within the pr for testing purposes
### Apply a license
Nextcloud doesn't require a CLA (Contributor License Agreement). The copyright belongs to all the individual contributors. Therefore we recommend that every contributor adds following line to the header of a file, if they changed it substantially:
@ -126,7 +116,6 @@ Nextcloud doesn't require a CLA (Contributor License Agreement). The copyright b
For further information on how to add or update the license header correctly please have a look at [our licensing HowTo][applyalicense].
### Sign your work
We use the Developer Certificate of Origin (DCO) as a additional safeguard for the Nextcloud project.
@ -143,24 +132,24 @@ If you set your `user.name` and `user.email` git configs, you can sign your comm
You can also use git [aliases](https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases) like `git config --global alias.ci 'commit -s'`.
Now you can commit with `git ci` and the commit will be signed.
## 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.
### Fork and download android repository:
* Please follow [SETUP.md](/SETUP.md) to setup Nextcloud Talk Android app work environment.
### 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/talk-android/pulls> and issue pull request
* Enter description and send pull request.
### 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```
@ -169,18 +158,17 @@ To make sure your new pull request does not contain commits which are already co
* Push branch to server: ```git push -u origin name_of_local_master_branch```
* Use GitHub to issue PR
### Backport pull request:
Use backport-bot via "/backport to stable-version", e.g. "/backport to stable-11.2".
This will automatically add "backport-request" label to PR and bot will create a new PR to targeted branch once the base PR is merged.
If automatic backport fails, it will create a comment.
### Adding new files
If you create a new file it needs to contain a license header. We encourage you to use the same license (GPL3+) as we do.
Copyright of Nextcloud GmbH is optional.
Source code of app:
```java/kotlin
/*
@ -229,12 +217,10 @@ Source code of app:
-->
```
## File naming
The file naming patterns are inspired and based on [Ribot's Android Project And Code Guidelines](https://github.com/ribot/android-guidelines/blob/c1d8c9c904eb31bf01fe24aadb963b74281fe79a/project_and_code_guidelines.md).
### Menu files
Similar to layout files, menu files should match the name of the component. For example, if we are defining a menu file that is going to be used in the `UserProfileActivity`, then the name of the file should be `activity_user_profile.xml`. Same pattern applies for menus used in adapter view items, dialogs, etc.
@ -249,19 +235,16 @@ Similar to layout files, menu files should match the name of the component. For
A good practice is to not include the word `menu` as part of the name because these files are already located in the `menu` directory. In case a component uses several menus in different places (via popup menus) then the resource name would be extended. For example, if the user profile activity has two popup menus for configuring the users settings and one for the handling group assignments then the file names for the menus would be: `activity_user_profile_user_settings.xml` and `activity_user_profile_group_assignments.xml`.
## Translations
We manage translations via [Transifex](https://www.transifex.com/nextcloud/nextcloud/talk-android/). 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.
When submitting PRs with changed translations, please only submit changes to values/strings.xml and not changes to translated files. These will be overwritten by the next merge of transifex-but and would increase PR review efforts.
## Engineering practices
This section contains some general guidelines for new contributors, based on common issues flagged during code review.
### Approach to technical debt
TL;DR Non-Stop Litter Picking Party!
@ -276,7 +259,6 @@ you found it"*. Simple, little improvements will sum up and will be very appreci
We also promise to actively support and mentor contributors that help us to improve code quality, as we understand
that this process is challenging and requires deep understanding of the application codebase.
### Dependency injection
TL;DR Avoid calling constructors inside constructors.
@ -302,7 +284,6 @@ This combination allows us to benefit from automation when it provides most valu
to any specific framework and stimulates continuous code modernization through iterative refactoring of all minor
elements.
### Testing
TL;DR If we can't write a test for it, it's not good.
@ -315,42 +296,44 @@ and thereof we'd ask contributors to be mindful of their code testability:
should at least not make future efforts more challenging
3. whenever possible, testability should be improved even if the code is not covered by tests
# Releases
At the moment we are releasing the app in two app stores:
* [Google Play Store](https://play.google.com/store/apps/details?id=com.nextcloud.talk2)
* [f-droid](https://f-droid.org/en/packages/com.nextcloud.talk2/)
## 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 alpha release is out in the wild and no mayor errors get reported (by users or in the developer console) the master branch is ready for the stable release phase.
So when we decide to go for a new release we freeze the master feature wise and a stable branch will be created.
### Release Candidate
_stable beta_ releases done via the Beta program of the Google Play store.
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 stable-branch. After a beta testing phase a stable version will be released, which is identical to the latest release candidate.
### Alpha Release
_alpha_ releases done via the Alpha program of the Google Play store.
Whenever a PR is reviewed/approved we put it on master.
Alpha releases are based on latest master and and we aim to release a new alpha version on a weekly basis.
### QA Release
Done as a standalone app that can be installed in parallel to the stable app.
Any PR gets a QA build so users and reporters are able to easily test a change (feature or bugfix.
## Version Name and number
### Stable / Release candidate
For _stable_ and _release candidate_ the version name follows the [semantic versioning schema](http://semver.org/) and the version number has several digits reserved to parts of the versioning schema inspired by the [jayway version numbering](https://www.jayway.com/2015/03/11/automatic-versioncode-generation-in-android-gradle/), where:
* 2 digits for beta/alpha code as in release candidates starting at '01' (1-50=Alpha / 51-89=RC / 90-99=stable)
@ -368,8 +351,8 @@ Examples for different versions:
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 '90'-'99' as seen above in the examples. For major versions, as we're not a library and thus 'incompatible API changes' is not something that happens, decisions are essentially marketing-based. If we deem a release to be very impactful, we might increase the major version number.
## Release cycle
* Releases are planned every ~2 months, with 6 weeks of developing and 2 weeks of stabilising
* after feature freeze a public release candidate on play store and f-droid is released
* ~2 weeks testing, bug fixing
@ -382,22 +365,22 @@ To get an idea which PRs and issues will be part of the next release simply chec
## Release process
### Stable Release
Stable releases are based on the git [stable-*](https://github.com/nextcloud/talk-android).
1. Bump the version name and version code in the [/app/build.gradle](https://github.com/nextcloud/talk-android/blob/master/app/build.gradle), see chapter 'Version Name and number'.
2. Create a [release/tag](https://github.com/nextcloud/talk-android/releases) 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](http://semver.org/)
### Release Candidate Release
Release Candidate releases are based on the git [stable-*](https://github.com/nextcloud/talk-android) and are before publishing stable releases.
1. Bump the version name and version code in the [/app/build.gradle](https://github.com/nextcloud/talk-android/blob/master/app/build.gradle), see below the version name and code concept.
2. Create a [release/tag](https://github.com/nextcloud/talk-android/releases) 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](http://semver.org/)
### Alpha Release
Release Candidate releases are based on the git [master](https://github.com/nextcloud/talk-android) and are done between stable releases.
1. Bump the version name and version code in the [/app/build.gradle](https://github.com/nextcloud/talk-android/blob/master/app/build.gradle), see below the version name and code concept.

View file

@ -17,7 +17,6 @@ Nextcloud Talk is a fully on-premises audio/video and chat communication service
Nextcloud Talk lowers the barrier for communication and lets your team connect any time, any where, on any device, with each other, customers or partners.
## Why is this so awesome? :sparkles:
Because it is self hosted!!! Audio/video calls and text chat typically require a central server. Some projects go commendably far in trying to ensure they can't see the data, so nobody, not government, advertising company or somebody who broke in the servers, can follow conversations. But the servers still have to mediate every call and text message, allowing them to map out who talks to who and at what time. This 'metadata' [is as useful](https://www.wired.com/2015/03/data-and-goliath-nsa-metadata-spying-your-secrets/), if not more, to track people, than the full content, especially for mass surveillance purposes. Even if the data is not stored by the chat server, the hosting provider or a hacker could simply gather the data.
@ -26,7 +25,6 @@ By hosting your own server, all meta data stays on your server and thus under yo
If you have suggestions or problems, please [open an issue](https://github.com/nextcloud/talk-android/issues) or contribute directly :)
## How to contribute :rocket:
If you want to [contribute](https://nextcloud.com/contribute/) to Nextcloud, you are very welcome:
@ -36,7 +34,6 @@ If you want to [contribute](https://nextcloud.com/contribute/) to Nextcloud, you
- for translations of the app on [Transifex](https://www.transifex.com/nextcloud/nextcloud/android-talk/)
- opening issues and PRs (including a corresponding issue)
## Contribution Guidelines :scroll:
[GPLv3](https://github.com/nextcloud/talk-android/blob/master/LICENSE.txt). All contributions to this repository are considered to be licensed under the GNU GPLv3 or any later version.
@ -47,14 +44,12 @@ Please review the [guidelines for contributing](/CONTRIBUTING.md) to this reposi
More information how to contribute: [https://nextcloud.com/contribute/](https://nextcloud.com/contribute/)
## Start contributing :hammer_and_wrench:
Make sure you read [SETUP.md](/SETUP.md) and [CONTRIBUTING.md](/CONTRIBUTING.md) before you start working on this project.
But basically: fork this repository and contribute back using pull requests to the master branch.
Easy starting points are also reviewing [pull requests](https://github.com/nextcloud/talk-android/pulls) and working on [starter issues](https://github.com/nextcloud/talk-android/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22).
### Testing :test_tube:
So you would like to contribute by testing? Awesome, we appreciate that very much.
@ -62,23 +57,18 @@ So you would like to contribute by testing? Awesome, we appreciate that very muc
To report a bug for the alpha or beta version, just create an issue on github like you would for the stable version and
provide the version number. Please remember that Google Services are necessary to receive push notifications.
#### Beta versions (Release Candidates) :package:
##### via Google Play
Sign up at [Google Play Beta channel](https://play.google.com/apps/testing/com.nextcloud.talk2) to get Release Candidates via Google Play.
##### via github
You can also get the Release Candidates at [github releases](https://github.com/nextcloud/talk-android/releases).
#### Alpha versions
##### via Google Play
To become an alpha tester you have to be signed up for the [Google Play Beta channel](https://play.google.com/apps/testing/com.nextcloud.talk2)
@ -87,21 +77,17 @@ After that you will receive the alpha versions via the Play Store (initially, th
signing up). However, in the Play Store the app will still be named "Nextcloud Talk (Beta)" even if you are an alpha tester, but you will receive the alpha versions.
If a beta was released that is newer than the alpha version, you will get the beta in the alpha channel.
##### via Download page
In addition to google play, the alpha and beta apps can also be obtained from the Nextcloud [Download page](https://download.nextcloud.com/android/talk-alpha/)
Please make sure to remember that these versions might contain bugs and you don't use them in production.
## Support :rescue_worker_helmet:
If you need assistance or want to ask a question about the Talk Android app, you are welcome to [ask for community help](https://help.nextcloud.com/c/support/talk/52) in our forums. If you have found a bug, feel free to [open a new issue on GitHub](https://github.com/nextcloud/talk-android/issues). Keep in mind, that this repository only manages the Nextcloud Talk for Android app. If you find bugs or have problems with the server/backend, you should ask the [Nextcloud server team](https://github.com/nextcloud/server) for help!
## Credits :scroll:
### Ringtones :bell:
- [Ringtones by Librem](https://soundcloud.com/feandesign/sets/librem-5-sounds)
@ -112,7 +98,6 @@ If you need assistance or want to ask a question about the Talk Android app, you
[dcofile]: https://github.com/nextcloud/talk-android/blob/master/contribute/developer-certificate-of-origin
[applyalicense]: https://github.com/nextcloud/talk-android/blob/master/contribute/HowToApplyALicense.md
## Remarks :scroll:
Google Play and the Google Play logo are trademarks of Google Inc.

View file

@ -4,7 +4,6 @@ Sections 1) and 2) are common for any environment. The rest of the sections desc
If you have any problem, remove the 'talk-android' folder, start again from 1) and work your way down. If something still does not work as described here, please open a new issue describing exactly what you did, what happened, and what should have happened.
### 0. Common software dependencies.
There are some tools needed, no matter what is your specific IDE or build tool of preference.
@ -35,7 +34,6 @@ Install any other package you consider interesting, such as emulators.
After installing it, add the full path to the directories 'tools/' and 'platform-tools/' from your Android SDK installation into the PATH variable of your environment.
### 1. Fork and download the nextcloud/android repository.
You will need [git][1] to access to the different versions of the Nextcloud's source code. The source code is hosted on GitHub and may be read by anybody, without a GitHub account. You will need one if you want to contribute to the development of the app with your own code.
@ -52,7 +50,6 @@ The next steps will assume you have a GitHub account and that you will get the c
At this point you can continue using different tools to build the project. Section 2 and 3 describe the existing alternatives.
### 2. Working with Android Studio.
To set up the project in Android Studio follow the next steps:
@ -61,7 +58,6 @@ To set up the project in Android Studio follow the next steps:
* Android Studio will try to build the project directly after importing it. To build it manually, just click the 'Play' button in the toolbar to build and run it in a mobile device or an emulator. The resulting APK file will be saved in the 'app/build/outputs/apk/' subdirectory in the project folder and being installed/launched in a configured emulator or if connected your physical device.
* Check Android Studio editor configuration for the project: ```Settings``` → ```Editor``` → ```Code Style``` → ```Scheme: Project``` and ```Enable EditorConfig support``` (should be enabled by default)
### 3. Working in a terminal with Gradle:
[Gradle][7] is the build system used by Android Studio to manage the building operations on Android apps. You do not need to install Gradle in your system, and Google recommends not to do it, but instead trusting on the [Gradle wrapper][8] included in the project.
@ -75,7 +71,6 @@ The first time the Gradle wrapper is called, the correct Gradle version will be
The generated APK file is saved in app/build/outputs/apk as app-generic-debug.apk
### 4. App flavours
The app is currently equipped to be built with three flavours:
@ -91,10 +86,8 @@ The app is currently equipped to be built with three flavours:
[7]: https://gradle.org/
[8]: https://docs.gradle.org/current/userguide/gradle_wrapper.html
### 5. Troubleshooting
#### 1. Compilation fails with "java.lang.OutOfMemoryError: Java heap space" error
The default settings for Gradle is to limit the compilation to 1GB of heap.
You can increase that value by :