GNOME Games: Final submission

This post serves as a compilation of all the work I did during these past 3 months of Google Summer of Code 2020.

Work done

!369 (merged): Refactoring old code by making a new Core interface and RetroCore class. These are used to generalizes all interactions that are related to firmware. Where RetroCore is an implementation class of Core interface. FirmwareManager class is for organizing checksums verification through Core/RetroCore when a game requiring a firmware is run by the runner.

!405 (merged): Made a Firmware interface and a RetroFirmware class that moves all the functions and information needed by firmware from FirmareManager to itself. By doing this, the Core interface is used to make firmware objects, FirmwareManager manages firmware objects, and the firmware object runs checksum verification and contains all information related to that firmware.

!408: Some minor changes to how checksum verification takes place to be more efficient. Added methods to FirmwareManager that handle addition and removal of firmware along with methods that listed all supported firmware and methods to check whether the file being added is a supported firmware or not.

!411 (merged): Since both SHA-512 and MD5 checksums will be mandatory by a commit in !408, present core descriptor files needed to be updated to have both SHA-512 and MD5 checksums.

!415: Merge request with back-end code from !408, generalization of overlay in preferences page and the drag n drop widget. The need for an overlay generalization is to make it easier for each preferences page to add an overlay. This will be useful later when Firmware page is implemented, to show error messages and undo bar when adding or removing firmware. The reason why this merge request has back-end code is for proper functionality of the merge request on it’s own as the drag n drop widget uses the back-end code introduced in !408.

!89: Merge request with the parser that reads firmware name from the core descriptor.

TODO

As the code will not be merged until 3.38 release, I just have to keep refining the back-end code and making the drag n drop experience smoother.

As for firmware page, I have untracked Firmware Page UI, after the translation issue is resolved, and back-end code and the parser lands, a new merge request with the untracked files will be opened, after which #145 will be resolved and closed.

Closing thoughts

Google Summer of code was experience of a lifetime for me, being a student and getting a chance to work on open source and writing production level code. While working on my GSoC internship I learnt a lot. Working remotely on open source project taught me things like, time management, communication, git, open source workflow etc.

These past 3 months have been quite hectic with working on my GSoC project while taking online classes, doing assignments and submitting reports. GSoC was a valuable experience for me as better time management means more productivity out of the same 24 hours without missing out on things.

With summer ending and and summer vacations beginning, I would like to express gratitude to my mentor Alexander Mikhaylenko (a.k.a @alexm a.k.a @exalm) for helping and guiding me this summer. Thank you.

This GSoC was a big learning experience as it taught me data flow and code design, UI/UX, widget writing, CSS and finally ways to use git to ease workflow.

I’ll try to keep posting, as I’ll still be working on GNOME Games and will probably look for more projects to work on later :^)

One thought on “GNOME Games: Final submission

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create your website at WordPress.com
Get started
%d bloggers like this: