|
| 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