Skip to content

Commit 8e3b03d

Browse files
Week'3 GSoC'25 Update by Krish (#234)
* Add author profile for Krish , updates for week2 - updated metadata for both weeks - added week2s blog - image for the new architecture * GSoC'25 Week 3 Updated by Krish
1 parent ca657f9 commit 8e3b03d

File tree

1 file changed

+118
-0
lines changed

1 file changed

+118
-0
lines changed
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
---
2+
title: "GSoC '25 Week 3 Update by Krish Pandya"
3+
excerpt: "From initial GTK4 porting to building a solid foundation with separate C and Python libraries"
4+
category: "DEVELOPER NEWS"
5+
date: "2025-06-21"
6+
slug: "2025-06-21-gsoc-25-mostlyk-week03"
7+
author: "@/constants/MarkdownFiles/authors/krish-pandya.md"
8+
tags: "gsoc25,sugarlabs,week03,mostlyk"
9+
image: "assets/Images/GSOC.png"
10+
---
11+
12+
<!-- markdownlint-disable -->
13+
14+
# Week 3: Development on the C estabhlishment
15+
16+
**Project:** [GTK4 Exploration](https://summerofcode.withgoogle.com/programs/2025/projects/rsHsYZKy)
17+
**Mentors:** [Walter Bender](https://github.com/walterbender), [Ibiam Chihurumnaya Ibiam](https://github.com/chimosky), [Juan Pablo Ugarte](https://github.com/xjuan)
18+
**Reporting Period:** June 06, 2025 till June 14, 2025
19+
20+
---
21+
22+
23+
## Following the meet of big change
24+
25+
> On last to last Friday(06-06-2025), we had a pivotal video call with Juan Pablo Ugarte and Ibiam Chihurumnaya that completely reshaped the porting approach.
26+
What started as a discussion about my initial porting work evolved into something much more strategic and forward-thinking.
27+
28+
As discussed about these changes in the past week's blog, I have been continuing to update the C library. I have ported
29+
30+
### Commited:
31+
32+
- Sugar File Attributes ( in discussion of do we need to modernize or no)
33+
- Event Controllers for Sugar ( handles clicks, movement etc. )
34+
- Long Press Controllers
35+
36+
### Local:
37+
38+
- Sugar Touch Controllers
39+
- Building on top of them, zoom, swipe and rotate.
40+
41+
42+
## Demonstration of the Controllers:
43+
44+
<iframe width="560" height="315" src="https://www.youtube.com/embed/m0gwwo_0ZDE?si=M0ljKFFGuwAqAzrf" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
45+
46+
This video shows working example of Event Controller and Long Press controller.
47+
48+
---
49+
50+
## PR Deep Dive
51+
52+
### Review & Iteration
53+
54+
The review process was thorough and collaborative, with mentors providing feedback on:
55+
56+
- API and Versioning: Ensuring symbol and identifier prefixes followed conventions, and clarifying versioning strategy to align with Sugar’s release cycle.
57+
- Code Structure: Moving away from including XO Colors in the C library (to be handled in Python).
58+
- Licensing: Correctly attributing copyright and following LGPL-2.1. ( As discussed in last week's blog for the versioning ).
59+
- Formatting: Retaining original code formatting for readability, and avoiding unnecessary changes from auto-formatters.
60+
- Build System: Making examples optional in the build, and keeping the project modular.
61+
62+
### Modernization Decisions
63+
64+
A key discussion was around modernizing the file attributes utility using GLib APIs. My rationale was to unify the codebase under a modern standard, leveraging GLib for better error handling and maintainability. However, Ibiam and James highlighted the importance of compatibility with filesystems like FAT32, and the need to test on real hardware. I will be formatting my USB to test this soon. I will keep it as a TODO for now.
65+
66+
### Testing
67+
68+
Every ported module includes comprehensive tests. Just do the following to test:
69+
70+
```bash
71+
meson test -C builddir
72+
```
73+
74+
The tests cover attribute creation, setting/getting values, and simulating real-world activity workflows. I plan to continue this rigorous testing approach for all future modules as always , yours truly Krish.
75+
76+
### Lessons Learned
77+
78+
- Consistency matters - Unifying the codebase under GLib/GTK4 improves maintainability, but must be balanced with legacy compatibility.
79+
- Testing is critical - Automated and example-based tests are essential for safe modernization.
80+
- Documentation and commit messages - Clear explanations of why changes are made (not just what) are crucial for future maintainers.
81+
82+
_I am still learning on how to improve all of these , especially commit messages_
83+
84+
---
85+
86+
# Apart from Porting
87+
88+
Outside of the core Sugar porting work, I also spent some time tinkering (_I love music_) some side projects for MusicBlocks and SL:
89+
90+
- AWS & SoundScape: I continued working on [SoundScape](https://soundscape.streamlit.app/), the audio processing web app.
91+
This week, I wanted to update the platform to include an SheetMusic-To-MusicXML model in addition to existing Audio-to-Sheet-Music model and Audio-to-MIDI functionality.
92+
I sadly was using Oemer and my own system rqreuiement were not capable enough to run it .
93+
94+
- Machine Learning Experiments: I tried running [Oemer](https://github.com/BreezeWhite/oemer), an open-source Optical Music Recognition tool.So I’m planning to set up a dedicated AWS instance for further testing and integration. And if that works out I can deploy by dockerizing SoundScape.
95+
96+
Overall, I like tinkering with these kinds of projects and learn more about foundational models.
97+
98+
To someone who is interested in research and wants a tool to have beside reading papers you can check [Dread-Rising](https://dread-rising.streamlit.app/). It can also be used for someone who just wants to read a book , or an article, you can get highlighted version of the PDF, multiple understanding and can do in-depth.
99+
100+
These small problems that I tackle using my pre-existing knowledge on LLMs and Python help me in porting as well, even though it's a completely different side of project which is writing a C library right now, the skills and thinking translate a lot and I have fun!
101+
102+
## Resources & References
103+
104+
- Project Page – [GTK4 Exploration](https://summerofcode.withgoogle.com/programs/2025/projects/rsHsYZKy)
105+
- New C Library - [sugar-ext repository](https://github.com/sugarlabs/sugar-ext)
106+
- Active PR - [Establish C library base template with Meson for GTK4](https://github.com/sugarlabs/sugar-ext/pull/1)
107+
- Sugar Toolkit Repository(original) – [sugar-toolkit-gtk3](https://github.com/sugarlabs/sugar-toolkit-gtk3)
108+
- GTK4 Migration Guide – [docs.gtk.org/gtk4/migrating-3to4.html](https://docs.gtk.org/gtk4/migrating-3to4.html)
109+
110+
111+
---
112+
113+
## Acknowledgments
114+
115+
Huge thanks to Juan Pablo Ugarte first of all for being the official mentor and Ibiam Chihurumnaya for the guidance that that changed this project's direction. Their architectural vision has transformed porting into a comprehensive modernization effort. Thanks also to Walter Bender for mentorship.
116+
117+
118+

0 commit comments

Comments
 (0)