[{"content":"Introduction I\u0026rsquo;m Prajwal, and this is the story of my journey from a small village in Karnataka to being a Google Summer of Code contributor with the Apache Software Foundation. This is not a tale of overnight success, but one of struggle, perseverance, and the transformative power of open source. I hope my story can guide and inspire students who are on a similar path.\nHumble Beginnings and a Spark of Interest I come from a small village called Kuppinakeri in Karnataka. My parents are farmers, and I grew up in a humble environment. After scoring 86% in my 10th grade in 2020, I got into Morarji Desai PU college, a government institution that provided free education. This was my first time living in a hostel. My elder brother, Guru Prasanna, who works at Morgan Stanley, has been my guiding light. On his advice, I chose PCMCs (Physics, Chemistry, Mathematics, Computer Science) over PCMB. It was here that my love for computer science, particularly C++, began to blossom, thanks to my supportive lecturer, Sanjay sir.\nThe Unforgiving Path to Engineering After my PU exams in 2022, I came home with a newfound passion for C++. I spent my holidays watching C++ tutorials on YouTube. The results came, and I had scored only 68%, with a saving grace of 94 in Computer Science. My KCET rank was a disheartening 1,50,000, which worsened to 1,75,000 after re-results were announced. I applied to countless colleges but didn\u0026rsquo;t get a seat in the first round. I even tried for management seats to no avail. In the second round, I was allotted a mechanical engineering seat, which I rejected. I was on the verge of giving up on my engineering dream. Finally, in the third round, I was allotted a seat in the Information Science branch at Ghousia College of Engineering in Ramanagara. Initially, I didn\u0026rsquo;t like the college, but I had no other choice.\nA New Chapter and New Struggles On December 3, 2022, my brother Guru and I traveled to Ramanagara for my admission. The journey back home was emotional as my brother shared his own engineering struggles, which inspired me a lot! My engineering life officially began on December 12, 2022. Being an introvert, I found it hard to open up to people. After a desperate search and a visit to the social welfare office, I finally secured a place to stay in a Government hostel.\nThe Self-Taught Engineer The first year of engineering was a mixed bag. While I excelled in coding subjects due to my C++ background, I struggled with mathematics, though Jyothi mam\u0026rsquo;s teaching helped me improve. I soon realized that the quality of teaching in my college was not up to the mark. I started bunking classes and spending my time in the hostel, learning Java from YouTube tutorials and watching web series; \u0026lsquo;Aspirants\u0026rsquo; was my favorite one. I created GitHub and LinkedIn accounts but didn\u0026rsquo;t know how to use them. My brother gave me his old laptop, but I barely knew how to use it. I was just exploring when it got damaged after a few days. Food was another challenge, and there were days I went hungry. I ended my first year with a 6.5 SGPA. I failed in one subject but passed after re-evaluation.\nThe Dawn of Open Source In my third year, my interest in Git and GitHub grew, and I started spending my nights in the hostel\u0026rsquo;s computer room, which had only one working computer. I had to fight for access to it, but I was determined. My brother bought me a new laptop at the end of my third year, which was a huge motivation. I started maintaining my GitHub profile with green marks and building more projects.\nThe GSoC Revelation I was applying for many internships but getting no response. My resume was not impressive enough. On December 17, 2025, my friend Ajay sent me a message on WhatsApp: \u0026ldquo;Guru GSoC ge apply madana,\u0026rdquo; and that changed everything. I had no idea what GSoC was, but a quick YouTube search revealed that it was Google Summer of Code, a program that revolved around open-source contributions. I was already learning Git and GitHub, so this piqued my interest. I watched countless videos of previous GSoC students and decided to give it a shot.\nMy First Steps into the Open Source World I started by exploring organizations. I blindly picked Jenkins, found a documentation issue, and opened a pull request using ChatGPT. It was rightly rejected. I was disheartened but not defeated. I then came across the Apache Software Foundation (ASF), a prestigious organization, where I found a project called Apache Fluss.\nFluss is a streaming storage system designed for real-time analytics, which means it helps companies process and analyze massive amounts of data as it\u0026rsquo;s generated. It\u0026rsquo;s a complex, high-performance Java project, and at first, I was completely lost. I forked the repository, but things felt so \u0026ldquo;weird\u0026rdquo; that I ended up deleting the entire folder and re-downloading it several times.\nI had to sit back, stay calm, and actually read the documentation. I focused on the contributing guidelines and finally set up the repository properly. When I finally saw \u0026ldquo;BUILD SUCCESS\u0026rdquo; on my terminal, it felt like a massive victory.\nA Breakthrough and a Welcoming Community With the project finally set up, I found a small documentation issue, asked to be assigned, and opened my first pull request (#2261) on December 26, 2025. A maintainer merged it and sent a celebratory emoji. My confidence soared.\nI joined the Slack channel and the dev mailing list, introduced myself, and was met with a huge, warm response. The maintainers at Apache Fluss are incredibly supportive and cool. They don\u0026rsquo;t just expect you to know everything; they guide you. That welcome made me realize I wasn\u0026rsquo;t just a random person on the internet; I was part of a team.\nA major turning point happened when one of the project maintainers messaged me on Slack about a bigger task: the project\u0026rsquo;s configuration documentation was manual and hard to maintain. I didn\u0026rsquo;t even know how to solve it, but I said \u0026ldquo;yes\u0026rdquo; anyway. I took the initiative to implement the fluss-docgen module, which automated the entire process. This was a significant milestone. I was no longer just \u0026ldquo;fixing\u0026rdquo; typos; I was building infrastructure that improved the developer experience for the entire community.\nBecoming Part of the Community Beyond the code, the most rewarding part has been participating in the Apache \u0026ldquo;process.\u0026rdquo; I’ve had the chance to:\nJoin Monthly Calls: Participating in the monthly community calls where we discuss the roadmap, challenges, and future plans for Fluss. Read and Review: Deeply analyzing existing code and participating in PR reviews. Participate in Governance: Engaging in mailing list discussions and voting on Release Candidates (RCs) for the official releases. Contribute to Clients: Working on improvements for the Rust, C++, and Python clients. The Road to GSoC My journey to GSoC was a marathon, not a sprint. By the time I submitted my proposal, I had a total of 17 PRs (12 merged, 5 open). I was also credited in the Apache Fluss v0.9.0-incubating release and the Fluss clients v0.1.0 release, and contributed to the temporary repository for Flink UDFs. You can see a full list in my contribution tracker.\nThe Proposal Journey When the time came to write a GSoC proposal, I was lost. After some research, I had an idea for a project on RoaringBitmap integration, but a maintainer initially rejected it, explaining that Fluss is not a query engine. I was devastated and almost gave up. But with some self-motivation, I refined my proposal, and this time, he was impressed. He suggested I formalize it as a Fluss Improvement Proposal (FIP).\nI drafted the FIP and started a discussion on the mailing list. The community\u0026rsquo;s feedback was invaluable. When I realized Fluss was not listed as a GSoC project under ASF, I reached out to the maintainers. They created a JIRA ticket and agreed to be my mentor. I submitted my proposal on March 30, 2026, and continued to refine the FIP-37 proposal based on the maintainers\u0026rsquo; feedback.\nThe Moment of Truth The result day, April 30, 2026, was filled with anxiety. I was at home, and no one—not my family or friends—knew about my GSoC preparations. I hadn\u0026rsquo;t shared my journey because I didn\u0026rsquo;t want to disappoint them if I wasn\u0026rsquo;t selected. As the clock ticked past 11:30 PM, my friend Vidya was sending continuous messages asking what had happened. I was worried, refreshing the website constantly. At 11:35 PM, the status on the GSoC website changed from \u0026lsquo;Submitted\u0026rsquo; to \u0026lsquo;Accepted.\u0026rsquo; I was overwhelmed with joy. I woke up my parents and shared the news. They didn\u0026rsquo;t understand what GSoC was, but they were shocked and happy for me. After that, I called Vidya to share my happiness; she was literally screaming in her PG. She is the only one who watched this journey closely. On the same day the GSoC results came in, FIP-37 passed the community vote with unanimous support from the Apache Fluss PPMC. The next day, I announced the news to the Fluss community and on LinkedIn. My college was shocked and proud.\nConclusion: My Two Cents My journey was not easy, but it taught me the importance of consistency, hard work, and self-belief. Throughout my engineering journey, I never bought or joined an online course, nor did I pay for an internship. I learned everything from free online resources and let my work speak for itself.\nDiscipline is more important than motivation. Motivation comes from watching videos and fades away, but discipline is what keeps you going. As Virat Kohli says, \u0026ldquo;The only time you truly fail is when you decide to give up.\u0026rdquo;\nMy dream of a 5 LPA package now seems small in comparison to what I have achieved. To all the students out there, my advice is simple: be consistent, be curious, and never be afraid to fail. The open-source community is a welcoming place, and if you are willing to learn, there are people who will guide you. Believe in yourself and your dreams, and you will achieve them.\nWhat\u0026rsquo;s Next? This post is just the beginning. In my upcoming posts, I\u0026rsquo;ll dive deeper into:\nWhat is Open Source? What is Google Summer of Code? Roadmap to GSoC and simlar Programs Be Kind, Stay tuned!\n","permalink":"https://prajwal-banakar.me/posts/my-gsoc-journey/","summary":"\u003ch3 id=\"introduction\"\u003eIntroduction\u003c/h3\u003e\n\u003cp\u003eI\u0026rsquo;m Prajwal, and this is the story of my journey from a small village in Karnataka to being a Google Summer of Code contributor with the Apache Software Foundation. This is not a tale of overnight success, but one of struggle, perseverance, and the transformative power of open source. I hope my story can guide and inspire students who are on a similar path.\u003c/p\u003e\n\u003ch3 id=\"humble-beginnings-and-a-spark-of-interest\"\u003eHumble Beginnings and a Spark of Interest\u003c/h3\u003e\n\u003cp\u003eI come from a small village called Kuppinakeri in Karnataka. My parents are farmers, and I grew up in a humble environment. After scoring 86% in my 10th grade in 2020, I got into Morarji Desai PU college, a government institution that provided free education. This was my first time living in a hostel. My elder brother, \u003ca href=\"https://www.linkedin.com/in/gurubanakara\"\u003eGuru Prasanna\u003c/a\u003e, who works at Morgan Stanley, has been my guiding light. On his advice, I chose PCMCs (Physics, Chemistry, Mathematics, Computer Science) over PCMB. It was here that my love for computer science, particularly C++, began to blossom, thanks to my supportive lecturer, Sanjay sir.\u003c/p\u003e","title":"My Journey to Google Summer of Code 2026"},{"content":"The Employee Management System is a comprehensive, enterprise-grade application demonstrating a complete transition from a monolithic architecture to a distributed microservices system. As a cornerstone project in my portfolio, it showcases advanced backend development techniques and a deep understanding of modern cloud-native patterns.\nThis project serves as a practical guide to service decomposition, inter-service communication, centralized configuration, and robust security in a distributed environment.\nKey Architectural Features Service Decomposition: The system is broken down into independent, domain-driven microservices, each with its own database and logic. Employee Service: Manages core employee data and handles user authentication. Payroll Service: Processes detailed salary and payroll information. Leave Service: Manages employee leave requests and approvals. Service Discovery: Utilizes Netflix Eureka as a service registry, allowing services to dynamically find and communicate with each other without hardcoded endpoints. Centralized Entry Point: A Spring Cloud Gateway acts as the single entry point for all client requests. It is responsible for routing, load balancing, and cross-cutting concerns like security. Decentralized Security: Security is enforced at the gateway level using Spring Security and JSON Web Tokens (JWT). The gateway validates tokens before forwarding requests to downstream services, ensuring the entire system is secure. Core Technologies Backend: Java 21, Spring Boot 3 Microservices: Spring Cloud Gateway, Netflix Eureka Security: Spring Security 6, JWT (JSON Web Tokens) Database: Spring Data MongoDB (for data persistence) Build: Apache Maven For a detailed explanation of the architecture, API endpoints, and setup instructions, please visit the Employee-System GitHub Repository.\n","permalink":"https://prajwal-banakar.me/projects/employee-system/","summary":"\u003cp\u003eThe Employee Management System is a comprehensive, enterprise-grade application demonstrating a complete transition from a monolithic architecture to a distributed microservices system. As a cornerstone project in my portfolio, it showcases advanced backend development techniques and a deep understanding of modern cloud-native patterns.\u003c/p\u003e\n\u003cp\u003eThis project serves as a practical guide to service decomposition, inter-service communication, centralized configuration, and robust security in a distributed environment.\u003c/p\u003e\n\u003ch3 id=\"key-architectural-features\"\u003eKey Architectural Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eService Decomposition\u003c/strong\u003e: The system is broken down into independent, domain-driven microservices, each with its own database and logic.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEmployee Service\u003c/strong\u003e: Manages core employee data and handles user authentication.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePayroll Service\u003c/strong\u003e: Processes detailed salary and payroll information.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLeave Service\u003c/strong\u003e: Manages employee leave requests and approvals.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eService Discovery\u003c/strong\u003e: Utilizes \u003cstrong\u003eNetflix Eureka\u003c/strong\u003e as a service registry, allowing services to dynamically find and communicate with each other without hardcoded endpoints.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCentralized Entry Point\u003c/strong\u003e: A \u003cstrong\u003eSpring Cloud Gateway\u003c/strong\u003e acts as the single entry point for all client requests. It is responsible for routing, load balancing, and cross-cutting concerns like security.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDecentralized Security\u003c/strong\u003e: Security is enforced at the gateway level using \u003cstrong\u003eSpring Security\u003c/strong\u003e and \u003cstrong\u003eJSON Web Tokens (JWT)\u003c/strong\u003e. The gateway validates tokens before forwarding requests to downstream services, ensuring the entire system is secure.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"core-technologies\"\u003eCore Technologies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBackend\u003c/strong\u003e: Java 21, Spring Boot 3\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMicroservices\u003c/strong\u003e: Spring Cloud Gateway, Netflix Eureka\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e: Spring Security 6, JWT (JSON Web Tokens)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDatabase\u003c/strong\u003e: Spring Data MongoDB (for data persistence)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBuild\u003c/strong\u003e: Apache Maven\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFor a detailed explanation of the architecture, API endpoints, and setup instructions, please visit the \u003ca href=\"https://github.com/Prajwal-banakar/Employee-System\"\u003eEmployee-System GitHub Repository\u003c/a\u003e.\u003c/p\u003e","title":"Employee Management System - A Microservices Architecture"},{"content":"BookHaven is a comprehensive, full-stack e-commerce application designed for buying and selling books online. It features a robust Spring Boot backend and a dynamic, interactive React frontend, providing a seamless shopping experience for customers and powerful management tools for administrators.\nKey Features For Customers: Enhanced Home Page, Book Recommendations, Advanced Search, Wishlist, Shopping Cart, Secure Checkout, Order Tracking, Real-time Notifications, and Live Chat with administrators. For Administrators: Comprehensive Admin Dashboard, Order Fulfillment, Customer Insights, Admin Notifications, Live Chat Interface, Inventory Management, and Role-Based Access. Tech Stack Highlights Frontend: React 18, Bootstrap 5, Framer Motion, Axios, React Router, React Stomp Hooks \u0026amp; SockJS. Backend: Java 21, Spring Boot 3.5, Spring Security, Spring WebSocket, Spring Data MongoDB, Maven. For detailed information on features, installation, usage, and project structure, please visit the BookHaven GitHub Repository.\n","permalink":"https://prajwal-banakar.me/projects/bookhaven/","summary":"\u003cp\u003eBookHaven is a comprehensive, full-stack e-commerce application designed for buying and selling books online. It features a robust Spring Boot backend and a dynamic, interactive React frontend, providing a seamless shopping experience for customers and powerful management tools for administrators.\u003c/p\u003e\n\u003ch3 id=\"key-features\"\u003eKey Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFor Customers\u003c/strong\u003e: Enhanced Home Page, Book Recommendations, Advanced Search, Wishlist, Shopping Cart, Secure Checkout, Order Tracking, Real-time Notifications, and Live Chat with administrators.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFor Administrators\u003c/strong\u003e: Comprehensive Admin Dashboard, Order Fulfillment, Customer Insights, Admin Notifications, Live Chat Interface, Inventory Management, and Role-Based Access.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"tech-stack-highlights\"\u003eTech Stack Highlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFrontend\u003c/strong\u003e: React 18, Bootstrap 5, Framer Motion, Axios, React Router, React Stomp Hooks \u0026amp; SockJS.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBackend\u003c/strong\u003e: Java 21, Spring Boot 3.5, Spring Security, Spring WebSocket, Spring Data MongoDB, Maven.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFor detailed information on features, installation, usage, and project structure, please visit the \u003ca href=\"https://github.com/Prajwal-banakar/BookHaven\"\u003eBookHaven GitHub Repository\u003c/a\u003e.\u003c/p\u003e","title":"BookHaven - A Modern Online Book Store"},{"content":"AI-Powered Fitness is a modern, full-stack health application designed to democratize personal training. By leveraging Large Language Models (LLMs), the platform generates highly personalized nutrition and workout roadmaps based on a user\u0026rsquo;s unique body metrics (BMI), fitness goals, and available equipment.\nKey Features For Users: Personalized Fitness Profiling, Instant BMI Calculation, AI-Generated Custom Diet Plans, Tailored Workout Routines, PDF Export for offline access, and 24/7 AI Chatbot support. Intelligent Services: Real-time health advice via Groq AI, location-based gym and yoga studio discovery using Google Maps integration, and secure progress tracking. Tech Stack Highlights Frontend: React 18, TypeScript, Vite, Tailwind CSS (Glassmorphism UI), Lucide React, jsPDF. Backend \u0026amp; Integration: Supabase (PostgreSQL \u0026amp; Auth), Groq SDK (Llama 3), Google Generative AI (Gemini Pro). For detailed information on features, installation, usage, and project structure, please visit the AI-Powered Fitness GitHub Repository.\n","permalink":"https://prajwal-banakar.me/projects/ai-powered-fitness/","summary":"\u003cp\u003eAI-Powered Fitness is a modern, full-stack health application designed to democratize personal training. By leveraging Large Language Models (LLMs), the platform generates highly personalized nutrition and workout roadmaps based on a user\u0026rsquo;s unique body metrics (BMI), fitness goals, and available equipment.\u003c/p\u003e\n\u003ch3 id=\"key-features\"\u003eKey Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFor Users\u003c/strong\u003e: Personalized Fitness Profiling, Instant BMI Calculation, AI-Generated Custom Diet Plans, Tailored Workout Routines, PDF Export for offline access, and 24/7 AI Chatbot support.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIntelligent Services\u003c/strong\u003e: Real-time health advice via Groq AI, location-based gym and yoga studio discovery using Google Maps integration, and secure progress tracking.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"tech-stack-highlights\"\u003eTech Stack Highlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFrontend\u003c/strong\u003e: React 18, TypeScript, Vite, Tailwind CSS (Glassmorphism UI), Lucide React, jsPDF.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBackend \u0026amp; Integration\u003c/strong\u003e: Supabase (PostgreSQL \u0026amp; Auth), Groq SDK (Llama 3), Google Generative AI (Gemini Pro).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFor detailed information on features, installation, usage, and project structure, please visit the \u003ca href=\"https://github.com/Prajwal-banakar/Ai-powered-Fitness\"\u003eAI-Powered Fitness GitHub Repository\u003c/a\u003e.\u003c/p\u003e","title":"AI-Powered Fitness - Your Intelligent Personal Trainer"},{"content":"Hi, I\u0026rsquo;m Prajwal Banakar 👋 I\u0026rsquo;m a Google Summer of Code 2026 Contributor with the Apache Software Foundation and a passionate open-source developer. My journey is fueled by a deep curiosity for building high-performance distributed systems and real-time data infrastructure from the ground up.\nI am an active contributor to Apache Fluss (incubating), a streaming storage system for real-time analytics. My journey with Fluss began with small documentation fixes and grew into authoring FIP-37 (Fluss Improvement Proposal), a plan to integrate native RoaringBitmap support into the storage engine. I am now implementing this proposal as my GSoC project.\nI am also a credited contributor to the Fluss v0.9.0 release and the Fluss Clients v0.1.0 release, with my work spanning the core engine, documentation, testing, and client-side improvements.\nEducation \u0026amp; Background 🎓 Bachelor of Engineering in Information Science \u0026amp; Engineering Ghousia College of Engineering | 2022 — 2026 Focused on Distributed Systems, DBMS, and Operating Systems.\nIntermediate (PCMCs) State Board of Karnataka | 2020 — 2022 Strong foundational background in Physics, Chemistry, Mathematics, and Computer Science.\nCommunity \u0026amp; Mentorship 👨‍💻 When I’m not deep in a JIRA ticket or debugging race conditions, I enjoy mentoring fellow students and \u0026ldquo;building in public\u0026rdquo; by documenting my technical journey through my blog. I also served as a Campus Mantri at GeeksforGeeks, where I helped foster a culture of learning and collaboration.\nLet\u0026rsquo;s Connect! 📬 I’m always open to discussing distributed systems, open-source strategy, or just connecting with fellow developers. This site serves as a record of my work, technical explorations, and progress.\nGitHub: Prajwal-banakar LinkedIn: prajwal-banakar X (Twitter): @Pbanakar18 Email: prajwal.banakara@gmail.com ","permalink":"https://prajwal-banakar.me/about/","summary":"\u003ch3 id=\"hi-im-prajwal-banakar-\"\u003eHi, I\u0026rsquo;m Prajwal Banakar 👋\u003c/h3\u003e\n\u003cp\u003eI\u0026rsquo;m a \u003cstrong\u003eGoogle Summer of Code 2026 Contributor\u003c/strong\u003e with the \u003cstrong\u003eApache Software Foundation\u003c/strong\u003e and a passionate open-source developer. My journey is fueled by a deep curiosity for building high-performance distributed systems and real-time data infrastructure from the ground up.\u003c/p\u003e\n\u003cp\u003eI am an active contributor to \u003cstrong\u003eApache Fluss (incubating)\u003c/strong\u003e, a streaming storage system for real-time analytics. My journey with Fluss began with small documentation fixes and grew into authoring \u003cstrong\u003eFIP-37 (Fluss Improvement Proposal)\u003c/strong\u003e, a plan to integrate native RoaringBitmap support into the storage engine. I am now implementing this proposal as my GSoC project.\u003c/p\u003e","title":"About Me"},{"content":"After I shared my journey to GSoC, many aspiring students reached out with the same questions: What exactly is open source? What is GSoC? And how can I get started?\nThis post is for you. It\u0026rsquo;s the guide I wish I had when I was just starting out.\nWhat is Open Source? Imagine a chef has a secret recipe for a fantastic dish. In the normal world (called \u0026ldquo;closed source\u0026rdquo;), they keep that recipe locked away. You can buy the dish, but you can never see how it\u0026rsquo;s made.\nOpen source is the opposite. The chef publishes the recipe for everyone to see. Anyone can look at it, try it out, suggest improvements (\u0026ldquo;This would taste better with a pinch of salt!\u0026rdquo;), and even share their modified version with others.\nIn the software world, the \u0026ldquo;recipe\u0026rdquo; is the source code.\nOpen-source software is software whose source code is publicly available for anyone to view, use, modify, and distribute. Projects like Linux, Android, Python, and Apache Fluss are all built this way.\nWhy should you care?\nYou learn from the best: You can read code written by expert engineers at top companies. It\u0026rsquo;s like having a free library of real-world, production-grade projects. You build a real-world resume: Your contributions on platforms like GitHub become your portfolio. Instead of just saying you know Java, you can show a merged pull request in a major Java project. This is proof of your skills. Contributing to one open-source project can be more valuable than creating ten personal projects. You join a global community: You get to collaborate with developers from all over the world, learn from them, and get mentored. A common myth is that you need to be a coding genius to contribute. That\u0026rsquo;s not true! You can start by fixing a typo in the documentation, reporting a bug, or helping with translations. Every contribution matters.\nWhat is Google Summer of Code (GSoC)? Google Summer of Code (GSoC) is a global program where Google pays students a stipend to work on an open-source project for the summer.\nIt\u0026rsquo;s not an internship at Google. Instead, you work with an open-source organization (like The Apache Software Foundation, Python Software Foundation, etc.) on a specific project. You are assigned a mentor from the organization who guides you throughout the summer.\nThe goal of GSoC is to introduce students to the world of open-source development. It\u0026rsquo;s a fantastic opportunity to get paid to learn, contribute to a real project, and get mentored by experienced developers.\nHow to Get Started: A Step-by-Step Guide Here is a practical, step-by-step plan to go from zero to making your first contribution.\nStep 1: Learn the Tools of the Trade\nBefore you can contribute, you need to know at least one programming language and how to work with code collaboratively. The most important tool for this is Git, and the most popular platform is GitHub.\nLearn the basic Git commands: clone, add, commit, push, pull. Understand the GitHub flow: Forking a repository, creating a new branch, opening a pull request. There are tons of free resources on YouTube and websites like freeCodeCamp to learn this. Step 2: Find a Project You Genuinely Like\nGo to the GSoC organizations page. You will see a list of hundreds of organizations. Don\u0026rsquo;t be overwhelmed.\nFilter by programming language and year. Select languages you know (e.g., Java, Python, C++). I suggest choosing an organization that has participated in the last five years, as they have a high probability of returning. Make sure you have completed the first step before doing this. Look for topics that interest you (e.g., Web, Operating Systems, Data Science); filters are available on the GSoC website. Many YouTube videos will suggest picking 2-3 organizations, but I recommend choosing only one that seems interesting to you. Going deeper is better than going wider. (Even if you don\u0026rsquo;t get selected for GSoC, consistent contributions can lead to an invitation to become a project maintainer, which is an incredible achievement in itself.) Read their \u0026ldquo;About\u0026rdquo; page and explore their projects. The key is to find something you are curious about, as that curiosity will fuel you through the challenges. Step 3: Make Your First Contribution (Start Small!)\nThis is the most crucial step. Your goal is not to solve a massive problem on day one. Your goal is to learn the contribution process of the organization. I suggest start contributing early (e.g., November-December).\nFirst, read the documentation (you know what happened to me when I didn\u0026rsquo;t! 😅) and set up the project locally. Look for issues labeled \u0026ldquo;good first issue\u0026rdquo;, \u0026ldquo;beginner\u0026rdquo;, or \u0026ldquo;documentation\u0026rdquo;. Some projects use Jira and others use GitHub for tracking issues; you will learn which one by reading the contributing guidelines. A documentation typo is the perfect first contribution. It\u0026rsquo;s simple, low-risk, and helps you understand the workflow of creating a pull request and getting it reviewed. My first PR to Apache Fluss was a small documentation fix. It got merged with a celebratory emoji, and it gave me the confidence to continue. Step 4: Join the Community\nOpen source is about people. You can\u0026rsquo;t just be a silent coder.\nFind the organization\u0026rsquo;s communication channel. This is usually a mailing list, Slack channel, or Discord server. Join the channel and introduce yourself. Say you\u0026rsquo;re a student interested in contributing for GSoC. Be polite, ask questions, and listen to the discussions. This is how you learn about the project\u0026rsquo;s culture and roadmap. Step 5: Write Your GSoC Proposal\nAfter you\u0026rsquo;ve made a few contributions and engaged with the community, you can start thinking about a project for the summer.\nLook at the project\u0026rsquo;s \u0026ldquo;Ideas List\u0026rdquo; for GSoC. Join the community calls, listen silently to understand what the community needs or is planning, and look at their roadmap. Come up with a project idea (it can be from the list or your own). Discuss your idea with the mentors! This is non-negotiable. A proposal written without feedback from the mentors has a very low chance of being accepted. Write a detailed proposal that outlines what you plan to do over the summer, with a clear timeline. Beyond GSoC: Other Summer of Code Programs While GSoC is the most well-known program, its popularity has led to increased competition. The good news is that there are many other fantastic programs that provide similar experiences. If you\u0026rsquo;re looking for more opportunities, check these out:\nGirlScript Summer of Code (GSSoC): A 3-month long open-source program by GirlScript Foundation, aimed at helping beginners get started with open source. It\u0026rsquo;s open to all genders. Summer of Bitcoin: A global, online summer internship program focused on introducing university students to bitcoin open-source development and design. European Summer of Code (SoC): A program similar to GSoC, but focused on students from European countries. Linux Foundation (LFX) Mentorship Program: A program that helps developers with the necessary skills and resources to learn, experiment, and contribute effectively to open source communities. Outreachy: A paid, remote internship program. Outreachy’s goal is to support people from groups underrepresented in tech. Don\u0026rsquo;t limit yourself to just one program. Explore these alternatives, as they offer valuable mentorship and experience.\nFinal Words My journey into open source was not a straight line; it took nearly five months. There were moments of doubt and frustration, but the key is consistency. As Virat Kohli says, \u0026ldquo;The only time you truly fail is when you decide to give up.\u0026rdquo;\nDon\u0026rsquo;t be intimidated. Don\u0026rsquo;t do anything blindly; understand every scenario. The open-source community is incredibly welcoming to newcomers who are willing to learn. Start small, be consistent, and don\u0026rsquo;t be afraid to ask for help.\nGood luck, and I hope to see you on GitHub!\n","permalink":"https://prajwal-banakar.me/posts/what-is-open-source-and-gsoc/","summary":"\u003cp\u003eAfter I shared \u003ca href=\"/posts/my-gsoc-journey/\"\u003emy journey to GSoC\u003c/a\u003e, many aspiring students reached out with the same questions: \u003cem\u003eWhat exactly is open source? What is GSoC? And how can I get started?\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis post is for you. It\u0026rsquo;s the guide I wish I had when I was just starting out.\u003c/p\u003e\n\u003ch3 id=\"what-is-open-source\"\u003eWhat is Open Source?\u003c/h3\u003e\n\u003cp\u003eImagine a chef has a secret recipe for a fantastic dish. In the normal world (called \u0026ldquo;closed source\u0026rdquo;), they keep that recipe locked away. You can buy the dish, but you can never see how it\u0026rsquo;s made.\u003c/p\u003e","title":"What is Open Source and Google Summer of Code?"},{"content":"The Swiggy Problem: Analytics at the Speed of Now Imagine you\u0026rsquo;re running Swiggy or Zomato. Every second, thousands of orders pour in from across the country. You need to answer critical business questions in real-time: How many unique customers ordered in Bangalore in the last 10 minutes? Which dish is trending right now?\nThis is the world of real-time analytics. You need to process and understand data the instant it arrives.\nThis is exactly the problem Apache Fluss was built to solve. Think of it as a very fast, very intelligent database that never sleeps. It\u0026rsquo;s a streaming storage system, built by engineers at Alibaba and now an open-source project at The Apache Software Foundation, home to legendary projects like Kafka and Hadoop. Companies use Fluss to power their real-time dashboards, fraud detection systems, and recommendation engines.\nAs a Google Summer of Code (GSoC) student with The Apache Software Foundation, I\u0026rsquo;ve had the incredible opportunity to contribute to this amazing project. This post is a story about my project, what it solves, and my journey into the world of large-scale open-source development.\nThe Challenge: Counting Millions of Unique Users in Real-Time Let\u0026rsquo;s take another example. Imagine you\u0026rsquo;re Spotify. You want to know: how many unique listeners heard a song today?\nA simple question, but a massive technical challenge. If a song plays 50 million times to 10 million unique users, you can\u0026rsquo;t just store every single user ID and count them later. It would take far too much memory and time. The traditional COUNT(DISTINCT user_id) query that works on your small database will crumble under this load.\nThe solution is a clever data structure called a RoaringBitmap. Think of it like a highly compressed list. Instead of storing 50 million records, you store one small, compressed object that can still tell you the exact number of unique listeners. It’s like compressing a 1GB file to 10MB without losing any information. It\u0026rsquo;s incredibly fast and efficient.\nThe Problem: A Powerful Engine with No Steering Wheel Here\u0026rsquo;s the interesting part: Apache Fluss already had the core engine to do this. It has a feature called the Aggregation Merge Engine, which can automatically merge these RoaringBitmaps as data arrives. This is a superpower. It means the database does the heavy lifting of deduplication on the fly.\nBut there was a catch. This powerful tool was locked in a room with no key.\nWhile the storage engine understood bitmaps, the SQL layer did not. To use it, a developer had to:\nWrite custom functions (UDFs) in Java or Scala to create and count the bitmaps. Package these functions into a JAR file. Manually register these functions in their Flink SQL session every single time. For example, this is what code looked like before:\n-- Manually register every function, every time ADD JAR \u0026#39;/path/to/my/custom-udfs.jar\u0026#39;; CREATE TEMPORARY FUNCTION bitmap_cardinality AS \u0026#39;io.mycompany.udfs.BitmapCardinality\u0026#39;; CREATE TEMPORARY FUNCTION bitmap_or_agg AS \u0026#39;io.mycompany.udfs.BitmapOrAgg\u0026#39;; -- Finally, write the query SELECT channel, bitmap_cardinality(bitmap_or_agg(uv_bitmap)) AS uv FROM my_table GROUP BY channel; This was cumbersome, error-prone, and a huge barrier for developers who just wanted to write simple SQL.\nMy GSoC Project (FIP-37): Building the SQL Interface for RoaringBitmaps This is where my GSoC project, officially known as FIP-37 (Fluss Improvement Proposal), comes in. My project is to build the key to that locked room.\nThe goal is to make RoaringBitmap analytics a native, first-class citizen in Apache Fluss. I\u0026rsquo;m adding a set of built-in SQL functions so that any data engineer can perform complex, real-time deduplication with simple, clean SQL—no custom code, no JARs, no hassle.\nWith FIP-37, the query above becomes this:\n-- No setup needed. The functions are built-in. SELECT channel, rb_cardinality(rb_or_agg(uv_bitmap)) AS uv FROM my_table GROUP BY channel; That’s it. What previously required custom infrastructure and boilerplate code is now a single, clean line of SQL.\nI\u0026rsquo;m implementing a whole suite of functions, including:\nrb_build_agg(user_id): Creates a bitmap from a stream of user IDs. rb_cardinality(bitmap): Counts the number of unique users in a bitmap. rb_or_agg(bitmap): Merges bitmaps from multiple rows to get the total unique users for a group. rb_and_agg(bitmap): Finds the users who are common across multiple groups. And many more for advanced set operations like unions, intersections, and checking for user presence. This proposal went through a formal review by senior engineers from companies like Alibaba and Ververica (the creators of Apache Flink). After a community vote, it was unanimously accepted. This summer, I am turning that proposal into code.\nTo learn more, check out the Apache Fluss website and the official proposal for FIP-37.\n","permalink":"https://prajwal-banakar.me/posts/what-is-apache-fluss/","summary":"\u003ch3 id=\"the-swiggy-problem-analytics-at-the-speed-of-now\"\u003eThe Swiggy Problem: Analytics at the Speed of Now\u003c/h3\u003e\n\u003cp\u003eImagine you\u0026rsquo;re running Swiggy or Zomato. Every second, thousands of orders pour in from across the country. You need to answer critical business questions in real-time: \u003cem\u003eHow many unique customers ordered in Bangalore in the last 10 minutes? Which dish is trending right now?\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis is the world of real-time analytics. You need to process and understand data the instant it arrives.\u003c/p\u003e","title":"What is Apache Fluss? A GSoC Story on Making Real-Time Analytics Simpler"}]