2016 Google Summer of Code Wrap-Up

Google Summer of Code has come and gone in a flash…of brilliance that is. It seems like it was only yesterday that we were flooded with applicants for GSOC – now that we’ve concluded, our seven interns did not disappoint in their contributions throughout the summer. This marked our fifth year as a mentoring organization and each year GSOC continues to unite and grow our community in different ways. Once again, we received incredibly valuable contributions to our Mifos X web and mobile clients this summer; most importantly we have cultivated numerous passionate contributors that will be a part of our community long into the future. This year’s program also taught us many valuable lessons of how we can improve our communications and collaboration to realize the full potential of each of our interns.

imag7587Before we recap the new features that the community will soon be able to benefit from, a round of thank you’s:

  • Thank You to our GSOC Interns – persistence, patience, and passion were all critical factors needed along with your programming skills to help you succeed in navigating the complex FinTech domain. You have used cutting edge technologies to develop valuable innovation to help move millions out of poverty
  • Thank You to our Mentors – thanks to Nayan, Ashok, Pranjal, Antony, Ayuk, Ishan and Gaurav – you are the lifeblood of GSOC – your tireless commitment, your wise advice and your visionary insight have helped shape this next generation of open source contributors. We welcomed five new mentors this year including 2 of our former GSOC participants – Ishan and Gaurav.
  • Thank You to Google Open Source Programs – thanks to Stephanie, Cat, Joshua, Mary, and the entire team. Year after year, you continue to make the program more effective including the rollout of a brand new program website this year. We appreciate the attention and commitment you give to the hundreds of orgs and thousands of students you impact in so many ways.

Here’s a brief recap on what the interns worked on over the summer followed by a closing interview on their experiences over the summer.

Want to see all of the brand new features and innovation in action? Register and attend our GSOC Demo Day for a showcase of all their work via GoToTraining. GSOC Demo Day is Thursday September 15 at 1400GMT.

 

Mifos X Web Client

Duplex Kamdjou & Refactored Mifos X Web Client

Our Mifos X Web Client (also known as the Community App) is the primary way our community accesses the Fineract platform – it hasn’t been signficantly updated since it was built initially by Nayan and then updated by Gaurav during his GSOC.  Duplex set out with an aggressive yet achievable plan to improve all facets of our web client – from optimizing performance to improving usability. Under the mentorship of Pranjal, Duplex started out by upgrading our web client to the latest stable version – AngularJS 1.5, including updating all the libraries and dependencies. Next he worked on improving performance by minification. Lastly he took the new skin that Pranjal designed and re-skinned the entire app page by page.  Duplex’ work will soon be shipped as part of our production-ready release package and you’ll enjoy a brand new look and feel that’s been modernized inside and out for better performance. You can test it out at https://demo.openmf.org/beta (mifos/password)

Mohit Bajoria & Browser-Based Offline Access

For the longest time, users in our community have expressed a need for offline access in the browser. While connectivity continues to reach further out and mobile devices reduce the need for offline, it is still a reality that our users need a solution to enter data when they don’t have connections in their browser. Utilizing the Chrome Browser and Google Service Workers, Mohit has built out offline access within the Mifos X web client. Working with Gaurav and Pranjal, he’s built out the ability for any data that you traverse through in the core client, loan, and savings fields of the application to be accessible offline – likewise loan and savings data entry can be done while offline. Mohit’s work will soon be available as part of a public release too

Adhyan Srivastava & Notifications and Actionable Alerts

As field officer and staff of financial institutions become more distributed, it’s ever more important for notifications and alerts to respond promptly to clients and their accounts. With guidance from Pranjal and Gaurav, Adhyan has built on a highly extensible notifications framework which allows for notifications to be generated upon the occurrence of certain actions and for these to be acted upon. Notifications are stored in a queue and can be delivered across a wide array of devices. Adhyan’s focus was on building the framework, delivering notifications in the web client and providing some of the highest priority notifications – i.e. client approval, loan disbursal, savings activation, etc. Once this feature is shipped, staff will receive a notification which they can click and be taken directly to the account to be approved, disbursed, etc.

Mifos X Mobile Apps

Rajan Maurya – Android Field Officer App 3.0

Rajan’s project started out with a loosely defined scope – clean up and improve the enhancements our previous interns had made and introduce new functionalities. He embraced his project with a great deal of professionalism and initiative and took it up on himself to refactor the entire project in a Model View Presenter architecture, drastically improving the performance of the app and making it easier for others to develop on the app. With refactoring done, Rajan began fixing a number of long-standing bugs and cleaning up the code that had been contributed by our Outreachy interns. Lastly, Rajan embarked on introducing new offline functionality throughout the app. He designed an elegant interface for going back and forth between on and offline mode and added much-need functionality to download clients offline, enter loan and savings data and then synchronize when back online. Rajan worked under the mentorship of Ishan, who developed the Android field client as his first GSOC project. Rajan’s work will soon be available in the Google Play store – if you’d like to test it now, send us a message in the Gitter chatroom at https://gitter.im/openMF/android-client.

Vishwajeet Srivastava – Android Self-Service App

As we move towards the era of Financial Inclusion 2.0, more and more financial services will be digital and done in a branchless manner. To usher in this new era, we’ve released a set of self-service APIs for clients to directly interact with their accounts. Vishwajeet set out on building our first client-facing mobile app which will allow clients to login, view their accounts, edit their client details, and conduct transactions within their account. Vishwajeet got the initial version of the application in place and will be continuing work on it along with other volunteers in the community to hopefully ship this app in the near future. We aim for it to be the foundation for our mobile wallet so eagerly welcome any contributors to this project.

Integration Modules

Nikhil Pawar – Credit Bureau Integration

Minimizing over-indebtedness is critical to the responsible and impactful delivery of financial inclusion. Credit bureaus and access to the data within them as well as posting of their credit history in Mifos is a crucial step. Incorporating the data from their microloans into national credit bureaus will also pave the way towards helping the underbanked become a part of the formal financial sector. Nikhil took on this project to integrate Mifos with credit bureaus with great zeal and his knowledge from the financial services sector. Under the mentorship of Nayan and Ashok, he crafted out a cohesive architecture, engaged actively with stakeholder in India, and developed a module which allows for data to flow in and out of credit bureaus automatically. With a focus on India, now customer data can flow into Mifos from the credit bureau and data on their loans from Mifos will flow into the credit bureau. Nikhil demonstrated a great deal of professionalism and patience in his project including submitting a PR for an improved client address module through 15 review cycles! Nikhil is now focusing on genericizing the module so other countries’ credit bureaus can be integrated.

Daniel Carlson – Mobile Money Integration

All around the world, mobile money has established itself as a powerful means in which to lower the cost, increase the reach and relevance, and improve the security of financial services. Mobile Money providers are opening up their APIs to developer enabling greater scale and innovation in financial services that use mobile money as their rails. Partners like Musoni Services have offered valuable mobile money integrations to their customers so the community has had a high need for a module to better integrate mobile money with Mifos. Under the leadership of Ayuk and Antony, Daniel has built out a mobile money module that integrates with Mifos that provides an interface for initializing transactions via mobile money but more importantly allows mobile money transactions to be reflect in Mifos in real-time. Daniel focused on integration with the mobile money providers in Cameroon and is continuing to work on genericizing it to work with any mobile money APIs.

What was your most rewarding experience contributing to Mifos this summer?

Adhyan: The most rewarding experience for me would have to be interaction with the awesome developers of the community. My mentor Pranjal is a true GEM who with his awesome analogies made things easier to understand and Ed who made sure that we are not blocked anywhere by having regular check-ins and weekly meetings.

Also, contributing to Mifos has given me the opportunity to work on every stack of development simultaneously like designing and implementation of a data model, rest API and then using my own developed API to fetch data on the UI side. It has made me a developer who is comfortable with working on every stack of development.

Rajan: It was the day, Mar 11, 2016, that I will never forget. I looked at Mifos android-client project and tried to read the code and wondered, “Is it possible for me to contribute to this project?”. After spending two  days of utter hard work, I found the project very hard and beyond my capabilities. I started to look for another project. And next day, while having a conversation with my friend about the GSoC projects, he showed me the project he filtered, Mifos project, and asked me to apply for the same. “This is a very good android project and you have adequate knowledge about Retrofit, it will be a  great experience for you”, he said. To be honest, I already did many small projects like handling network calls, so, I had a clear vision in Retrofit and a very nice understanding of it.

I started reading the code again and found one thing that code quality is not good, everything is going in a single place. Making it hard to read and along that even the contributors had written very bad code. At that time I realized I can’t comment on such things because before doing this project, I have also written all the staff at a single place but never compromised with code quality. I searched for managing the big project and found that  we need an architecture, after a bit searching I found something named as  “Ribot android-boilerplate”,  read all things and finally got nothing, I haven’t done anything like this before, So it was very hard to me. I went through the architecture multiple times and finally realized that something is getting into my head. Ohhhhh and side by side, I made a PR that was fixing survey and some other functionality.

But believe me. it was not sufficient because many other contributors were doing a great thing. I had only one way, make a PR that will be remarkable. It was a Thursday and I was going home and I got an idea, that why not convert the whole project in MVP architecture that will increase the code quality  and readability. It was not easy to do but after 72 hours of reading, coding and analyzing made first architecture #PR232.

And finally after selecting in GSoC, Ishan asked what I you want to do first? And I said. I want to implement MVP with Dagger 2. He asked whether I was sure? And I said “Yes”, give me 7-8 days. And  by next week I had implemented MVP architecture in the whole codebase. And one more thing, Ishan as a friend, whenever I was talking to him, he is taught me new and awesome stuff every time which I had not  heard before. That was most rewarding !!

MohitMost rewarding experience contributing to mifos this summer was making the community app offline, learning about progressive web app, Other than learning, it was my mentor Gaurav, who made the GSoC lot more fun.

Duplex: My front-end development experience has exponentially increase in grunt task management, css preprocessor and angularjs app debugging. Also my communication skills have increased.

Vishwajeet: My most rewarding experience was to learn software development skills from some of the great programmers in form of my mentors. I have learned how code quality is very important for industry scale projects and how small things are so important in the development process.

Daniel: Getting a Mac book with my midterm evaluation. When I finished my REST API and it actually worked. I had always been afraid of the concept of REST APIs and so this was the first time I was actually going into the concept.

NikhilGetting my first module merged into the Fineract was the most rewarding experience. I had put lot of efforts in the development of the project and would continue to put until the entire project is merged into the community code base. However, the feeling that the community is going to use my module is just awesome. 

What was your biggest challenge you overcame this summer?

Rajan: Mifos android-client had many contributors and some of them had done extraordinary work like Ishan, Satya, and Olya. Now my work started from here, where I had to implement Offline sync feature, for that I had to write DatabaseHelper. I had two options, first start writing code as people were writing and the second one to implement MVP architecture.

It was very tough to decide. But I finally decided to implement MVP first, because Ishan told me to focus on quality during writing the code and I worked about 7-8 days full time in order to complete it.

Reading other people code, shifting according to MVP and fixing error was all that I was doing in that time. That was the biggest challenge to me. Believe me fixing second person code is most challenging, rather than writing that thing yourself. As I have finished with MVP, everything is easy to read and write new code.

Duplex: My biggest challenge was to fix broken components of such a large application after upgrade the AngularJS version from 1.2 to 1.5.

Vishwajeet: In my opinion, one of the biggest challenge which I overcome was to write a better quality code. Before GSoC I was never focussed about the code quality but now after working with my mentors I understood that this is the most important and critical feature of every good codebase. I am happy that I wrote a much better code now then what I used to write and I will keep on improving this skill.

DanielGetting my mentors(Ayuk and Antony) along with Ed and Adi to accept my specification document (They kept saying it was too high level- didn’t really understand what they meant by that at first). I also overcame getting data from the Mifos platform and fixing the Cross Origin Resource error.

Adhyan: Earlier, I was not very much comfortable in working with large code bases i.e it took some time to get hang of it. But after working with Mifos, I don’t think it would be an issue now.

Mohit: I can now work for hours without getting frustrated, With lots of blockers in my project, i learned to find out solution by myself which will help me in long run. I learned how to manage such large codebase of open source community.

NikhilDesigning a module and getting the approval for community was a unique and challenging experience.  You need to collaborate with  the community members , convince them  and get their approval for the design and later the code. It takes some time and patience but the experience is rewarding.

What advice would you give to other students/GSOC interns on working with Mifos?

gsoc-1

Mohit debugging at night

Mohit: If you like to work with Mifos at GSoC, you’ll never regret the choice that you will make. It’s remarkable opportunity for you. As my experience at GSoC comparing to my friends, Mifos has one of the great mentoring program which will not fail you, that will provide all the help you need at any time. Also in the mean time you’ll be able to touch great knowledge in variety of technologies. It’s an awesome community.

 

Duplex: They should prepare their self to work hard and harder and communicate with their mentors and the community when help is needed.
AdhyanWhen starting with open source it can a bit frustrating at times. Just hang with it and don’t give up. It really pays and GSOC is one such reward for the budding open source developers. For the students participating in GSOC, I would like to say that if you are alien to the project and codebase, don’t worry about how it will be done because once you are into GSOC the awesome community and mentors make it really easy for us.

Vishwajeet: I would advise other students/GSoC interns to be very open in communications with their mentors. Specially as we work remotely so it is more important to be clear about whatever your mentor trying to explain to you make sure that you understood properly and ask them again if you are not clear about anything. Also, if you are uncomfortable in working with any of your mentor or your mentor is not responding then please tell the community about this, they will certainly help you out.

DanielTrust your mentors and if you run into any problems ask any of the other interns and don’t be afraid to ask on the mailing list.

Rajan: Writing code is not a big thing. Anyone can write code and can make a good website, android application or software. But one day, you have to share your code with others so that project can continue in a good manner. And if at that time you had written a quality code and  good documentation. it will become easy for others to catch your idea and continue. Otherwise, things get time-consuming and one day project will get vanish and no one will remember your effort and hard work. And believe me, if you have not written quality code before it will be hard in starting but after some time you will be ok and you will adapt to it.  And before contributing to any project follow their guidelines and if one have any doubts, ask to project manager about the project. Otherwise, don’t hesitate to ask the community.

Mifos community members are good. they will catch you very soon.

NikhilDevelop the product in small iterations and keep checking with the mentor/community , whether the approach you are following is correct.

This would reduce the efforts involved in the rework. The approach would also ensure smooth merging of your code.

If you could visit the country of one of our Mifos users, where would it be and why?

img_20160831_113312


 

Duplex: After looking at the various countries that have deployed this awesome system in production, i have realized it could be more fun if i could visit India. I realized that they probably have some of the largest users running the Mifos platform. Hence it could be easier to find and talk to a host of the clients to get on the ground experience about their personal and general experiences with the software and how it has really changed life for them and impacted their communities. There is nothing more cool than hearing first hand from real users who might be running a version of your code. Such an opportunity could boost my zeal even more to engage in the community and always strive to improve lives around the globe.

Vishwajeet: I would love to visit Kenya out of all the mifos users because there are a large number of users of Kenya already using mifos products and it would be great to know their reviews in person on some of the work which we are working.

Mohit: Philippines, Can give a helping hand for Mifos users while enjoying a nice vacation 😀

DanielConflux Technologies(India). Talking with the other Indian interns and Nayan and also getting their(interns) experiences was fun and I would like to meet them in person. Also I’ve always wanted to go to India(it being one of the best countries in software as we have been told).

AdhyanSilicon Valley,CA,USA, because of the awesome developer community present there.

Rajan: If I get a chance, I  would like to visit USA or Amsterdam, I will get a chance to meet Mifos members Ed, Ishan, Nayan. Because during this summer, I have learned a lot of  professional and quality things which I never expected and I want to keep learning.

NikhilThough I have been to India but did not get an opportunity to visit our end users.i would love to visit Mifos users in India and would like to hear their feedback. 

If they expect some improvements in the product or would like to some new feature. I would love to take it up as my new project.

If you have time, how do you hope to contribute to Mifos in the future?

screen-shot-2016-08-30-at-8-04-55-pm

Daniel elected for a picture of his terminal in lieu of himself 🙂

Daniel: Bug fixes, new features, Helping out with issues in the chatroom and also helping newbies get up to speed and start contributing to the Mifos community.

Duplex: I will always contribute to Mifos as much as i am free.

Vishwajeet: I was working on Self-Service android client, this project was developed from scratch so a lot of improvements and features still needed to be added, so I would love to keep on contributing on them. Also, I would be happy to help other contributors who are willing to contribute in the mifos projects.

Mohit: I will continue to work on mifos-community app mainly offline app, adding more features to it, making it user friendly 😉

AdhyanI will surely be contributing to Mifos. I may solve pending issues on a regular basis or pick previously proposed projects to work upon, which have not been started.

Rajan: I have become familiar with project and idea. I am very comfortable with this project So, I can contribute, during weekends. Because coding has become my habit.

Nikhil:  I am interested in expanding my module by adding more credit bureaus. This time from the countries other than India.

If you have time, how do you hope to contribute to Mifos in the future?


Nikhil: I have come back to US after the working with my Mentor in person in his office in Bangalore. My Fall semester has commenced and would now continue my Masters studies. Besides this I would also work towards the merging of the entire project into the community code base.

Duplex:I will be continue working on my code to make sure it has been deployed and used as the standard Mifos Community-App

Vishwajeet:I will be working on improving my programming skills in some of the areas as suggested by mentors. I will be contributing to Self-Service app codebase as well. Beside that as I am in my final year, I will be targeting to get a job for myself.

Daniel: I will finish up with my GSOC project and since I am getting better at Spring I can start contributing more to the core. I am also working with Skylabase(Mifos partners) – and completing my internship of 7 months.

Adhyan: As of now, I am in my final year of my undergraduate course I will be working on few major projects at my University along with contributing to Mifos sometimes.

Rajan: I can’t stop myself writing code.  So,  I will continue my contributions in android-client and open source projects.

Mohit: As the future belongs to PWA, I will be learning Angular 2 + Ionic 2 and continue to work with Mifos for long.