Table of Contents
- Community Bonding Period
- Coding Period
- Week 1
- Week 2
- Week 3
- Week 4
- Week 5
- Week 6
- Week 7
- Week 8
- Week 9
- Week 10
In this section, a weekly report can be found to keep track of the tool's progress. As part of GSoC 2019, the project followed a strict timeline of a 20 day long bonding period and a 12 weeks long coding period. The bonding period spawned from 6/5 to 26/5, while the coding period lasted from 27/5 to 26/8.
Community Bonding Period
At the beginning of this period, we had an inaugural meeting with the mentors, in which we clarified the goals of the project and we discussed about the tools that I would use. Further frequent online discussions followed throughout the bonding period.
Moreover, during the bonding period, I read the documentation of the packages, the libraries and the frameworks I would use and I created a basic, testing app with a readability indices extraction feature.
During the first week (27/5-2/6), I had a meeting with my mentors where we organized my working order, changing the project's timeline a bit. I started working on the app, adapting and organizing the code I've written so far. Also, I further developed the extraction and the format of readability indices and I implemented a way for the user to add custom scripts to be applied to the selected files.
During the second week (3/6-9/6), I had a meeting with one of my mentors to clarify some things about the readability indices. Considering the app, I implemented a way to store user data and settings (window position, window size and system paths of important executables). Moreover, I've added a side navigation bar and I did an overall component reorganization to have further scalability and flexibility. Finally, I included lexical diversity indices and I added a results tab that displays the scripts' output.
During the third week (10/6-16/6), I fixed some issues with the results tab (support for multiple files, async execution) and I worked on data storage and management. More specifically, I set up a MongoDB database and I created a database schema (corpus.js), in order to store and access the scripts' results, integrating it fully to the application. Also, I've done some aesthetic changes, adding style to the application, using CSS.
During the fourth week (17/6-23/6), I created a script to calculate additional indices, like entropy and normalized entropy, along with the text’s vocabulary. Then, I integrated the new indices to the application and the database, by modifying the corpus schema and adding one additional index tab (miscTab). Also, since the tokens and the vocabulary of a text are so crucial to the rest of the analysis, I made their calculation compulsory, by executing the relative script implicitly.
During the fifth week (24/6-30/6), I decided to integrate a UI framework. More specifically, I've done the necessary actions and adaptations to include the Material-UI framework to the tool, while keeping the same functionality. Additionally, I added documentation and comments and made some structural changes in order for the app to be ready for the first evaluation.
From this point onward, my weekly work routine contained many bug fixes and issue solving that are not explicitly written down.
During the sixth week (1/7-7/7), I adapted the result page to display only the selected indices, as before it showed every index that was stored in the database. I also worked on the files tab, adding checkboxes for file selection and storing additional file data, like size and last modified date, in the database. That data could later be used for workload optimization.
During the seventh week (8/7-14/7), I added a delete button for every file in files tab, in order to permanently remove an entry from the database, I implemented sorting for both input and results tables, by sending to the database the wanted order of the provided results and I created a basic "console-like" component for message output.
During the eighth week (15/7-21/7), I implemented a way to export the calculated results in json and csv format, adapting the result data accordingly. Also, I worked on the console component, so that it scrolls to the newest added message, added some console messages in various app phases and integrated it to the app. Finally, I moved the addition of filepaths as scripts' arguments, from the selection of the script to its execution, in order to solve sync problems (the scripts were executed upon the files that were selected at the moment they were chosen and not the currently selected files).
During the ninth week (22/7-28/7), I worked on the results tab, preserving the results on tab change, adding a way to efficiently display the lists of tokens and of the vocabulary of each text, utilizing react-virtualized package. Also, I made a full rework of the custom script tab, both visual and functionality-wise, in order to better match the rest of the application and to be a proper custom script builder. Also, I stored script information to the database for future uses.
During the tenth week (29/7-4/8), I worked on the styling and visual customization of the app. I added developer tools toggle button to the window menu and I created a theme for the app. Also, I added text as an export option.
During the eleventh week (5/8-11/8), I finished styling, making the app fully responsive to window width and height changes. I changed the database operation for result addition, from simple individuals operations to bulk ones, in order to achieve better performance and to solve some sync issues. Also, I altered the result fetching in order for the database to return null values for any missing fields, instead of not returning them at all.
During the twelfth week (12/8-18/8), I resolved fixed some sync issues that occurred during the insertion and immediate fetch of results. Also, I handled some errors regarding the processing scripts and added an informative popup at the results screen. Lastly, I cleaned the code a bit and worked on the tool’s wiki page.
During the thirteenth week (19/8-25/8), I finished the wiki page and made the necessary changes, in order for the app to be deployment-ready.