Monday, August 13, 2018

Final Report of OpenMRS Android Client

Hello Everyone,

It has been more than 4 months and still, it feels like the beginning. Time has flown away and eventually, we all have come to the end of this year's Google Summer of Code programme.
I think I have made some great progress during my internship period and below, you all can find the summary of what I have done in this project.

OpenMRS Android Client 3.x Project

This project was basically targeted the Android client of the OpenMRS system and IT has a lot of useful features in parallel to the web application where users can easily use the features using their Android smartphones.

The main objectives of this project were to improve the existing Android client by doing various feature implementations and bug fixes.Since it was an Android project I was mainly involved in developing, using Java programming language with the help of Android SDK.

While working in the objectives, My mentor Shivang was very helpful and we had skype calls frequently to discuss the progress of the project and he was always guiding me to the correct path by suggesting new ways to overcome some hard obstacles I have faced during my developments.
Other than my mentor Daniel Kayiwa was also very helpful as usual to solve some general problems regarding the system. I thank them both because without their help I may not be able to come this far.

Main Objectives

  • Provider Module Implementation
  • Visual Improvements:
    • Make improvements to the way that charts are being displayed
    • Progress Dialog Improvements
    • Replace RangedEditText with seekbar
    • Use TextInputLayout instead of the normal EditText
  • Security Improvements:

    • Encrypt the database using the details derived from the username and password of the user
    • Password Change detection and log out the user
    • Forgot password option
  • Application tour
  • OpenMRS Analytics tool implementation
Since the project was actively developed by the opensource developer community, It was implemented as a Github repository.
All the issues and features were solved as a separate branch and then Pushed to the main repository by creating a pull request to review the code to mentors.

PR list

Blog posts

Mid-term presentation

Talk thread discussion 

That's the wrap of all the works I have completed during this years programme and initially I was so worried about how to do all those works because at that time I was a noobie to the programming and also to the opensource contributing but thanks to the great organization the OpenMRS, I have learnt a lot about how a project should be implemented according to the standards under the guidance of very smart and knowledgeable people and It was really a great privilege for me.

It was really a positive one and for the feedback I want you guys to give more opportunities to the students like me where they can learn and improve their programming knowledge while also earning a good amount of stipend.

I wish good luck to everyone and This won't be the end of my affiliate with OpenMRS and I hope to be in touch with you all while contributing to the Opensource community where we can make wonderful products as a group collaboration. So let's Write Codes and Save Lives.

Sunday, August 5, 2018

Final week of GSoC

Hello guys,

The end of this year's programme has come and we all have worked hard to achieve the objectives of the individual projects that have been assigned to us. I have completed more 80% of the objectives of my project and currently wrapping them up by testing and documenting everything so I can transfer all my developments to the future contributors in a good way.
Here I would like to thank all those who have helped in many different ways to make this project a success including my mentor Shivang Nagaria and the Daniel Kayiwa who was always there to help everyone.
I will write a separate blog post with the finalized description of my overall project and until then see you all.

Sunday, July 29, 2018

Finalizing the Security features

Hi everyone,

We are in the last 2 weeks of the Google Summer of Code programme and I have been busy this week finalizing the Security related tasks of the project.
What I have done in this week is I have started to work in the feature which is implementing a way to detect user credential changes in the web app and log out the user automatically if there are any changes happened.
There are many different approaches that can be used to achieve this and I have chosen to create a separate service which is sending requests to the server periodically to verify the login credentials.
The service is automatically stopped when the app is killed and start again after app becomes active.
In this way, we can minimize the resources utilization while achieving our target.

That's all for this week and let's meet on next week with the more interesting news. Until then see you.

Sunday, July 22, 2018

10th week of GSoC

Hi guys,

It's almost the 10th week and eventually, we are closing to the end of this year's Google Summer of Code programme and every student including myself has been doing our best to complete the tasks within the available time frame.
In the previous week, I didn't get much time to involve in the project because of some personal matters but I have started to implement the forgot password task and hopefully, I can finish it during the next week so I can move into the final task set of the programme. Up to now, that is the progress and let's meet in the next week with the more interesting news.

Saturday, July 14, 2018

Improving security features

Hello guys,
During the past week, I have been busy with implementing a way where the system detects the changes in user credentials and log out the current user if something changes. This task is related to security features which are assigned as the objectives of this years summer of code project.

It looks like we have to find the most efficient way of implementing this since the way I have proposed in my prosal may lead to some performance issues because running a separate service which is continuously requesting logging details in the background can consume a lot of resources from the device.

Currently, I'm discussing with my supervisor the best ways we can achieve this and soon will complete this and then I can move into the last security task and so on.

So I guess that's all I have to say regarding previous week and let's meet next week with more details.

Saturday, July 7, 2018

8th week of GSoC

The second evaluations deadlines are closing and everyone including myself being busy working with the tasks related to our projects. This week I have been busy with creating a methodology where the database of the application is encrypted using the details derived from the username and password of the user.
previously the encryption key was generated using a random key generated using the Android key generator API and the new approach is somewhat more secure than the previous one.
Apart from the username and password, I have also added the timestamp of the date and time to the key so it will be more secure. The newly created encryption process is as follows

Coming week  I will also have to create a short presentation regarding the things I have done up to now to demonstrate in talks thread. That's all for now and see you all in next week with new exciting stuff.

Sunday, July 1, 2018

Finalizing the UI improvements

Hi people, It's been a busy week for me since I have to prepare for my final year research Viva which is happening in the coming week. Due to the preparations, I couldn't commit much time to the developments but within the time available I have done some tasks related to correcting and finalizing the improvements I have done to the UI in the application.

Some of those include finding redundant codes related to RangedEditText and the Native SeekBar.And I have also replaced all the EditTexts with the Android provided Native Text Input Layout to give the user a better interaction with the application.

After completing my academic works I'm expecting to move into the security-related tasks within next weeks. That is the update for now and see you all later.