Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@Hiteshgautam01
Last active October 7, 2018 01:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Hiteshgautam01/8a2367d71869b0d9bc0ef599693205bc to your computer and use it in GitHub Desktop.
Save Hiteshgautam01/8a2367d71869b0d9bc0ef599693205bc to your computer and use it in GitHub Desktop.

GSoC 2018 Apache Taverna Mobile

This summer as a Google Summer of Code Student I have been working on the Apache Taverna Mobile Android Application.

Official project idea link :- https://issues.apache.org/jira/browse/TAVERNA-1034?filter=12343065

The last 3 months with Apache have been one of the most productive months in my short period as a developer. I had only started android application development in January 2018 and this program helped me hone my skills exponentially. Since I was fairly new to this field, initially I faced a lot of difficulty in adhering to the timeline. But with dedicated hard work through sleepless nights and guidance from my mentors I have been able to improve the application and push it closer to public release. Below is the summary of the work accomplished during the program.

Official Repository link :- https://github.com/apache/incubator-taverna-mobile

Tasks Completed

The Apache Taverna Mobile was started in 2015 as a GSoC project. The listed tasks aimed at improving the overall codebase and they were guiding lights for me to write better test for the Apache Taverna Mobile. After the improvements and adding new features I started writing tests for the application. My mentor has been a great help throughout this programme. Compliting the tasks would not have been possible without his help.

Migrating the codebase from RxJava1 to RxJava2 :-
RxJava is a library for composing asynchronous and event-based programs by using observable sequences. When I started this project rxjava 1 support was officially about to end. So, my task was to migrate our code from RxJava 1 to RxJava 2.

- apache/incubator-taverna-mobile#56


Features Added :
User profile integration:- Apache Taverna Mobile does not have a profile section where they feature the user profile data by using myExperiment Api. So, I implemented a user profile section where user can see their own information which is according to their myExperiment account.

Dagger 2 Implementation :- As we know that a good architecture makes our apps easy to test and easy to maintain. Dependency Injection(Dagger) also favors this goal. It improves testability and reduce maintenance cost of our ‘pure’ MVP apps. My task was to implement dagger 2 in our project and this was one of the most challenging part of my GSoC journey.

Bugs Fixes :
Apart from the enhancements, I also worked on fixing some serious issues. Fixes helped Taverna application to run more efficiently and without any flaws. These bugs directly helped me to write better tests for some packages.

UI Improvements :
The user interface (UI) is everything designed into an information device with which a person may interact. The color scheme, layout, graphics, tab and button placement, typography usage, white space and all other such design-level elements determine how well the app communicates visually with the user. So, in the listed PRs I worked on improving the user interface.

Tests :
Users will interact with our app on a variety of levels, from pressing a Login button to downloading image of a workflow onto their device. It is difficult and laborious to correctly architect your application such that your logic and UI are properly de-coupled and can be tested. Accordingly, I have to test a variety of use cases and interactions by writing JUnit, Integration and UI tests. The tests are listed below :-

Refactor :
Refactoring is the process of clarifying and simplifying the design of existing code, without changing its behavior. My tasks included improvements of Project Structure, Refactoring file's , Deleting Unused Files and Replacing png's with vector assets xml's.

Before Coding period :
Before the coding period, I started contributing to the organisation. I started with migration from RxJava1 to RxJava2, some UI improvements and some bug resolves.

During Coding period :
During the Coding period, first off I started working on implementing the user profile feature for the app then moved to the dagger 2 implementation with bug fixes and UI improvements. After these, I started writing the Unit, Integration and UI tests for the application.

Tasks left :
For around 3 packages the UI tests are left and comment section integration inside the workflow detail is also remaining. I am aiming that after the completion of GSoC, I will complete my remaining tasks in Apache Taverna Mobile.

Conclusion :
I was able to write tests for the android application but still I have a lot to learn about testing and to write any kind of test in any type of situation. Dagger 2 helped me to understand how dependencies work with classes. The user profile task helped me in getting familiar with the api's and how transitions work in fragments and activities. Even after the completion of the program, I would love to write all the remaining tests at Apache Taverna Mobile and help release the app for public use.

Mentors

Sagar
Stian Soiland-Reyes

Student: Hitesh Gautam

Github
Linkedin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment