Summary of my GSOC experience
The summary of my experience with GSOC and a brief recap of my work
Introduction
The conclusion of this long and magnificent experience of GSOC, which began around five months ago, has arrived, and it is now time to recap the points of this long journey. I knew from the first day that this was going to be a fantastic experience, but I never expected to learn so much this summer!
It all started some months ago when my thesis supervisor advised that I engage in this initiative that Google has been doing for several years. My thesis supervisor put me in touch with a PhD student at the University of Trento who had previously participated in GSOC and is now a mentor. Fascinated by his experience, I set out to work to ensure that my proposal was chosen. After several weeks of effort, I submitted my project idea, and on May 20, I received an email informing me that I had been accepted for GSOC 2022; I was overjoyed!
GSOC work
The first three weeks of work, known as the Community Bonding period, have been a chance for me to study and become familiar with the tools that I would be using for the next ten weeks. This period was really beneficial to me since I was able to immerse myself into the R community while also learning a lot of new topics thanks to my blog posts: writing them helped me keep track of everything I had been studying.
In accordance with the goal of my project I’ve been working on two distinct repositories:
- FabrizioSandri/RcppDeepState : the RcppDeepState package implementation, which runs fuzz testing with Valgrind and DeepState;
- FabrizioSandri/RcppDeepState-action : Implementation of the GitHub action that allows developers to execute RcppDeepState on GitHub-hosted Rcpp-based packages. The action is also available on the GitHub Marketplace.
All of my progress on the two aforementioned repositories is documented in the pull requests and issues listed underneath. Furthermore, the week summaries that I posted at the end of each week give a more detailed explanation of the changes that I made week by week; you can find them here.
FabrizioSandri/RcppDeepState-action
FabrizioSandri/RcppDeepState
Future work
There’s still a lot to accomplish with RcppDeepstate, and I’m specifically talking to the fact that a future step would be the package’s release on CRAN. As the goal of my project, I spent a lot of time during the GSOC improving RcppDeepState for a future CRAN publication, but with all of the problems related to Deepstate portability on Windows-based systems, I believe that this is a future step, as demonstrated by the results obtained after uploading the package on Win-builder: most of the errors were caused by the use of a Windows system.
Another step would be to expand RcppDeepState’s datatype coverage by introducing additional datatypes, allowing RcppDeepState to run on a broader range of packages. To do this, I created a wiki article that describes how to Add a new datatype to RcppDeepState. The scope of this page has been successfully shown thanks to Dr.Martin R. Smith’s first external contribution to the RcppDeepState package. More information is available in the dedicated blog post.
Another future improvement would be to provide a new option to RcppDeepState-action that allows users to choose a different fuzzer than the default one provided by Deepstate; Libfuzzer, Manticore and Angr are three alternative fuzzers.
My GSOC experience
My gsoc experience was incredible, something I never imagined, and it was one of the best in my career. This experience taught me a lot about working with others and contributing to open source. At the end of this experience, I can certainly say that I will spend more time to open source than the time I’ve spent so far. As a maintainer, I will continue to contribute to my project.
I am grateful to all of my mentors who took the time to guide me through this journey and share their unique experience and knowledge with me. Special thanks go to:
- my evaluating mentor Dr.Toby Dylan Hocking, who has always been available to help me during the Google Summer of Code. I was able to stay on track and keep up the good work thanks to his helpful guidance.
- my mentor Randy Lai, who helped me with his great experience with GitHub Actions to improve the RcppDeepState action;
- my mentor Anirban Chetia, who gave me good suggestions on the challenges I had in the early stages of utilizing RcppDeepState;
- Dr.Martin R. Smith, for his great availability to beta test my GitHub action on his packages and for integrating a new datatype to RcppDeepState;
- all of the R community people I’ve interacted with on GitHub, the RcppCore team;
- Google/GSOC for organizing this fantastic event year after year.