K-9 Mail is a great mail app on Android. It is almost as old as Android system, and be loved by hackers for its unique and powerful features like PGP support. However as time goes by, there has been some missing features. During GSoC 2017, I focused on improving account setup under the guidance of Valodim.
What I have done
The code I contributed is in PR 2580. It consists of following parts:
Renew the UI of account setup, and rewrite them into MVP pattern.
OAuth 2.0, including Gmail and Outlook(hotmail), so that Gmail can be accessed without allowing “less secure apps” in gmail.
During GSoC, I had a wonderful time with my mentor (I also met a friend, the other student in our org, rhari, too), and learned many knowledge that hard to learn if I develop something by my own:
I wrote unit tests for the first time. When I writing my own projects before, I had never written unit tests, and seldom heard them. It is because my own projects is small and like a toy anyway. I learned how to write unit tests in the development of K-9, what is “test-driven” development, and also the importance of unit tests. (I’m already planning supplement unit test in my own project :) )
I had a better grasp of MVP pattern. Actually I have a own app that is written in MVVM pattern. However my thought of these patterns is not exactly right, especially on the separation of concerns between view and presenter. Under the guidance of my mentor, I learned what is the key of MVP pattern.
I learned what oauth 2.0 is and how it works. The support of oauth 2.0 of Gmail and hotmail is one of the most exciting things I have done in GSoC.
What I have learned
Communication is IMPORTANT.
My mentor is very responsive on Riot to me and another student, rhari. But I have to admitted that I didn’t spend my all time on the task of GSoC, because I was distracted with many things. Due to the lack of my communication, it caused trouble for both my mentor and me. It taught me a lesson that I should never be shy to express the troubles I met.
The future work
However I have not finished all the work listed in my proposal. I’m ashamed that I didn’t do enough things in GSoC. I’d like to continue to contribute to K-9 after GSoC ending. Here is the future work to be done:
Using both client certificates and password auth
User friendly certificate error handling
Certificate viewing and pinning
User friendly TLS / SSL error handling
Finally, I would like to express my GREAT thank to my mentor, Valodim, and all other hackers in K-9 team, namely cketti and philips. The experience of GSoC is
one of my best and valuable experience in my whole life. I’m very very happy to meet these excellent hackers. I will continue to contribute to K-9. Thanks :)