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.
Timeline
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
- 24 June 2019 to 28 June 2019
- Submit the first evaluation.
- 28 June 2019 to 22 July 2019
- 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.
Week 9 to Week 12 (22nd July 2019 to 19th August 2019) - Coding phase 3
- 22 July 2019 to 26 July 2019
- Submit the second evaluation
- 26 July 2019 to 19 August 2019
- Buffer period for any overrun and perform code optimization if possible (only 10 days available due to exams)
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].
References
[1.a] https://github.com/mapmint/mapmint
[1.b] https://github.com/fenilgmehta/mapmint
[1.c] https://github.com/fenilgmehta/mapmint/wiki/GSoC-2019---porting-python-2.7.x-to-3.x
[2] https://github.com/fenilgmehta/Face-Recognition-and-Security-System
[3] https://github.com/fenilgmehta/Fastest-Integer-Sort
[4] https://play.google.com/store/apps/details?id=com.rootify.emptyfoldercleaner&hl=en_IN
[5] https://play.google.com/store/apps/developer?id=Fenil+Mehta&hl=en_IN