My GSoC 2018

Version 5.5 by Aleksei Ovsiannikov on 2018/08/09

Aug 08 2018

This blog post is not published yet.

What did I expect from GSoC 2018

This GSoC is my first Google Summer of Code and for this reason it was a mystery for me what will be happening on this internship. Anyway, I have expected new experience in remote internship, open source project contributing, Google Summer of Code participating and international only remote communication. Of course, these are quite obvious expectations, but for me it was new and unknown experience.

In this post I want to describe what I have finished and what is not completed yet and why.

How it was

My first impression - confusion. Actually, when I received email with acception for GSoC it stunned me. After that a question came to my mind - what to do now? I have started to search my mentors (at that moment I did not know where to find them). That was my start of GSoC.

I remembered the first internship period as time of investigations. I have started to understand project structure deeper, Android Authenticator and Android Contacts API. It was the start of English-only communications in team and close interaction with my mentors. Main problems for me were the old code (which was still new for me) and new API. As a result it was a very difficult period for me and for this reason I spent plenty of time in research.

The second period was a period of fixes and improvements. First of all, I have documented all code that was presented at the moment. After this process I got a lot of understanding of code work and found some places which had bugs or deficiencies, created by my misunderstanding.

The third period was a period of tests. It looked just about like try-fail-search-[repeat]. As a result Espresso was chosen for UI testing and Mockito for all tests. Unfortunately, I did not find the solution for problem of mocking server interaction from UI tests (it will be described later).

In conclusion, I am absolutely sure that this internship was useful and helpful. I have studied new frameworks, functionality, Android API and more others. I got an experience in international communication. It was extremely fascinating.

How to use the result of my work

Actually you have several ways to get application "XWiki Android authenticator":

Also you can get sources of application and compile it by yourself. For this:

  1. Clone project by https or ssh (usualy it is command git clone ...). After this action you will have project on master branch.
  2. Open folder and create local.properties file with content sdk.dir=%ANDROID_HOME% (here %ANDROID_HOME% is path to sdk location)
  3. You can import project in Android Studio or build app by command ./gradlew clean cleanBuildCache build

What was not done

Tests

Last period I was busy on investigation of Android tests, frameworks, approaches to writing of tests and other issues. For this reason only a small amount of tests were written. Besides, before the end of the third internship period rewriting of work with interaction with server was not completed for the reason that I have planned to use PowerMockito for mock interaction with server, but as this framework must be included in @RunWith (which is used for Android4JUnit by default, as I remember) that disabled default work with android instrumentation tests. As a result:

  • About two weeks were spent on investigation of frameworks, approaches and trying of instruments in non-git example projects
  • About a week was spent on writing and actualizing tests which are now included in Git Branch
  • About a week was spent on finding a better way for working with server requests

Include OpenID

For the reason that part with tests was not completed and Open Id implementation is to be included on XWiki side I could not have completed this big task.

What was done

If you want to see all issues which were closed/solved by me, you can open XWiki Jira with filter by my closed issues. What was completed:

  1. The work with network/API fully rewritten  (Jira, PR)
    • Old handwork with network was removed (via built-in sockets, put of heads and others)
    • Work with network via Retrofit + RxJava was added, fixed and refactored
    • In-app registration was removed for the reason that XWiki API doesn't support work with registration - it must be implemented via web UI API
  2. Look like of application was fully rewritten (Jira issue, PR). Was changed:
    • Page with server address setting up
    • Page with username and password setting up
    • Page with synchronization setting up
    • Contact data edit page
  3. Common fields for edit and show was added (Jira, PR). Besides, in bounds of this task was rewritten and update part of work with contacts (Jira, PR)
    • Address
    • City (read only, it is not default field of XWiki)
    • Country (read only, it is not default field of XWiki)
    • Company
    • Comment (represent on android as Note)
  4. Added documentation for all written code (Jira, PR)
  5. Started to create tests (Jira, Git Branch)

Common contribute into project: contributors of project page, my commits (only master branch)

Useful links to my issues

Afterword

Thanks to my mentors: Thomas Mortagne and Pawan Pal which have always been happy to help me in any matter.

Tags:
    

Get Connected