2 minute read

Hi everyone, this is Vishav and I am here with the 2nd iteration of my blog, “Journey to GSoC.” If you haven’t read my previous blog, you can read it here and keep up.

Community Bonding Period

The result for Google Summer of Code was announced on 5th June 2020. I was happy and excited about being selected as a student developer for signac. The signac team welcomed me into the organization and guided me. In Google Summer of Code, before the actual coding period starts, we have a community bonding period for about a month. In this period, we are supposed to connect with the community and lay the ground plan for the project with the help of the mentors. My aim in this period was to refine the general idea, try to formalize what exactly is needed to modify the existing features or add a new feature and discuss the proposed methodology with the mentors to make sure that no bad decisions are made early in the process, acquaint myself with the expectations and essential requirements through detailed interaction with the mentor and community. During this period I studied the implementation of the classes which are going to be refactored in my project. Also, I got myself acquainted with the modules in our library and the testing procedure. We are having biweekly meetings in signac for mentors and GSoC students. These meetings proved to be very helpful to clear doubts regarding the project and helped me create the work plan for the next three months.

Coding Period Begins

The first phase of the coding period started on 1st June, 2020. The main goal of first phase was implementation of JSON backend by proposed structure. Before the JSON backend was implemented using the classes: SyncedAttrDict, SyncedList and JSONDict. But these classes provide limited functionality, like singular backend and limited support for nesting structures. So in order to provide different backend and support different data structures, I refactored these classes. It’s already three weeks into the phase I of coding period and I have added the following classes:

  • SyncedCollection: This class is intended for use as an abstract base class. In addition, it declares as abstract methods the methods that must be implemented by any subclass to match the API.
  • SyncedAttrDict: Implements the dict data structure of API.
  • SyncedList: Implements the the list data structure of API.
  • JSONCollection: Implements synchronization functions for JSON backend.
  • JSONDict: Implements dict data structure with JSON backend.
  • JSONList: Implements list data structure with JSON backend.

In the first two weeks I worked on the data structure classes (SyncedDict, SyncedList). Then, I proceeded to work on JSON backend (JSONCollection, JSONDict, JSONList). I have created a pull request for the above classes which is currently under review. Currently, I am working on the buffering classes and the work will be ready to review in next week.