-
Notifications
You must be signed in to change notification settings - Fork 228
docs: add GSoC'26 introductory blog and author profile #849
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
vyagh
wants to merge
1
commit into
sugarlabs:main
Choose a base branch
from
vyagh:add-gsoc-week00-blog-vyagh
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| --- | ||
| name: "Shubham Sharma" | ||
| slug: "shubham-sharma" | ||
| title: "GSoC'26 Contributor" | ||
| organization: "SugarLabs" | ||
| description: "GSoC'26 Contributor at SugarLabs" | ||
| avatar: "https://avatars.githubusercontent.com/u/115340955?v=4" | ||
| --- | ||
|
|
||
| <!--markdownlint-disable--> | ||
|
|
||
| # About Shubham Sharma | ||
|
|
||
| I'm Shubham, a CS graduate and open-source contributor. I've been contributing to Sugar Labs since December 2025, primarily to Music Blocks, sugar-toolkit-gtk3, and sugar-toolkit-gtk4. This summer I'm working on AI Reflection in the Sugar Journal for GSoC 2026. | ||
|
|
||
| ## Connect with Me | ||
|
|
||
| - **GitHub**: [@vyagh](https://github.com/vyagh) | ||
| - **Email**: [vyagh.vy@gmail.com](mailto:vyagh.vy@gmail.com) | ||
| - **Matrix**: [@vyagh:matrix.org](https://matrix.to/#/@vyagh:matrix.org) | ||
| - **LinkedIn**: [Shubham Sharma](https://www.linkedin.com/in/vyagh) | ||
| - **Twitter**: [@vyagh_vy](https://twitter.com/vyagh_vy) | ||
| - **Discord**: [vyagh](https://discord.com/users/vyagh) |
149 changes: 149 additions & 0 deletions
149
src/constants/MarkdownFiles/posts/2026-05-23-gsoc-26-vyagh-week00.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,149 @@ | ||
| --- | ||
| title: "GSoC '26 Introductory Blog by Shubham Sharma" | ||
| excerpt: "Building AI-powered reflection into the Sugar Journal" | ||
| category: "DEVELOPER NEWS" | ||
| date: "2026-05-23" | ||
| slug: "2026-05-23-gsoc-26-vyagh-week00" | ||
| author: "@/constants/MarkdownFiles/authors/shubham-sharma.md" | ||
| description: "GSoC'26 Contributor at SugarLabs (AI Reflection in the Sugar Journal)" | ||
| tags: "gsoc26,sugarlabs,week00,vyagh,ai-reflection,journal" | ||
| image: "assets/Images/GSOCxJournal.webp" | ||
| --- | ||
|
|
||
| <!-- markdownlint-disable --> | ||
|
|
||
| **Project:** AI Reflection in the Sugar Journal | ||
| **Mentors:** [Walter Bender](https://github.com/walterbender), [Ibiam Chihurumnaya](https://github.com/chimosky) | ||
| **Assisting Mentors:** [Diwangshu Kakoty](https://github.com/diwangshu-kakoty), [Mebin J Thattil](https://github.com/mebinthattil), [Harshit Verma](https://github.com/therealharshit) | ||
|
|
||
| --- | ||
|
|
||
| ## `whoami` | ||
|
|
||
| Hey, I'm Shubham ([@vyagh](https://github.com/vyagh)), a CS graduate and open-source contributor from India. I'll be working on AI Reflection in the Sugar Journal this summer for GSoC 2026. | ||
|
|
||
| I got my first computer when I was 10, a Dell Inspiron N5050 (I still have it). I have this clear memory of mentally keeping a list of things I wanted to search on Google throughout the school day, because the laptop was obviously at home. Anyone who knows me well enough knows that I ask a _lot_ of questions, about everything, and that habit hasn't really changed. | ||
|
|
||
| That curiosity is basically why I ended up in CS, and why I keep going toward AI projects. There's always something to figure out. So when I was going through the GSoC ideas list and saw an AI project under Sugar Labs, it got my attention pretty quickly. | ||
|
|
||
| ## How I got here | ||
|
|
||
| I've been contributing since December 2025, mostly to [musicblocks](https://github.com/sugarlabs/musicblocks), [sugar-toolkit-gtk3](https://github.com/sugarlabs/sugar-toolkit-gtk3), and [sugar-toolkit-gtk4](https://github.com/niccokunzmann/sugar-toolkit-gtk4). | ||
|
|
||
| The weekly meetings and conversations with Jonas on Matrix about constructionism changed how I think about this project. Something he said stuck with me, he was describing how he sometimes comes across as wise, but said it's really just _"the input triggering a reflection."_ | ||
|
|
||
| That's what the reflection buddy should do: give the kid a good question and get out of the way. | ||
|
|
||
| --- | ||
|
|
||
| ## The Project | ||
|
|
||
| Sugar has three design verbs: **Share**, **Discover**, and **Reflect**. The first two have proper software behind them. But reflecting? It's basically an empty text box in the Journal that most kids never fill. | ||
|
|
||
| An 8-year-old doesn't spontaneously write "I learned that loops make spirals more efficient." They need someone to ask them about it. Learning involves stumbling and getting stuck, and reflection is how kids process that, but it doesn't happen on its own without some kind of prompt. | ||
|
|
||
| This project adds a **reflection panel** inside the Journal detail view. When a kid opens a Journal entry, a reflection buddy asks things like _"What was the trickiest part?"_ or _"What would you try differently?"_. The AI doesn't explain things or give answers, it asks questions. The kid leads the conversation. | ||
|
|
||
| I built a rough prototype before submitting my proposal to get a feel for how this interaction might work: | ||
|
|
||
| - **Demo video:** [youtu.be/jCWb7yUrnZA](https://youtu.be/jCWb7yUrnZA) | ||
| - **Prototype:** [journal-reflection-demo.vercel.app](https://journal-reflection-demo.vercel.app) | ||
|
|
||
|  | ||
|
|
||
| --- | ||
|
|
||
| ## Discussions During Community Bonding | ||
|
|
||
| I've been having calls with Walter during the bonding period, and the conversations went way beyond what's in the proposal. A lot of these are open design questions, and a big reason I'm writing about them here is that Devin actually uses Sugar in classrooms with real children, so we really need his take. | ||
|
|
||
| ### Solo or collaborative reflection? | ||
|
|
||
| Sugar is collaborative, kids work with each other and teachers. So should reflection be collaborative too? | ||
|
|
||
| We mapped out a few modes: | ||
|
|
||
| - **Child + AI**: one-on-one reflection (the core proposal) | ||
| - **Child + peer + AI**: peer conversations that naturally become reflective (my conversations with Jonas are kind of a proof of concept for this, just not with kids) | ||
| - **Multiple children + teacher + AI**: classroom-style reflection | ||
|
|
||
| Open question: should everyone share a single chat, or should each participant have their own? Probably needs real classroom testing. | ||
|
|
||
| ### Personas and the teaching skill | ||
|
|
||
| Starting with one generic reflection buddy. But the system should support activity-specific personas later, like imagine reflecting with Bobby Fischer after a chess activity (Walter liked this idea from Diwangshu's Music Blocks reflection work). | ||
|
|
||
| The interesting part was the idea of a **skills-file creator**: a way to define what a persona should know about a particular activity. A Turtle Art persona would understand "angle" and "repeat", a Write persona would focus on narrative and structure. | ||
|
|
||
| There's a layer that should wrap _every_ persona though: a teaching skill that makes sure the AI always asks questions, never lectures, regardless of which persona is active. | ||
|
|
||
| The "Sugar Activity on Demand" GSoC project also focuses on AI for activities, so there might be overlap. Something to coordinate on. | ||
|
|
||
| ### Guardrails | ||
|
|
||
| We definitely need guardrails to keep conversations safe and on topic. But if reflection gets too rigid, it just becomes a form, and you don't need AI for a form. | ||
|
|
||
| I know this from experience, I've tried structured approaches to learning many times and they never worked for me. The moment something feels like a checklist, I stop engaging. Jonas put it well: _"constructionism is about learning, not training."_ If guardrails turn reflection into something that feels like a test, it's training, not learning. It should feel closer to play than to homework. | ||
|
|
||
| ### Who writes the description? | ||
|
|
||
| The Journal has a description field that sits empty in almost every entry. Should the AI just generate it? That guarantees it's not empty, but the child didn't write it. It's like solving math on a calculator: you get the answer, but you didn't learn to think about the problem. | ||
|
|
||
| Asking kids to write from scratch doesn't work either, most just skip it. | ||
|
|
||
| The proposal's middle ground: after the conversation, show the child their own best answer and ask _"Want to save this as your description? You can edit it."_ Walter also raised the value of an AI-generated summary for younger kids. Another question for Devin. | ||
|
|
||
| ### Offline mode | ||
|
|
||
| Sugar activities were designed to work without an internet connection, and some deployments only have a local network. So reflection can't just stop when there's no connectivity. | ||
|
|
||
| The proposal includes **Reflection Sparks**: 50+ curated reflection prompts that work without any AI backend. Not adaptive like the AI, but they still follow the same reflection approach. When connectivity comes back, the AI picks up from there. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I recommend linking "Reflection Sparks" to some relevant page and removing the bold.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. maybe curated questions in a google doc?? |
||
|
|
||
| On a related note, I've been experimenting with reflection questions in GitHub PR templates so contributors think about their changes before submitting. Different audience, same idea. | ||
|
|
||
| ### Future directions | ||
|
|
||
| Some things we discussed that go beyond core scope: | ||
|
|
||
| - **Video descriptions**: Sugar devices have cameras. A kid could record themselves explaining what they made instead of typing | ||
| - **Multiple previews**: multiple screenshots or a recording/GIF per entry would give more context for reflection | ||
|
|
||
|  | ||
|
|
||
| - **Reflecting inside the activity**: Walter emphasized being able to **bounce back and forth between the Journal and the activity**, so reflection shouldn't feel like a separate destination | ||
|
|
||
|  | ||
|
|
||
| --- | ||
|
|
||
| ## Quick Technical Overview | ||
|
|
||
| - **Frontend**: Python/GTK3, reflection panel inside `expandedentry.py`, packed between CommentsView and Buddy List | ||
| - **Backend**: Two FastAPI endpoints on Sugar-AI (`/reflect/chat` and `/reflect/summary`), stateless, client sends full history each request | ||
| - **Storage**: `metadata['reflections']`, same pattern as `metadata['comments']`, via D-Bus. No schema changes needed | ||
| - **Offline**: Reflection Sparks prompt bank, zero hardware requirements | ||
|
|
||
| --- | ||
|
|
||
| ## What's Ahead | ||
|
|
||
| Coding starts May 25. Dev environment is ready: QEMU VM for source-level development, and that old Dell Inspiron for real hardware testing: | ||
|
|
||
| - 2GB RAM | ||
| - can go offline | ||
| - low enough specs to catch performance issues early | ||
|
|
||
| The plan is to get a basic end-to-end flow working as soon as possible: | ||
| open a Journal entry -> see a reflection question -> reply -> get a follow-up | ||
|
|
||
| I'll be sharing progress in weekly blog posts :) | ||
|
|
||
|  | ||
|
|
||
| --- | ||
|
|
||
| ## Acknowledgments | ||
|
|
||
| Thanks to Walter for the bonding period conversations that shaped the thinking in this post. | ||
| To [Jonas](https://wiki.debian.org/JonasSmedegaard) for months of discussions that helped me understand what reflection actually means in a constructionist context. | ||
| To Ibiam and Devin for the organizational support, Diwangshu for the Music Blocks reflection foundation, and to the Sugar Labs community for being welcoming since I showed up in December. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This header is rendering strangely. I think you need to remove the tick marks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That was Intentional to make it look like the terminal command :p
I'll revert