GSoC 2019 Porting MapMint from Python2 to Python3

Project
Title: Porting MapMint from Python 2.x to Python 3.x

Student: Fenil Mehta

Mentors: Gérald Fenoy and Rajat Shinde

GitHub Repository: https://github.com/fenilgmehta/mapmint

GitHub Wiki Page: https://github.com/fenilgmehta/mapmint/wiki/GSoC-2019---porting-python-2.7.x-to-3.x

Description
My project will focus on porting the MapMint project [1] from Python 2.x to Python 3.x.

MapMint is a web-based Geographic Information System (GIS), which is designed to facilitate deployment of Spatial Data Infrastructure (SDI). In an SDI, geographic data, metadata, tools, and the users are connected in an interactive manner in a framework so as to use the spatial information in an efficient and flexible way.

MapMint combines various different software in a complete and coherent web mapping platform, thus helping users in building their own maps and web-applications. These web-services are built on top of the ZOO-Project.

Advantages of Python 3.x over Python 2.x
1. Good Community support is available for Python 3.

2. Each newer version of Python continues to get faster with the runtime.

3. Python 2 is not traditionally a typed language. But Python 3 supports typing, that overcomes the development conflicts when working with new pieces of code.

State of the Project before GSoC
The MapMint software runs on Python 2.x which is an older version of the Python language.

6th May 2019 to 27th May 2019 - Community bonding
- This period will help me familiarize OSGeo and MapMint work culture. - I will setup the initial environment on my device and review the code. - I will coordinate with the team and try to understand the working of each file/method. - Add basic documentation so that it simplifies the porting and the testing phase. - Discuss with mentors about the test data.

Week 1 to Week 4 (27th May 2019 to 24th June 2019) - Coding phase 1
- I plan to finish major part of the porting in this time frame. - Start porting the programs to Python 3 and unit test them as discussed in the bonding phase.

Week 5 to Week 8 (24th June 2019 to 22nd July 2019) - Coding phase 2
- Submit the first evaluation. - Perform black box testing on the whole project in a new Python 3 environment and fix the bugs reported and/or found. - Document the results.
 * 24 June 2019 to 28 June 2019
 * 28 June 2019 to 22 July 2019

Week 9 to Week 12 (22nd July 2019 to 19th August 2019) - Coding phase 3
- Submit the second evaluation - Buffer period for any overrun and perform code optimization if possible (only 10 days available due to exams)
 * 22 July 2019 to 26 July 2019
 * 26 July 2019 to 19 August 2019

19th August to 26th August - Submit Code and Final Evaluation
- I will submit the final code to the organization. - Submit the final evaluation.

Reports

 * Community Bonding Period
 * Report Week 1 (27 May 2019 to 2 June 2019)
 * Report Week 2 (3 June 2019 to 9 June 2019)
 * Report Week 3 (10 June 2019 to 16 June 2019)
 * Report Week 4 (17 June 2019 to 23 June 2019)
 * Report Week 5 (24 June 2019 to 30 June 2019)
 * Report Week 6 (1 July 2019 to 7 July 2019)
 * Report Week 7 (8 July 2019 to 14 July 2019)
 * Report Week 8 (15 July 2019 to 21 July 2019)
 * Report Week 9 (22 July 2019 to 28 July 2019)
 * Report Week 10 (29 July 2019 to 4 August 2019)
 * Report Week 11 (5 August 2019 to 11 August 2019)
 * Report Week 12 (12 August 2019 to 18 August 2019)
 * GSoC 2019 - Final Report
 * Link to all commits

Student's Biography
Country: India

Education
3rd year Computer Engineering student

College: International Institute of Information Technology, Pune

Programming

 * Computing experience: I use Ubuntu and Manjaro (open Source Linux distribution) for programming purpose on daily bases. I regularly write programs in Python 3, C++ and Java
 * I have done my last project (i.e. in the 6th semester) in Python 3 where any guest at home is authenticated using face recognition. This is present on my GitHub profile [2].
 * I have also written a sorting algorithm for integers in C++ which is about 2 times faster than std::sort of STL(Standard Template Library). This too is present on my GitHub profile [3].
 * I have developed 3 Android applications written using Android Studio in Java which are live on the Google Play Store and all apps have an average rating of 4+ out of 5. One application [4] has got 1,000,000+ downloads and an average rating of 4.7 out of 5. Link to all my applications is [5].