= GSoC 2020: GRASS GIS startup mechanism = || Title: || '''Creation of a new GRASS GIS startup mechanism''' || ||Student Name: || Linda Kladivova || ||Organization: || [http://www.osgeo.org OSGeo - Open Source Geospatial Foundation] || || Mentor Name: || Anna Petrasova, Martin Landa, Vaclav Petras, Moritz Lennert || || GSoC proposal: ||[https://summerofcode.withgoogle.com/dashboard/project/6062634991878144/details/ View proposal] || || !GitHub Repository: || [https://github.com/lindakladivova view repository] || == Abstract == This project will focus on the creation of a more user-friendly GRASS GIS startup. The general idea is to make the initial user’s contact easier and with a less steep learning curve. While programming new GRASS startup GUI several tasks will be solved – changes in Location wizard structure, Data Catalog as well as general GUI. == Goal == GRASS GIS comes with the concept of Location and Mapset which is not going to be replaced because of its advantages such as organized structure. The goal of this project is to make this concept more user-friendly (especially in terms of the welcome screen). The motion is that the Data Catalog will be expanded so that in addition to raster and vector data, it can manage even Locations and Mapsets. Then this widget could be used in the welcome screen. The work schedule below has been compiled on the basis of the Roadmap available here: https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/New_Startup#PragueRoadmap. To sum up the schedule: From June 1st to June 28th (4 weeks), I plan to work on the Location wizard (the topic for the first evaluation), from June 29th to July 19th (3 weeks) I plan to program the new form of the Data Catalog (the topic for the second evaluation). From July 20th to August 23rd I will work on creating the new welcome page itself by integrating the improved components. == Timeline == {{{#!th style="background: #ddd" rowspan=2 '''Time Period''' }}} {{{#!th style="background: #ddd" colspan=2 '''Milestones''' }}} |----------------------- {{{#!th style="background: #ddd" Tasks }}} {{{#!th style="background: #ddd" Status }}} |----------------------- {{{#!td May 4 - June 1 \\ ''Community Bonding'' }}} {{{#!td - Introduce myself in dev list, get in contact with my mentors and discuss the design of functions - Prepare the wiki page about the project - Set up the !GitHub repository of the project - Setup GRASS GIS developer environment - Familiarize with the code in wxPython and with the development process - Discuss the elements of the startup window and get acquainted with the whole design - Contribute small features related to Location Wizard (see week 1) (first PR already created, see https://github.com/OSGeo/grass/pull/493) }}} {{{#!td Ok \\ Ok \\ Ok \\ Ok \\ Ok \\ \\ Ok }}} |----------------------- {{{#!td June 1 - June 7 \\ ''Week 1'' }}} {{{#!td '''Location wizard - first page''' - Major code refactoring - Remove map picture (see https://github.com/OSGeo/grass/pull/657) - Database directory not editable but mentioned - Location name marked as required - Location title (renamed as description) marked as optional - "Set default region and resolution" removed and set automatically if info is available - "Create user mapset" removed (user can do it from the data catalog in the future, now with a button in the startup window) (see https://github.com/OSGeo/grass/pull/646) }}} {{{#!td Ok \\ Ok \\ Ok \\ Ok \\ Ok \\ Ok \\ Ok }}} |----------------------- {{{#!td June 8 - June 14 \\ ''Week 2'' }}} {{{#!td '''Location wizard - EPSG page:''' - Remove path to "/usr/share/proj/epsg" - Merge search and EPSG code text inputs - Add a link to epsg.io. Possibly put text from the text field into a query part of the URL. - Show the matching CSRs as user types EPSG or any text (like now), if only a number, assume it is EPSG (don't search through definition) - "to WGS" dialog as an additional }}} {{{#!td TBD }}} |----------------------- {{{#!td June 15 - June 21 \\ ''Week 3'' }}} {{{#!td '''Location wizard''' - Choose projection page (Projection from a list choice) - Rename to something like “Define custom”, esp. if a search is removed from the EPSG page. - Final page: - Try harder to show EPSG, e.g. in the case file was used - PROJ.4 definition - add mechanisms to show WKT for new versions Proj - Location download functionality - Show data catalog but from a metadata file - Action there is downloading the whole location }}} {{{#!td TBD }}} |----------------------- {{{#!td June 22 - June 28 \\ ''Week 4'' }}} {{{#!td '''Finishing the implementation of Location wizard ''' - Testing and documentation }}} {{{#!td TBD }}} |----------------------- {{{#!td June 29 - July 5 \\ ''Week 5'' }}} {{{#!td '''Data catalog:''' - Another toolbar on the side - Load/show data button on the side - A choice in context menu to load the data for part of the tree - Support multiple databases to data catalog }}} {{{#!td First evaluation - Submission deadline: 3 July TBD }}} |----------------------- {{{#!td July 6 - July 12 \\ ''Week 6'' }}} {{{#!td '''Data catalog:''' - Add button to add existing or new database - New location action from context menu on a database node (#3578) - New mapset action from context menu on a location node (#3579) }}} {{{#!td TBD }}} |----------------------- {{{#!td July 13 - July 19 \\ ''Week 7'' }}} {{{#!td '''Finishing the implementation of Data catalog''' - Testing and documentation }}} {{{#!td TBD }}} |----------------------- {{{#!td July 20 - July 26 \\ ''Week 8'' }}} {{{#!td '''General GUI:''' - CLI parameters for g.gui: - load (display) all data in location as layers - prompt user to import more data - To be used after new location created by the startup script }}} {{{#!td TBD }}} |----------------------- {{{#!td July 27 - August 2 \\ ''Week 9'' }}} {{{#!td '''General GUI:''' - Collect "recent info" and "used info" - Mapset and database recorded at the same time when GRASS GIS is started or switched to a mapset. - Workspace is recorded when opened or saved. - Check if the item is already in the list. - Consider making the Data tab in Layer Manager the first tab or the default tab }}} {{{#!td TBD }}} |----------------------- {{{#!td August 3 - August 9 \\ ''Week 10'' }}} {{{#!td '''General GUI:''' - Finishing up - Testing - Documentation - Integrating the components into the new welcome page }}} {{{#!td TBD }}} |----------------------- {{{#!td August 10 - August 16 \\ ''Week 11'' }}} {{{#!td Integrating the components into the new welcome page (continued) }}} {{{#!td TBD }}} |----------------------- {{{#!td August 17 - August 23 \\ ''Week 12'' }}} {{{#!td Finishing up, testing, documentation }}} {{{#!td TBD }}} |----------------------- {{{#!td August 24 - August 31 \\ ''Week 13'' }}} {{{#!td Finalizing the existing work Submitting the final work }}} {{{#!td TBD }}} |----------------------- == Bonding period report == '''Introduce myself in dev list, get in contact with my mentors and discuss the design of functions'''\\ After being accepted as a student for GSoC 2020, I introduced myself to grass dev lists on May 13. Also, I got in contact with my mentors - Martin Landa, Anna Petrasova, Vaclav Petras and Moritz Lennert. I discussed with them how to set up my GRASS dev environment. '''Prepare the wiki page about the project'''\\ I created my project wiki page (2) and added the link to the GSoC 2018 Accepted proposals page (3). The wiki page includes - General information about the project (title, mentors, links to the proposal and !GitHub repository, etc.), a brief description of the project, goal, and timeline of tasks and deliverables. I will keep my wiki page up to date and will add weekly reports following the instructions in the GSoC Recommendations for Student page (4). '''Set up the !GitHub repository of the project'''\\ I have chosen !GitHub (5) as a public repository for the development of this project. I added the link to the GSoC 2020 Accepted proposals page (3), to my wiki page (2) and I shared it with my mentors. My repository is licensed under the GNU General Public License v3.0, according to the license of GRASS GIS. '''Set up a developer environment'''\\ I checked and updated my developer environment so as to be ready to start coding after the bonding period. (1) https://lists.osgeo.org/pipermail/grass-dev/2018-April/088262.html \\ (2) https://trac.osgeo.org/grass/wiki/GSoC/2020/StartupWindow \\ (3) https://wiki.osgeo.org/wiki/Google_Summer_of_Code_2020_Accepted \\ (4) https://wiki.osgeo.org/wiki/Google_Summer_of_Code_Recommendations_for_Students \\ (5) https://github.com/lindakladivova/grass \\ == Weekly reports == == Week 1 == '''1) What did I complete this week?'''\\ '''2) What am I going to achieve for next week?'''\\ '''3) Is there any blocking issue?'''\\ == Week 2 == '''1) What did I complete this week?'''\\ '''2) What am I going to achieve for next week?'''\\ '''3) Is there any blocking issue?'''\\