Week 0 - Community bonding period concludes + final preparations for official start of GSoC.
Ted Lawson
May 26th, 2023
Overview:
This week was the final week of the community bonding period, and I used this time connect with fellow GSoC Contributors, gain a deeper familiarity with the Vorta and Borg codebases, as well as work on Vorta issues that relate to my future GSoC projects.
Community bonding:
This week was the final week of the 'community bonding' portion of GSoC. On Monday of this week I reached out to my mentor with status updates and my areas of focus for the week ahead. Throughout the week I talked with members of the community regarding my current PR's in progress for Vorta (more on that later) and obstacles I was encountering, and have stayed active in GSoC group chat communications with other program contributors.
Environment Setup:
With official coding and project work beginning next week, one area of focus for me at the beginning of this week was ensuring my development environments were ready to go. As I am working on projects for both the Borg CLI and the Vorta GUI, I forked each of these repos and got the respective environments set up locally. I hit some snags along the way, which I will discuss in the "obstacles encountered" portion of this blog.
Codebase familiarity:
An area of focus for me this week was to dive into the codebase and get more familiar with the structure of the code and how different components interacted with each other. With 2 of my 4 GSoC projects involving test coverage, it is important for me to understand what the code is doing so that I will be better equipped to help test it.
Coding:
This week, I spent the majority of my time working on my PR: <bdi>Setting for new number format (work in progress). This PR aims to create a setting for users to be able to choose the way they would like archive sizes displayed in the archive tab. By default, archive sizes are displayed using dynamic units of measurement (MB, GB, etc) that best fit the archive size. However, some users prefer to have all archive sizes displayed in the same unit of measurement, so this setting will offer them the choice of that functionality. While implementing the setting, I learned about pyqt signals and how to connect a change in setting to an update of the GUI. Additionally, while writing tests for the setting I gained a deeper understanding of how to mock function calls and the utility behind these mocks. All experience I can gain with testing will translate directly into my GSoC projects - half of which involve testing as the main area of focus. </bdi>
Obstacles Encountered:
As mentioned above, I ran into some issues while setting up my forked version of Borg locally on my computer. Although I was cloning the latest Borg codebase, the version info was referencing an old version of Borg that caused it not to work on my computer. When I instead cloned the official Borg repo, I did not have this issue. This was confusing, since I believed cloning the codebase should lead to identical setups. After a couple hours of troubleshooting on my own, I reached out to the community for help by starting a Github Discussion on the issue I was facing. My mentor responded, and alerted me that I probably had outdated GitHub tags, and sure enough this was the issue. When I updated the tags, everything worked and my environment was ready to go.
Another obstacle I encountered this week was while implementing a setting that needed to trigger a GUI update. Specifically, when the setting I create was toggled, it needed to refresh the archive tab in the GUI to display new archive size units of measurement. After asking for help on the issues page, a member of the community suggested I try connecting a pyqt signal to a change in setting that would in turn update the GUI. This was my first time using pyqt signals and I was impressed with how powerful and easy to use they were.
The Week Ahead:
Going into next week, I am prepared and excited for the official start to GSoC and the projects that lie ahead. The first project up to bat is converting the Borg testing suite from unittest to pytest. My mentor and I discussed this project in depth during our first meeting, and I will start will the so-called "low-hanging fruit". These are the tests that can easily and obviously be improved with the use of pytest fixtures and parameterization. My mentor has suggested working on small parts of code at a time (just a test or two), and running the changes by him for the first couple weeks before submitting PRs to ensure I am on the correct track. My goal next week is to go through each file in the testing suite, identify which areas could be improved, and begin work on the most obvious areas for improvement as I gain the experience and confidence to move on to the rest of the testing suite.
Conclusion:
This has been a great week of learning and preparing for the 1st project to begin - I am very excited for the official start of GSoC!! Here in Seattle the weather has turned sunny and beautiful as we transition into the summertime. I hope everyone reading this is enjoying as lovely a day as I. Stay tuned each Friday for an update on progress, and thank you for reading!