Posts

GSoC 2024: Final Project Report

GSoC 2024 : Final Project Report | Vala Project Title Add support for the latest GIR attributes and GI-Docgen formatting to Valadoc. Overview GSoC 2024 has come to an end, so it's time to wrap up. I got the opportunity to contribute to the Vala Project which consists of an awesome programming language called Vala, and it gives me immense sense of accomplishment to know that my work will be beneficial for Vala programmers. I spent the 12 weeks working through the codebase of the Vala compiler, adding features and making the necessary changes to achieve the project goals. It was a valuable experience and I have learnt a lot by working with talented mentors and peers. This has undoubtedly shaped my journey as a developer and I plan to continue working on the project. Project Summary This project aimed to add support for the latest features of GObject Introspection to the Vala compiler and Valadoc. The plan was to ensure that the Vala compiler (which generates Vala bindings for the GIR

GSoC 2024: Week 3-4 Report

Image
GSoC 2024: Week 3-4 Report  Project Add support for the latest GIR attributes and GI-Docgen formatting to Valadoc Mentor Lorenz Wildberg Week 3 : default-value attribute for property Parsing the "default-value" attribute into a member access:  In continuation of the work done previously, we tried to set the prop. initializer of the corresponding Vala.Property from the default-value attribute by parsing it as an enumerator member. We parsed the default-value into a member access in GirParser.process(), but trying to regenerate the bindings resulted in errors like this: We got these errors because the default-value attribute in the vala GIRs actually contains the "c:identifier" of the enum member. However the function     parse_enumeration_member()   in the GirParser parses it into an EnumValue  using its "name" attribute and not the "c:identifier" attribute. Thus when we try to p arse the default-value attribute into a member access, the par

GSoC 2024: Week 1-2 Report

Image
Project Add support for the latest GIR attributes and GI-Docgen formatting to Valadoc. Mentor Lorenz Wildberg Project Planning In the Phase I of this project, our focus is on adding support for latest GObject Introspection attributes to vapigen and the vala compiler. Currently we are adding support for the glib:sync-func , glib:async-func , and glib:finish-func attribute for method, and the default-value attribute for property. To accomplish this, we need to understand how the GirParser builds the AST from the GIR data, and how the GirWriter writes into the GIR file using the AST. The latter is a bit easy, because the GirWriter simply visits all code nodes and prints each one of them into the GIR file. However, we found the first one to be pretty challenging, about which we will discuss in a bit! Week 1: Support for  glib:sync-func , glib:async-func , and glib:finish-func attributes Firstly we went through vala GIR files to decide how to implement support for these attributes:      

GSoC Introductory Post

Image
My journey as a GNOME user started in 2020 when I first set up Ubuntu on my computer, dual-booting it with Windows. Although I wasn't aware of GNOME back then, what I found fascinating was that despite Ubuntu being open source, it's performance and UI was comparable to Windows. I switched to become a regular user of Ubuntu and loved the way the GNOME Desktop Environment seamlessly performed different tasks. I could run multiple instances of various applications at the same time without it lagging or crashing down, which was often a problem in Windows. A beginning in open source The first time I came across the term "open source" was while installing the MingW GCC Compiler for C++ from  SourceForge . I had a rough idea of what the term meant but being a complete noob at the time, I didn't make a decision of whether to start contributing. When I felt I had enough skills to contribute, I was introduced to  p5.js , which is a JavaScript library for creative coding. Wi

Being a beginner open source contributor

Image
In October 2023, with quite a bit of experience in web development and familiarity with programming concepts in general, I was in search of avenues where I could put this experience to good use. But where could a beginner programmer get the opportunity to work with experienced developers? And that too, in a real-world project with a user-base in millions... Few people would hire a beginner! We all know the paradox of companies intent on hiring experienced people for entry-level roles. That's where it gets tricky because we can't really have an experience without being hired. Well... maybe we can :) What is open source software? Open source software is source code made available to the public, allowing anyone to view, modify, and distribute the software. It is free and the people who work to improve it are most often not paid. The source code of open source software provides a good opportunity for a beginner to understand, work on, and modify a project to improve its usability.