Introduction to community | Suggestions on testing and refactoring of collect application

Hello everyone,

I am Vishwajeet, a final year undergrad CSE student from India with 2+
years of android development experience.

I am a Google Summer of Code'16 participant, worked on the self-service
https://github.com/openMF/self-service-app android application with Mifos
Initiative. I have worked with several startups as well as an individual
contractor on various android applications. I have been contributing to
open source projects for more than a year to organizations such as Mifos
Initiative, FOSSASIA, openMRS, etc. I have myself open sourced more than
dozen small/large projects, primarily on android.

I am following some previous threads in the community which are regarding
two most important discussions namely *Testing and UI refactoring *of ODK
collect application.

I am reading the source code of the application and tried hands on the
application itself. I want to give my suggestions on the same:

  • Since we all are on the same page regarding the UI refactoring of an
    application using Material design principals to overhaul the existing
    application, I would suggest refactoring the existing codebase as well
    following SOLID principals and some Clean architecture pattern such
    as Model-View-Presenter
    https://en.wikipedia.org/wiki/Model–view–presenter.
  • There are various other types of architecture patterns as well but MVP
    provides the maximum amount of flexibility and keep the codebase segregated
    in forms of various Interfaces. Many famous android applications are
    already following MVP pattern as it helps in making codebase scalable with
    high code coverage.
  • Another benefit of MVP pattern is that it will make testing very easy
    (especially helps in mocking android objects) which is one very important
    thing to be done as part of ODK collect application.
  • Another important aspect is that application is still using older
    networking ways to retrieve and send data, IMHO it would be great to use
    third party library such as *Retrofit *by Square. We can also use
    ButterKnife to increase our code quality. In case we go with a pattern such
    as MVP then *Dagger 2 *would be an excellent choice as well.
  • Code refactoring will also increase our gradle build speed as the
    current code base is already significantly large.

I have personally implemented the Self-Service android application using
MVP architecture pattern from scratch. I have also given a talk over the
same in GDG DevFest and will be speaking about MVP in upcoming DroidCon
Vietnam.

I am interested in working on this exciting and important project as part
of GSoC'17.

Hopefully, some of my suggestions will be worthy to discuss further. Let me
know your thoughts on the same.

I am attaching links to my personal portfolios.

Regards,
Vishwajeet Srivastava

*LinkedIn: *https://www.linkedin.com/in/vishwajeet-srivastava
*GitHub: *https://github.com/vjs3
*Blog: *http://vishwajeetsrivastava.com
*Twitter: *https://twitter.com/vishwajeets3

Hi Vishwajeet,

Be sure to join the #gsoc channel in the Slack
(http://slack.opendatakit.org) and meet your fellow students there!

As to your project ideas, please see
https://github.com/opendatakit/collect/issues/392 and add your ideas
there!

Thanks

Yaw

··· On Sun, Mar 5, 2017 at 12:03 PM, Vishwajeet Srivastava wrote: > Hello everyone, > > I am Vishwajeet, a final year undergrad CSE student from India with 2+ years > of android development experience. > > I am a Google Summer of Code'16 participant, worked on the self-service > android application with Mifos Initiative. I have worked with several > startups as well as an individual contractor on various android > applications. I have been contributing to open source projects for more than > a year to organizations such as Mifos Initiative, FOSSASIA, openMRS, etc. I > have myself open sourced more than dozen small/large projects, primarily on > android. > > I am following some previous threads in the community which are regarding > two most important discussions namely Testing and UI refactoring of ODK > collect application. > > I am reading the source code of the application and tried hands on the > application itself. I want to give my suggestions on the same: > > Since we all are on the same page regarding the UI refactoring of an > application using Material design principals to overhaul the existing > application, I would suggest refactoring the existing codebase as well > following SOLID principals and some Clean architecture pattern such as > Model-View-Presenter. > There are various other types of architecture patterns as well but MVP > provides the maximum amount of flexibility and keep the codebase segregated > in forms of various Interfaces. Many famous android applications are already > following MVP pattern as it helps in making codebase scalable with high code > coverage. > Another benefit of MVP pattern is that it will make testing very easy > (especially helps in mocking android objects) which is one very important > thing to be done as part of ODK collect application. > Another important aspect is that application is still using older networking > ways to retrieve and send data, IMHO it would be great to use third party > library such as Retrofit by Square. We can also use ButterKnife to increase > our code quality. In case we go with a pattern such as MVP then Dagger 2 > would be an excellent choice as well. > Code refactoring will also increase our gradle build speed as the current > code base is already significantly large. > > I have personally implemented the Self-Service android application using MVP > architecture pattern from scratch. I have also given a talk over the same in > GDG DevFest and will be speaking about MVP in upcoming DroidCon Vietnam. > > I am interested in working on this exciting and important project as part of > GSoC'17. > > Hopefully, some of my suggestions will be worthy to discuss further. Let me > know your thoughts on the same. > > I am attaching links to my personal portfolios. > > Regards, > Vishwajeet Srivastava > > LinkedIn: https://www.linkedin.com/in/vishwajeet-srivastava > GitHub: https://github.com/vjs3 > Blog: http://vishwajeetsrivastava.com > Twitter: https://twitter.com/vishwajeets3 > > -- > You received this message because you are subscribed to the Google Groups > "ODK Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to opendatakit-developers+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout.