Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #4622: Android Wiki migration #4892

Closed
wants to merge 375 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
375 commits
Select commit Hold shift + click to select a range
e8e2e8f
formatting and update espresso test case example
anandwana001 Jan 4, 2021
8b21920
version update
anandwana001 Jan 4, 2021
b6e0102
Fix ending for custom view file names.
BenHenning Jan 13, 2021
2b929a4
Add underscore prefix to fragment file name style for consistency.
BenHenning Jan 13, 2021
e66ee57
Removed install linters as pre push come
anandwana001 Jan 15, 2021
0b6a6f9
error and solution for pre-push
anandwana001 Jan 18, 2021
e14e132
nit formatting
anandwana001 Jan 18, 2021
1853b4b
nit formatting
anandwana001 Jan 22, 2021
9c99ceb
added a step to setup java
anandwana001 Jan 25, 2021
62e7c25
Created Oppia-Bazel Guide (markdown)
anandwana001 Jan 25, 2021
44cafa8
Created Accessibility (A11y) Guide (markdown)
rt4914 Jan 28, 2021
7ac4e3f
Updated Accessibility (A11y) Guide (markdown)
rt4914 Jan 28, 2021
b15135d
Added Installation
anandwana001 Feb 2, 2021
8d09bda
Updated Accessibility (A11y) Guide (markdown)
rt4914 Feb 4, 2021
5eec224
Updated Accessibility (A11y) Guide (markdown)
rt4914 Feb 4, 2021
ba8f0f1
Updated Accessibility (A11y) Guide (markdown)
rt4914 Feb 4, 2021
c95ee5b
Updated Accessibility (A11y) Guide (markdown)
rt4914 Feb 4, 2021
cb545e3
Updated Accessibility (A11y) Guide (markdown)
rt4914 Feb 4, 2021
da74f47
Rename page since we will have a separate page for Bazel guide.
BenHenning Feb 9, 2021
482fe5f
nit formatting
anandwana001 Feb 10, 2021
849bfad
adding push details
anandwana001 Feb 10, 2021
5cab9c2
adding info to use git bash command line for windows
anandwana001 Feb 10, 2021
55f5bd0
added push fix title
anandwana001 Feb 10, 2021
5e6c9bc
adding link for pre-push fix
anandwana001 Feb 10, 2021
9e916ee
Updated info on google_checks.xml file download for Windows.
srikanthkb Feb 10, 2021
2a2a202
Updated comment link for checkstyle config file error
srikanthkb Feb 10, 2021
4798437
installation removed, added note to don't use ktlint disable
anandwana001 Feb 11, 2021
b291ecb
update google_checks file link
anandwana001 Feb 11, 2021
aac73e6
added link google_checks.xml
anandwana001 Feb 11, 2021
acb12de
Added note for project folder name
anandwana001 Feb 13, 2021
efa039a
nit formatting
anandwana001 Feb 13, 2021
2ea491f
added prerequisite
anandwana001 Feb 16, 2021
dd61a75
Create initial best practices & FAQ from Jan's document.
BenHenning Feb 23, 2021
c104237
temporary remove windows command
anandwana001 Mar 8, 2021
d81f585
added windows support
anandwana001 Mar 9, 2021
d0f0213
nit formatting
anandwana001 Mar 10, 2021
2201c64
not formatting
anandwana001 Mar 10, 2021
e54278a
Updated Oppia Bazel Setup Instructions (markdown)
fsharpasharp Mar 12, 2021
e1637f4
Updated Oppia Bazel Setup Instructions (markdown)
fsharpasharp Mar 12, 2021
4099795
Updated Oppia Bazel Setup Instructions (markdown)
fsharpasharp Mar 12, 2021
1642b4e
Updated Gradle Bazel Migration Best Practices and FAQ (markdown)
fsharpasharp Mar 12, 2021
c7a4932
Removed repeated lines
anandwana001 Mar 13, 2021
c7204d0
Updated Oppia Bazel Setup Instructions (markdown)
fsharpasharp Mar 15, 2021
10ba522
adding steps for m1
anandwana001 Mar 16, 2021
1a56f25
Updated Oppia Bazel Setup Instructions (markdown)
fsharpasharp Mar 23, 2021
96f0013
Created Frequent Errors and Solutions (markdown)
rt4914 Mar 25, 2021
452eee1
Updated Frequent Errors and Solutions (markdown)
rt4914 Mar 25, 2021
6fed8e9
Soften warnings for Bazel Android Studio & Windows users.
BenHenning Mar 25, 2021
0fe97f7
nit info added
anandwana001 Mar 25, 2021
a5f3d72
added push fail solution
anandwana001 Apr 6, 2021
54c2e23
Write-up on the team's concurrency & coroutine best practices, includ…
BenHenning Apr 8, 2021
cc65a6a
Updated Oppia Bazel Setup Instructions (markdown)
rt4914 Apr 9, 2021
887b17f
Switch installation command to 'adb install' rather than 'mobile-inst…
BenHenning Apr 22, 2021
6d6bee6
Added a section for downgrade/incompatible installation errors & how …
BenHenning Apr 22, 2021
0a9a71a
installation and commands updated
anandwana001 May 3, 2021
17f825c
Created Developing Oppia Android (markdown)
rt4914 Jun 11, 2021
3722bf2
Destroyed Developing Oppia Android (markdown)
rt4914 Jun 11, 2021
59dd275
Add instructions to update maven_install.json
prayutsu Jun 28, 2021
e3d0266
Add link to versions.bzl
prayutsu Jun 29, 2021
0a646b3
Updated Accessibility (A11y) Guide (markdown)
rt4914 Jul 2, 2021
7561b27
Updated Accessibility (A11y) Guide (markdown)
rt4914 Jul 2, 2021
cd406b7
Updated Accessibility (A11y) Guide (markdown)
rt4914 Jul 2, 2021
9467aa9
Document process for getting Bazel builds to work on Windows 10
BenHenning Jul 7, 2021
876c212
Link to Windows instructions rather than indicating we don't support …
BenHenning Jul 7, 2021
edab9be
Updated Bazel Setup Instructions for Windows (markdown)
rt4914 Jul 14, 2021
b0366a3
Updated Bazel Setup Instructions for Windows (markdown)
rt4914 Jul 14, 2021
b432abd
Add instructions to run the first script and handle exceptions
prayutsu Jul 19, 2021
ae0faf4
Update wiki to include exception - Too few arguments passed
prayutsu Jul 19, 2021
82695dd
Fix links to not point to the edit mode
prayutsu Jul 21, 2021
fa11894
Rephrase "coordinating with Oppia Anroid team" sentence
prayutsu Jul 21, 2021
262fbf6
Add mitigation instructions for the dex issue if people run into it l…
BenHenning Jul 21, 2021
17bcb27
Specify dicts names
prayutsu Jul 22, 2021
6a74961
added Facing error while debugging code
anandwana001 Jul 25, 2021
66b0196
Updated Updating Maven Dependencies (markdown)
prayutsu Jul 31, 2021
8fc7e74
Create initial placeholder for Static Analysis Checks.
BenHenning Aug 13, 2021
d522dac
Created Platform Parameters & Feature Flags (markdown)
Arjupta Aug 15, 2021
1d15dca
Updated Platform Parameters & Feature Flags (markdown)
Arjupta Aug 15, 2021
c62f40d
Updated Platform Parameters & Feature Flags (markdown)
Arjupta Aug 16, 2021
df86f13
Updated Static Analysis Checks (markdown)
Sparsh1212 Aug 17, 2021
442d9af
Some fixes and cleanup.
BenHenning Aug 17, 2021
23ec078
Updated Platform Parameters & Feature Flags (markdown)
Arjupta Aug 21, 2021
d946d7f
Created End-to-End testing (markdown)
FareesHussain Aug 22, 2021
7d263a3
Some small tweaks.
BenHenning Aug 22, 2021
72aa4a5
Updated End to End Testing Guide (markdown)
BenHenning Aug 22, 2021
696dfb6
Added "Undo unnecessary changes" section
rt4914 Aug 24, 2021
60e143e
Updated Guidance on submitting a PR (markdown)
rt4914 Aug 24, 2021
ef57bd1
Clarify that Bazel 4.0.0 is currently required.
BenHenning Sep 1, 2021
69b09f3
Add missing escape quote.
BenHenning Oct 1, 2021
7c00256
Updated Home (markdown)
FareesHussain Oct 4, 2021
28b99bd
Created Interpreting CI Results (markdown)
FareesHussain Oct 4, 2021
3701b88
Updated Home (markdown)
FareesHussain Oct 4, 2021
ebb6cb5
Created Developing skills (markdown)
FareesHussain Oct 4, 2021
7408a32
Updated image 1 to depict a fork.
Sarthak2601 Oct 12, 2021
fadc1be
addition of image for describing how t0 pull changes.
Sarthak2601 Oct 12, 2021
32d0c6c
Stacking Pull Requests
Sarthak2601 Oct 12, 2021
02c6e21
Updated Firebase Console Guide (markdown)
Sarthak2601 Oct 12, 2021
1cead2d
View events in the Android Studio debug log
Sarthak2601 Oct 12, 2021
94ba88a
Updated Home (markdown)
seanlip Oct 15, 2021
995319b
Updated Oppia Bazel Setup Instructions (markdown)
seanlip Oct 15, 2021
960ddc8
Clarify installation instructions slightly around installing JDK 8 & …
BenHenning Oct 15, 2021
f38ef52
Updated Oppia Bazel Setup Instructions (markdown)
seanlip Oct 16, 2021
50d9387
Updated Oppia Bazel Setup Instructions (markdown)
seanlip Oct 16, 2021
ad82cce
Updated Oppia Bazel Setup Instructions (markdown)
seanlip Oct 16, 2021
b84959f
Created Troubleshooting Installation (markdown)
FareesHussain Oct 17, 2021
a8333ca
Created Instructions for making a code change (markdown)
FareesHussain Oct 17, 2021
853fb39
Updated Home (markdown)
FareesHussain Oct 17, 2021
259ebda
Created _Sidebar (markdown)
FareesHussain Oct 17, 2021
cbd078e
Updated _Sidebar (markdown)
seanlip Oct 17, 2021
91afcb9
Updated _Sidebar (markdown)
seanlip Oct 17, 2021
b87b0d4
Updated _Sidebar (markdown)
seanlip Oct 17, 2021
0cd7cf8
Updated _Sidebar (markdown)
seanlip Oct 17, 2021
98c97e9
Updated _Sidebar (markdown)
seanlip Oct 20, 2021
fadc55a
Updated Home (markdown)
FareesHussain Nov 3, 2021
7320e5e
Created Oppia's Mission (markdown)
FareesHussain Nov 3, 2021
f8023e1
Updated _Sidebar (markdown)
FareesHussain Nov 3, 2021
d8bb0a6
Updated _Sidebar (markdown)
FareesHussain Nov 3, 2021
6c020d8
Created Contributing to Oppia-android (markdown)
FareesHussain Nov 3, 2021
e1a92c9
screenshots for in-built android studio options, instructions for xml…
Sarthak2601 Nov 9, 2021
8e893f9
addition of screenshots.
Sarthak2601 Nov 9, 2021
184a987
updated instructions for taking screenshot using Android Studio on a …
Sarthak2601 Nov 9, 2021
95fb23f
Updated Home (markdown)
FareesHussain Nov 14, 2021
b31ae28
Updated Home (markdown)
FareesHussain Nov 14, 2021
9887af0
Updated Android Studio UI based Github workflow (markdown)
MaskedCarrot Nov 23, 2021
4e27d43
Updated Fork and Clone Oppia Android (markdown)
MaskedCarrot Nov 23, 2021
d89634e
Updated _Sidebar (markdown)
MaskedCarrot Nov 23, 2021
4aeaf0d
Updated _Sidebar (markdown)
vinitamurthi Nov 23, 2021
46f9ea7
Updated _Sidebar (markdown)
vinitamurthi Nov 23, 2021
5aacc88
Created PersistentCacheStore & In-Memory Blocking Cache (markdown)
Arjupta Nov 30, 2021
4212cd4
Created Kotlin Coroutines (markdown)
Arjupta Nov 30, 2021
e5e27b9
Created DataProvider & LiveData (markdown)
Arjupta Nov 30, 2021
56eeee4
Updated DataProvider & LiveData (markdown)
Arjupta Nov 30, 2021
8e2be45
Created Background Processing (markdown)
Arjupta Nov 30, 2021
6740959
Divided the Background Processing wiki into individual pages
Arjupta Nov 30, 2021
2245fac
Destroyed Background Concurrent processing in Android DataProviders…
Arjupta Nov 30, 2021
28dd7fe
Updated Frequent Errors and Solutions (markdown)
FareesHussain Dec 5, 2021
29466f7
What is RTL, What changes in RTL and Reference Docs.
Sarthak2601 Dec 7, 2021
89ab98f
Updated Working on UI (markdown)
Arjupta Jan 3, 2022
c30f2ee
Destroyed XML code style format (markdown)
Arjupta Jan 3, 2022
1c9d11c
Removed XML Code Style wiki
Arjupta Jan 3, 2022
a8af63d
Updated Oppia Android Testing (markdown)
seanlip Jan 5, 2022
824db38
Updated Home (markdown)
FareesHussain Jan 9, 2022
aa53165
Updated _Sidebar (markdown)
FareesHussain Jan 9, 2022
ff35607
Added a description on how to write E2E tests
FareesHussain Jan 15, 2022
8ecebd6
Nit typo fix
rt4914 Jan 17, 2022
9025481
Created Writing design docs (markdown)
seanlip Jan 20, 2022
7b37802
Updated _Sidebar (markdown)
seanlip Jan 20, 2022
685b0cf
Created Work Manager (markdown)
Arjupta Feb 1, 2022
32c4a2d
Added Work Manager wiki under Developer Reference section
Arjupta Feb 1, 2022
03c144f
Created Dependency Injection (markdown)
Arjupta Feb 1, 2022
5b457d7
Created Dagger (markdown)
Arjupta Feb 1, 2022
748b28e
Corrected the Dagger Wiki link
Arjupta Feb 1, 2022
6859a3e
Updated _Sidebar (markdown)
Arjupta Feb 1, 2022
f958595
Created Get Help (markdown)
MaskedCarrot Feb 2, 2022
309a5d6
Updated _Sidebar (markdown)
MaskedCarrot Feb 2, 2022
0e21334
Updated End to End Testing Guide (markdown)
FareesHussain Feb 5, 2022
e36af0e
Updated "Finding something to do"
rt4914 Feb 10, 2022
6d89f94
Updated _Sidebar (markdown)
seanlip Feb 16, 2022
85a196e
Created Teams at oppia android (markdown)
MaskedCarrot Feb 16, 2022
6da5a79
Updated Teams at oppia android (markdown)
MaskedCarrot Feb 16, 2022
16303d7
Added link to "teams at oppia androdi" page
MaskedCarrot Feb 17, 2022
bc292fa
Updated _Sidebar (markdown)
seanlip Feb 19, 2022
88a543d
Updated _Sidebar (markdown)
seanlip Feb 19, 2022
c68a27b
Created Dark Mode (markdown)
seanlip Feb 19, 2022
4c6be7d
Updated Dark Mode (markdown)
seanlip Feb 19, 2022
ffbdc84
Updated Dark Mode (markdown)
seanlip Feb 19, 2022
343e2db
Updated Dark Mode (markdown)
seanlip Feb 19, 2022
f196cad
Updated Contributing to Oppia android (markdown)
seanlip Feb 19, 2022
1a48811
Updated Contributing to Oppia android (markdown)
seanlip Feb 19, 2022
d3dab50
Updated Guidance on submitting a PR (markdown)
seanlip Feb 19, 2022
dc1fd2c
Destroyed Making a code change (markdown)
seanlip Feb 19, 2022
6f409d0
Updated _Sidebar (markdown)
seanlip Feb 19, 2022
a9091d3
Updated Contributing to Oppia android (markdown)
seanlip Feb 19, 2022
97bbf6d
Updated Guidance on submitting a PR (markdown)
seanlip Feb 19, 2022
edd146d
Updated Guidance on submitting a PR (markdown)
seanlip Feb 19, 2022
ff32566
Updated Guidance on submitting a PR (markdown)
seanlip Feb 19, 2022
7c38951
Updated Guidance on submitting a PR (markdown)
seanlip Feb 19, 2022
46ee970
Updated Guidance on submitting a PR (markdown)
seanlip Feb 19, 2022
24ec00d
Updated Guidance on submitting a PR (markdown)
seanlip Feb 19, 2022
5efdb98
Typo: `Guile` to `Guide`
rt4914 Feb 21, 2022
55e7241
Updated Teams at oppia android (markdown)
seanlip Feb 23, 2022
c0bdd66
Updated _Sidebar (markdown)
seanlip Feb 24, 2022
e728f8d
Updated Teams at oppia android (markdown)
seanlip Feb 24, 2022
6d9f7d5
Added mock links
rt4914 Mar 1, 2022
5e3fde7
Updated Contributing to Oppia android (markdown)
seanlip Mar 17, 2022
d3cf8ca
Updated Contributing to Oppia android (markdown)
seanlip Mar 21, 2022
e0e2b63
Updated Home (markdown)
MaskedCarrot Apr 15, 2022
4ea2163
Updated Home (markdown)
seanlip Apr 19, 2022
f0b7598
Updated Contributing to Oppia Android (markdown)
seanlip Apr 19, 2022
f35321a
Updated Home (markdown)
seanlip Apr 19, 2022
7c1aa05
Updated Overview of the Oppia Android codebase and architecture (mark…
MaskedCarrot May 10, 2022
a2372b4
Updated Dark Mode (markdown)
seanlip May 13, 2022
a19ec92
Updated Oppia Bazel Setup Instructions (markdown)
ankita240796 May 27, 2022
f2c36b1
Updated Oppia Bazel Setup Instructions (markdown)
ankita240796 May 27, 2022
57e3e9b
Updated Oppia Bazel Setup Instructions (markdown)
ankita240796 May 27, 2022
2a0e8f9
Updated Oppia Bazel Setup Instructions (markdown)
ankita240796 May 27, 2022
d62b01b
Updated Oppia Bazel Setup Instructions (markdown)
ankita240796 May 27, 2022
73015fd
Updated Oppia Bazel Setup Instructions (markdown)
ankita240796 May 27, 2022
bf82ff9
Updated Oppia Bazel Setup Instructions (markdown)
ankita240796 May 27, 2022
9dcc435
Updated Oppia Bazel Setup Instructions (markdown)
ankita240796 May 27, 2022
4b3763f
Strengthen language around picking the correct commandline tools down…
BenHenning Jun 21, 2022
331fbf4
Fix shell command for commandlinetools.
BenHenning Jun 21, 2022
5fd8a23
Clarify two points that caused confusion during onboarding, thanks to…
BenHenning Jul 1, 2022
66ae483
Update instructions to address some issues and pain points identified…
BenHenning Jul 16, 2022
e7bc869
Add details on the state of Bazel vs. Gradle.
BenHenning Jul 20, 2022
801ec1a
Create dedicated Bazel migration section & clarify reasons.
BenHenning Jul 21, 2022
4f2cfb4
Updated Contributing to Oppia Android (markdown)
seanlip Jul 21, 2022
d093606
Updated starting issues links.
rt4914 Aug 2, 2022
6860175
Updated Guidance on submitting a PR (markdown)
seanlip Sep 1, 2022
8afa755
Updated Contributing to Oppia Android (markdown)
seanlip Sep 8, 2022
53dbf59
Updated Contributing to Oppia Android (markdown)
seanlip Sep 8, 2022
3281df9
Updated Contributing to Oppia Android (markdown)
seanlip Sep 8, 2022
89c4edb
Updated Guidance on submitting a PR (markdown)
seanlip Sep 8, 2022
6f0955b
Updated Guidance on submitting a PR (markdown)
seanlip Sep 8, 2022
c3594d7
Updated Contributing to Oppia Android (markdown)
seanlip Sep 8, 2022
48f0422
Updated Contributing to Oppia Android (markdown)
seanlip Sep 8, 2022
3accfe4
Updated Contributing to Oppia Android (markdown)
seanlip Sep 8, 2022
064fda6
Updated Guidance on submitting a PR (markdown)
seanlip Sep 8, 2022
0557496
Correct Bazel build instructions (relative directory was confusing an…
BenHenning Sep 19, 2022
d64e34e
Updated _Sidebar (markdown)
seanlip Oct 13, 2022
9c33f76
Updated Accessibility (A11y) Guide (markdown)
rt4914 Nov 9, 2022
2497d94
Updated Accessibility (A11y) Guide (markdown)
rt4914 Nov 9, 2022
ae8f335
Updated Contributing to Oppia Android (markdown)
seanlip Dec 14, 2022
12d0b3d
Updated Contributing to Oppia Android (markdown)
seanlip Jan 24, 2023
9c9b798
Updated Contributing to Oppia Android (markdown)
seanlip Jan 26, 2023
4fc603b
Updated _Sidebar (markdown)
seanlip Feb 3, 2023
b2ecdd0
Created Internationalization (markdown)
seanlip Feb 3, 2023
4d80a72
Updated Internationalization (markdown)
seanlip Feb 7, 2023
9ba2d5b
Updated Internationalization (markdown)
seanlip Feb 7, 2023
f47e57d
Updated Internationalization (markdown)
seanlip Feb 7, 2023
a316d63
Updated Internationalization (markdown)
seanlip Feb 7, 2023
14db006
Updated Internationalization (markdown)
seanlip Feb 7, 2023
99d6c65
Update instructions according to my experience
vojtechjelinek Feb 23, 2023
15e226a
Updated Oppia Bazel Setup Instructions (markdown)
vojtechjelinek Mar 2, 2023
897edc4
Updated Oppia Bazel Setup Instructions (markdown)
vojtechjelinek Mar 2, 2023
a69c4f3
Created Installing Oppia Android (markdown)
seanlip Mar 6, 2023
c5e9997
Updated Installing Oppia Android (markdown)
seanlip Mar 6, 2023
432bd8e
Updated Contributing to Oppia Android (markdown)
seanlip Mar 6, 2023
b729c16
Updated _Sidebar (markdown)
seanlip Mar 6, 2023
bb80309
Updated _Sidebar (markdown)
seanlip Mar 6, 2023
d070005
Updated Troubleshooting Installation (markdown)
seanlip Mar 6, 2023
38fc521
Updated Get Help (markdown)
seanlip Mar 6, 2023
48188b2
Updated _Sidebar (markdown)
seanlip Mar 6, 2023
31eef25
Updated Teams at Oppia Android (markdown)
seanlip Mar 6, 2023
2e53958
Updated Get Help (markdown)
seanlip Mar 6, 2023
7d5737b
Move files to wiki folder
gp201 Mar 8, 2023
08d76ac
Merge branch 'android wiki' into wiki_migration
gp201 Mar 8, 2023
ccc259e
Add deploy to wiki GitHub Action
gp201 Mar 8, 2023
12859c1
Lint fixes
gp201 Mar 8, 2023
f16f396
minor fixes
gp201 Mar 8, 2023
ad25d3a
minor fixes
gp201 Mar 8, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ gradlew.bat @BenHenning
/.github/workflows/ @BenHenning
/.github/stale.yml @BenHenning

# Wiki
/wiki/ @BenHenning

# Devbots configurations.
/.devbots/ @BenHenning

Expand Down
25 changes: 25 additions & 0 deletions .github/workflows/wiki.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Deploy to Wiki
on:
push:
branches:
- develop
paths:
- 'wiki/**'
gollum:

jobs:
wiki-deploy:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Add remote
run: |
git filter-branch --subdirectory-filter wiki/ -- -- all
git remote set-url origin https://github.com/oppia/oppia-android.wiki.git
git checkout -b master
git push origin master --force
21 changes: 21 additions & 0 deletions scripts/assets/todo_open_exemptions.textproto
Original file line number Diff line number Diff line change
Expand Up @@ -290,3 +290,24 @@ todo_open_exemption {
exempted_file_path: "scripts/src/java/org/oppia/android/scripts/todo/model/Todo.kt"
line_number: 10
}

todo_open_exemption {
exempted_file_path: "wiki/Coding-style-guide.md"
line_number: 33
}

todo_open_exemption {
exempted_file_path: "wiki/Static-Analysis-Checks.md"
line_number: 155
line_number: 163
line_number: 168
line_number: 172
line_number: 176
line_number: 178
line_number: 193
line_number: 203
line_number: 206
line_number: 209
line_number: 212
line_number: 215
}
144 changes: 144 additions & 0 deletions wiki/Accessibility-(A11y)-Guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
## Overview
Accessibility is an important part of Oppia to ensure that the app is accessible by everyone. Some common conditions that affect a person's use of an Android device are:
* blindness / low vision
* deafness / impaired hearing
* cognitive disabilities
* confined motor skills
* color blindness, etc.

Making sure that the Oppia app is accessible by all resonates with overall Oppia's mission: **to help anyone learn anything they want in an effective and enjoyable way.**

Note: In short we can write Accessibility as **A11Y**.

## How to test the app for a11y users?
There are various manual and automated tests to check if app is accessible by all or not. All of the below mentioned tests are required to make sure that app is accessible in most cases.

**[Accessibility Scanner](https://support.google.com/accessibility/android/answer/6376570?hl=en)** : Using Accessibility Scanner we can take screenshots of each and every screen in the Oppia-app manually and the Accessibility Scanner app will give the output for the individual screenshot mentioning all the errors.

**Screen Reader**: Screen readers like **Talkback** can be used to test the app manually. Talkback app is used by blind people to navigate to different items in the screen and get audio based output. This app will not give any error like Accessibility Scanner.

**[AccessibilityChecks](https://developer.android.com/guide/topics/ui/accessibility/testing#automated)**: Developers can activate the `AccessibilityChecks` in all `Espresso` test cases which will give errors related to accessibility.


## Setting up Accessibility Scanner and Talkback

### Setup Play Store in mobile emulator
1. Create a new emulator device which contains **Google Play Store** in it. Example: Nexus 5, Nexus 5A, Pixel, Pixel 2, Pixel 3, Pixel 3a, Pixel 4.
2. Open "Play Store" app and sign-in.

### Setup Play Store in tablet emulator
By default tablet emulators do not contain **Play Store** app and therefore you will need to make some changes to make it available.
1. Follow the steps mentioned [here](https://stackoverflow.com/a/62680014).
2. Once the above steps are done, start the emulator.
3. Open the "Play Store" app and sign-in.

### Using a11y scanner in android
[Accessibility Scanner](https://support.google.com/accessibility/android/answer/6376570?hl=en) scans your screen and provides suggestions to improve the accessibility of your app, based on:
* Content labels
* Touch target size
* Clickable items
* Text and image contrast

#### How to Use?
1. Open **Google Play Store**
2. Download/Install **Accessibility Scanner** app
3. After installation, open Settings
4. Search **Accessibility Scanner**, click on it.
5. Turn on **Use Accessibility Scanner** -> **Allow**
6. You will notice a blue colored floating button with tick/check icon.
7. Open **Oppia** app.
8. Now on any screen inside app click on the floating button and either record or take snapshot.

**Result**: You will notice that the scanner analyses the screen and give errors if there are any or else it will show that no errors were found.

### Using Talkback in android
TalkBack is the Google **screen reader** included on Android devices. TalkBack gives you spoken feedback so that you can use your device without looking at the screen.

#### How to use?
1. Open **Google Play Store**
2. Download/Install **Android Accessibility Suite** app
3. After installation, open Settings
4. Search **Talkback**, click on it.
5. Read all the instructions written on the screen as using Talkback requires specific steps.
6. Turn on **Use Service** -> **Allow**


### Useful Resources
* [Android A11Y Overview](https://support.google.com/accessibility/android/answer/6006564)
* [Using A11Y Menu](https://support.google.com/accessibility/android/answer/9078941)
* [Getting started with Talkback](https://support.google.com/accessibility/android/answer/6283677)
* [Display speech output as Text: Talkback](https://developer.android.com/guide/topics/ui/accessibility/testing#optional_talkback_developer_settings)


## Using AccessibilityTestRule in Espresso Tests
[AccessibilityTestRule](https://github.com/oppia/oppia-android/blob/develop/testing/src/main/java/org/oppia/android/testing/AccessibilityTestRule.kt) is a JUnit rule to enable `AccessibilityChecks` in all Espresso Tests. This rule covers all errors shown by Accessibility Scanner and more but only for all those UI elements which are getting used in the test case.

(**Note: If this file is not available then it has been merged with OppiaTestRule as per #3351**)

#### How to use?
Simply use the `AccessibilityTestRule` in Espresso Test file like this:
```
@get: Rule
val accessiblityTestRule = AccessibilityTestRule()
```

This will enable the `AccessibilityChecks` on all Espresso tests inside this file.

To disable `AccessibilityChecks` on any individual test case use [DisableAccessibilityChecks](https://github.com/oppia/oppia-android/blob/develop/testing/src/main/java/org/oppia/android/testing/DisableAccessibilityChecks.kt) as annotation with the test.

In case of test failure there are two options to fix it:
* Solve the test case by updating the UI as per the error details.
* If by solving the error the user experience will become worse than we should actually suppress that error instead of changing the UI. This can be done in [AccessibilityTestRule](https://github.com/oppia/oppia-android/blob/fe553d32e0161f6efa6e465109306b909dbcc476/testing/src/main/java/org/oppia/android/testing/AccessibilityTestRule.kt#L34)

## Auditing the app
The app should be audited by covering different use cases across 23 different manual tests mentioned [here](https://docs.google.com/spreadsheets/d/1lFQo2XE0dSGZcMvr7paxdL3zXB3FVcRnZOqD70DT3a4/edit?usp=sharing).
This sheet has been divided based on `primary` and `secondary` use cases and `basic` and `advanced` test cases.
* Level 1 = `Primary + Basic`, which means that all primary use cases passes all `Basic` tests.
* Level 2 = `Secondary + Basic`, which means that all secondary use cases passes all `Basic` tests.
* Level 3 = `Primary + Advanced`, which means that all primary use cases passes all `Advanced` tests.
* Level 4 = `Secondary + Advanced`, which means that all secondary use cases passes all `Advanced` tests.

This entire sheet should be filled with each release as a part of audit process.

## General Tips to make app Accessible
* All Clickable items should have a minimum size of `48x48dp`.
* Buttons should use `android:enabled` instead of `android:clickable` to disable/enable it.
* All views should have a `foreground:background` contrast ratio of `4.5:1` and above.
* Texts should have a minimum `12sp` text size.
* Images/icons should have a meaningful content description.

## Exceptional Cases
* Generally we use `sp` only for text-size/font-size of text and at all attributes related to width/height we use `dp`. But we can use width in `sp` if we have text inside a fixed width container. This will increase the size of container whenever we increase the font size, so the scaled text get enough size to fit inside a container. If this case is applied anywhere in UI, please get confirmation from @BenHenning or @rt4914 .

## Android 12 Warnings around TextViews in Fixed Layouts

### Problem with fixed layout

If we have scalable text inside a fixed width container then accessibility scanner is suggesting to improve text scaling, as if the text scales it won’t get enough space to expand inside a fixed width container.

<img width="250" src="https://user-images.githubusercontent.com/9396084/200759127-f8f9b4e5-1017-4e24-b0c2-28179a520aa7.png"/>

### Possible solution to fix it

1. Change the fixed width to wrap_content and set minWidth. In this case, we can’t directly change the width into a wrap_content as all thumbnail images won’t have consistent width which leads to a problem as mentioned in issue [#4684](https://github.com/oppia/oppia-android/issues/4684). You can see the below screenshot for reference.

<img width="250" src="https://user-images.githubusercontent.com/9396084/200760708-ba6d2659-9cc1-4701-a93d-8647d7db1335.png" />

2. As directly we can’t use wrap_content for width, another possible solution is to use scalable width i.e. instead of setting fixed width in dp we can set the width in sp. This will increase the container size every time we increase the font size, so the scaled text can fit inside the container. In this approach, accessibility scanner will still show suggestion to improve text scaling but from a UI perspective this approach works. For reference you can look at PR [#4695](https://github.com/oppia/oppia-android/pull/4695)

3. Another approach would be to design such that we don’t have to fit a text inside a fixed width container as shown below in the reference image.

<img width="250" src="https://user-images.githubusercontent.com/9396084/200761059-27e0e9be-0fed-4f01-beac-9dff61ab7563.png" />

We can set the full width to the cards i.e. match_parent (with appropriate margins) which will remove the issue of accessibility. We can also show the dots at bottom which represent the number + position of items.

<img width="250" src="https://user-images.githubusercontent.com/9396084/200761183-0562e48a-259f-4488-8020-11bfb5065f08.png" />

For sighted users
- The banners will be cyclic i.e. item-0, item1, item2, item0 and repeat.

For talkback users
- The cyclic nature will stop.
- The screen reader will start from item-0, item-1, item-2, and next it will go out of list.


46 changes: 46 additions & 0 deletions wiki/Background-Processing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
## Overview

This page aims to provide some context around:
- What constitutes background processing/when something should be background processed, and why we care
- How background processing is done in the Android app
- Best practices to follow when managing background or expensive tasks
- Existing utilities to simplify using DataProviders
- How to safely pass data to the UI

## Background

Performing asynchronous tasks or background processing in a multi-threaded environment is hard: most developers are unaware of the nuances of cross-thread development (e.g. properly utilizing critical sections without introducing deadlocks, sharing mutable state across thread boundaries with correctly applied memory fences, critical sections, or atomics, properly using concurrent data structures, and more). This problem is exacerbated in Android since:
1. Android requires all user-facing operations to be run on the main thread (requiring communication to/from the main thread)
2. Android UI objects are very [lifecycle](https://developer.android.com/guide/components/activities/activity-lifecycle)-sensitive (meaning haphazard management of Android state can at best leak memory or at worst crash when communicating back from a background thread--a common crash in Android apps)
3. The Android UI thread is sensitive to even medium-length operations when on slow devices (which can lead to app [ANR](https://developer.android.com/topic/performance/vitals/anr)s)

The team has a number of carefully considered solutions to ensure concurrency is easier to manage, safer, and performant.

### Definition of background processing & when to use it

All features in the codebase can be represented as a data pipeline. In some cases, data is created transiently and in other cases it needs to be loaded from somewhere (e.g. a file or network). Further, we sometimes need to do a lot of processing on this data before it can be presented to the UI (the app's [architecture](https://github.com/oppia/oppia-android/wiki/Overview-of-the-Oppia-Android-codebase-and-architecture#app-architecture) is specifically designed to encourage data processing logic to live outside the UI).

To keep things simple, we consider everything the following to be worth executing on a background thread instead of the UI thread:
- Any logic operation (e.g. something requiring an if statement or loop) which is more complicated than just copying data
- Any file I/O operations (e.g. reading from a file)
- Any networking operations (e.g. calling into Retrofit)
- Complex state management (such as [ExplorationProgressController](https://github.com/oppia/oppia-android/blob/a85399c2b0a2b9cf214881ce8c70d9b487f1e0b8/domain/src/main/java/org/oppia/android/domain/exploration/ExplorationProgressController.kt#L34))

Similarly, the following operations must happen on a UI thread for lifecycle safety reasons:
- Any interactions with the UI (e.g. activities, fragments, or views)
- Any interactions with ViewModel state (which is designed to only be mutated on the main thread)
- Any interactions with other Android services which require main thread access

### Why we care

Oppia Android is aiming to provide an effective education experience to the most underprivileged communities in the world, and this particularly requires excellent performance on low-end devices. We have a thin performance margin to operate in, and we can't afford ANRs or poor performance. Further, reducing crashes is important to ensure an uninterrupted learning experience (especially for children who might not understand how to recover the app from a crash).

That being said, the difficulty in writing correct & performant concurrent code is quite high. We want to make sure we achieve that with a lower barrier-to-entry so that team members don't have to manage especially complex code.

## Background processing & concurrency in Oppia Android

To ensure the team is meeting the goals of reducing concurrency complexity while not sacrificing performance or correctness, we require that all code utilize the patterns & best practices outlined in this section.

- [Kotlin Coroutines](https://github.com/oppia/oppia-android/wiki/Kotlin-Coroutines)
- [DataProvider & LiveData](https://github.com/oppia/oppia-android/wiki/DataProvider-&-LiveData)
- [PersistentCacheStore & In Memory Blocking Cache](https://github.com/oppia/oppia-android/wiki/PersistentCacheStore-&-In-Memory-Blocking-Cache)
Loading