GOOGLE SUMMER OF CODE - 2017
Organisation Name - SCILAB
Project Name
SCILAB INTERNALS:
1) Implementing Anonymous Usage Tracking
2) Improve help PDF Generation
3) Implementing Memory Safety
Student Name
DIGANTA DUTTA
Mentors Name
1) Clement David
2) Dhruv Khattar
Proposal Link
Project Link
https://summerofcode.withgoogle.com/projects/#5647566109671424
PROJECT : ANONYMOUS USAGE TRACKING
1) Description
2) Algorithm
3) Progress
Description
Link : https://scilab.gitlab.io/legacy_wiki/Contributor%20-%20Google%20Analytics%20probing .
Common web browser (firefox or chrome) track anonymously user activity to have a better knowledge of their users. This allow the developers to focus on the most used features and avoid wasting too much times on not used ones. This will also be beneficial to the end user because he/she will be able to track his/her work. The main idea is to give the end user and the SCILAB developer a statistical overview of the functions, macros and commands mostly used individually and globally.
== Algorithm ==
The previous algorithm was being formed on the idea that the Usage Tracking Module will be developed for the Scilab Console Window. Therefore , the idea was to use the JVM capabilities to connect to Google Analytics and push some probing counters to track usage of :
a) each component : scinotes, xcos, help, uicontrol, etc...
b) each modules : string, io, etc... (without performance penalty)
c) on each functions call (without performance penalty).
But, now it's changed to track statistics within SciNotes because that's where all the major work is done. Accordingly, SciNotes currently parse the whole file and identify functions through known commands, macros, variables tables. Accordingly,
a) setup preferences to add a "do not track" options within Scilab.
b) implement parser counters for commands and macros (using a HashMap<String, int>, rather than a HashSet<String>).
c) push the counters using Google Analytics API "Measurement Protocol" (or another provider).
Language/s being used : JAVA, JFlex
Progress
The first part of GSoC 2017 is almost over with the 1st evaluations to be out by 30th of June, 2017. I am almost done with the Anonymous Usage Tracking part. I have implemented parsers using HashMap<String, Integer> in a JFlex file and compiled it to form the JAVA file. Then I have edited the JAVA file and implemented the JAVA 8 Streams API to get the counters and statistics to track commands and macros usage. I have also inserted the Time package and function in JAVA so as to keep track of the time and date, a certain set of commands and macros have been implemented in a particular SciNotes file.
In the second part of GSoC 2017, I have implemented the Google Analytics API "Measurement Protocol" and pushed the counters using the Hit Builder. An HTML snippet has been committed which needs to be embedded in this page to receive the hits. And now, I have started off with the Improvement of Help PDF Generation module using the Apache FOP for the rendering of PDF from XML files.
Commits Link
https://codereview.scilab.org/#/q/Diganta
Github Link
https://github.com/DigantaD/Scilab-UsageTracking
PROJECT: IMPROVEMENT OF HELP PDF GENERATION
1) INTRODUCTION
2) ALGORITHM
3) PROGRESS
INTRODUCTION
* To be continued
== Commits Link ==
https://codereview.scilab.org/#/q/Diganta