Difference between revisions of "GSoC 2018"

From Kiwix
Jump to navigation Jump to search
(Added initial ideas)
m (Mhutti1 moved page GSoC-2018 to GSoC 2018)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
As this is our first year proposing GSoC projects we have decided to propose four Android projects (remember these are just suggestions). The possible mentors for all these projects are: mhutti1, Kelson42, Rashiq, EladKeyshawn


== Ideas List ==
== GSoC 2018 Ideas List ==


=== Improve the automated testing setup of the Kiwix Android application. ===
=== Improve the Kiwix Android apps CI setup and increase our code coverage. ===


==== Summary: ====
==== Summary: ====
We have a basic automated test setup for our Android app.
We have a basic automated test setup for our Android application using Travis Continuous Integration and Bitbar cloud testing. During this project you would be improving existing test infrastructure as well as writing new tests to help combat regressions in our code. As well as writing tests you would be refactoring parts of the code base to improve test-ability and readability.


==== Improvements to be made: ====
==== Improvements to be made: ====
* Abstract large parts of the app to use dagger dependency injection e.g shared preferences
* Write new unit and instrumentation tests to improve code coverage.
* Use this to create more meaningful tests
* Where needed make use of dependency injection in test implementations.
* Improve stability of existing tests
* Refactor code where needed to allow it to be unit tested and improve readability.
* Specifically ensure the following areas are tested: Network, File System, Content Download, JNI interactions.
* Improve our CI build process to allow for quicker and more targeted testing.


==== Skills needed ====
==== Skills needed ====
* Android dev experience (Java)
* Android experience (Java).
* Experience with CI/Automated testing.
* Experience with CI/Automated testing.
* Experience refactoring code.
* Experience with dependency injection techniques.
==== Skill Rating: Easy ====


=== Improve android onboarding experience. ===
=== Improve the Kiwix Android apps new user experience. ===


==== Summary: ====
==== Summary: ====
The onboarding experience for Kiwix Android should be improved to allow users to
The new user experience for Kiwix Android should be improved to allow users to more easily find content that they are looking for, while also ensuring that they understand the functions that the application provides. The bug report process of the application should also be simplified in order to allow more information to be captured while preserving user privacy.
 
More easily find content they are looking for..


==== Improvements to be made: ====
==== Improvements to be made: ====
* Create a new initial landing page with suggested ZIM files.
* Create a new initial landing page with suggested ZIM files that a user might want to download.
* Improve download management UI and UX to flow more naturally
* Improve the download management UI to flow more intuitively, guiding users to get the content that they want.
* Create a custom bug report setup to allow users to make their issues known more easily.
* Implement various quality of life features to increase user retention.
* Create a custom bug report setup to allow users to report crashes and request features more directly while providing anonymous meta data if they wish.


==== Skills needed ====
==== Skills needed ====
* Android dev experience (Java)
* Android experience (Java).
* Some UI design
* Experience writing initiative UIs.
* HTML/CSS/JavaScript to make a simple web panel for issues?
* HTML/CSS/JavaScript to make a simple web panel to capture bug reports from the app.
 
==== Skill Rating: Medium ====


=== Implement full multizim support ===
=== Implement full multi-zim support in the Kiwix Android app. ===


==== Summary: ====
==== Summary: ====
Multizim search is an experimental app option. You would be implementing it fully
Multi-zim search is currently an experimental app option. This task involves fleshing it out and improving its stability, while also adding new features for use in Custom applications to improve user acquisition rates and save space on users devices by utilising cross zim file linking combined with a more intuitive search experience.
 
With cross ZIM file linking, auto download of extra content, more taylored search.


==== Improvements to be made: ====
==== Improvements to be made: ====
* Improve search functionality to include an image and a snippet.
* Improve search functionality to include an image and a snippet allowing users to see the context of their searches.
* Implement a download page to download “predetermined content” that would work specifically with custom apps.
* Implement a download page to download “predetermined content” that would work specifically with our prepackaged Custom apps.
* Work with team members to formalise spec for cross ZIM Urls.
* Work with other team members to formalise spec for cross ZIM Urls.
* Backup download for Custom apps.
* Implement a download mechanism to download content linked from downloaded zim files and keep it up to date.


==== Skills needed ====
==== Skills needed ====
* Android dev experience (Java)
* Android experience (Java)
* Basic knowledge of the JNI.
* Basic knowledge of the JNI.
* Some UI design
* Some UI design experience.
 
==== Skill Rating: Hard ====


=== Improve Custom App implementations ===
=== Improve Custom Android App implementations. ===


==== Summary: ====
==== Summary: ====
Our custom apps are a great way for users to download a subset of the content that  
Our Custom apps are a great way for users to download a subset of the content that they want without having to navigate through a list of daunting content. They are currently seeing rapid growth in adoption and we want to improve the experience for our users currently using them by increasing their stability.  
 
They want without extra baggage.


==== Improvements to be made: ====
==== Improvements to be made: ====
* Validate ZIM files from hash.
* Validate zim files from hash to ensure they are not corrupted.
* Implement backup download solution using existing code.
* Implement the recommended backup download solution to fix corrupted files.
* Write a simple intuitive UI for this download solution.
* Write a simple intuitive UI for this download solution.
* Research solutions for embedded ZIM files and implement the most feasible solution.
* Research solutions for embedded zim files without unpacking the content from the APK and implement the most feasible solution.
* Look into the best way to relocate/ share OBB files if possible.
* Look into the best way to move OBB files within the file system of between devices and implement any feasible solutions found.


==== Skills needed: ====
==== Skills needed: ====
Line 69: Line 75:
* Basic knowledge of the JNI.
* Basic knowledge of the JNI.
* Some UI design
* Some UI design
==== Skill Rating: Hard ====
== See also ==
Search for "good first issue" tickets in our code repositories trackers:
* [http://code.kiwix.org/ Kiwix code repositories]
* [http://code.openzim.org/ openZIM code repositories]

Latest revision as of 23:50, 4 February 2019

As this is our first year proposing GSoC projects we have decided to propose four Android projects (remember these are just suggestions). The possible mentors for all these projects are: mhutti1, Kelson42, Rashiq, EladKeyshawn

GSoC 2018 Ideas List

Improve the Kiwix Android apps CI setup and increase our code coverage.

Summary:

We have a basic automated test setup for our Android application using Travis Continuous Integration and Bitbar cloud testing. During this project you would be improving existing test infrastructure as well as writing new tests to help combat regressions in our code. As well as writing tests you would be refactoring parts of the code base to improve test-ability and readability.

Improvements to be made:

  • Write new unit and instrumentation tests to improve code coverage.
  • Where needed make use of dependency injection in test implementations.
  • Refactor code where needed to allow it to be unit tested and improve readability.
  • Specifically ensure the following areas are tested: Network, File System, Content Download, JNI interactions.
  • Improve our CI build process to allow for quicker and more targeted testing.

Skills needed

  • Android experience (Java).
  • Experience with CI/Automated testing.
  • Experience refactoring code.
  • Experience with dependency injection techniques.

Skill Rating: Easy

Improve the Kiwix Android apps new user experience.

Summary:

The new user experience for Kiwix Android should be improved to allow users to more easily find content that they are looking for, while also ensuring that they understand the functions that the application provides. The bug report process of the application should also be simplified in order to allow more information to be captured while preserving user privacy.

Improvements to be made:

  • Create a new initial landing page with suggested ZIM files that a user might want to download.
  • Improve the download management UI to flow more intuitively, guiding users to get the content that they want.
  • Implement various quality of life features to increase user retention.
  • Create a custom bug report setup to allow users to report crashes and request features more directly while providing anonymous meta data if they wish.

Skills needed

  • Android experience (Java).
  • Experience writing initiative UIs.
  • HTML/CSS/JavaScript to make a simple web panel to capture bug reports from the app.

Skill Rating: Medium

Implement full multi-zim support in the Kiwix Android app.

Summary:

Multi-zim search is currently an experimental app option. This task involves fleshing it out and improving its stability, while also adding new features for use in Custom applications to improve user acquisition rates and save space on users devices by utilising cross zim file linking combined with a more intuitive search experience.

Improvements to be made:

  • Improve search functionality to include an image and a snippet allowing users to see the context of their searches.
  • Implement a download page to download “predetermined content” that would work specifically with our prepackaged Custom apps.
  • Work with other team members to formalise spec for cross ZIM Urls.
  • Implement a download mechanism to download content linked from downloaded zim files and keep it up to date.

Skills needed

  • Android experience (Java)
  • Basic knowledge of the JNI.
  • Some UI design experience.

Skill Rating: Hard

Improve Custom Android App implementations.

Summary:

Our Custom apps are a great way for users to download a subset of the content that they want without having to navigate through a list of daunting content. They are currently seeing rapid growth in adoption and we want to improve the experience for our users currently using them by increasing their stability.

Improvements to be made:

  • Validate zim files from hash to ensure they are not corrupted.
  • Implement the recommended backup download solution to fix corrupted files.
  • Write a simple intuitive UI for this download solution.
  • Research solutions for embedded zim files without unpacking the content from the APK and implement the most feasible solution.
  • Look into the best way to move OBB files within the file system of between devices and implement any feasible solutions found.

Skills needed:

  • Android dev experience (Java)
  • Basic knowledge of the JNI.
  • Some UI design

Skill Rating: Hard

See also

Search for "good first issue" tickets in our code repositories trackers: