printfdebugging

From the LibreOffice and Open Source Conf 2024

Table of contents

I am very happy that I got to be a part of the conference, and the community. Happy because it wasn't just a "wonder land tour", but rather a real experience. I felt joy, a sense of responsibility, shed some tears from a heartbreak, made a lot of new friends, and came back home with some memories which I will cherish forever.

Disclaimer: Since it is the story "from my perspective", it might be the case that I got a wrong idea of the situation I am writing about. It might be that someone said something, and I heard just a part of it. So please don't take this blog as "conference minutes".

Scene 08 🎬: The Board Meeting in the Auditorium

I entered the auditorium, the "closing ceremony" was about to start. I got an email from Ilmari sensei, it was about my first regression :_). The ceremony started... Then Eyal got the mic, he asked why the board was being so secretive about the happenings in the foundation, why the trusties were not informed about various decisions. Italo started answering, the air was getting denser as the event progressed. Italo spoke a lot, but none of it answered what was asked. Eyal repeated the question, others also started asking. The questions were different but the way in which they were asked were shockingly similar, screaming "Stop beating around the bush! We need answers!"

For me, the community is my second family, much more important than the first. The first family gave me life, but the second family gave meaning to that life. When I started contributing, I didn't know anything, just some OOP, Linux and very basic C++. Thanks to Ilmari sensei, Heiko sensei and the community, I got to spend my college days working on something meaningful.

Seeing My Family Fall Apart

This was the first time I saw my happy family fighting. I wondered what happened to the Italo I knew from the "community lunch on 9th", I thought of him as a wise elder of the family, but now he seemed defeated, why is he twisting the words, I thought. This went on for some time, then Cor asked for the mic. He offered his help, but they simply denied. From what I understood, he stood for the board elections, but somehow "had to take his nomination back", or "was not allowed to contest" and the board didn't give him any satisfactory reason for that... didn't clearly get the whole picture. He was angry, and I never saw him this furious. From all the interactions I had with him in the design meetings, and during the conference, I knew if he is this angry then there was something wrong!

Being Honest with Oneself

I wanted to say what I felt, but hesitated a little. What if they start ignoring me, and don't invite me the next year, I thought. What if there are other consequences I don't know of. More than these was the fact that I was so emotionally involved with the project that I didn't want to believe in what was in front of me. I thought about it for a while, should I ask for the mic? I raised my hand. I don't care what happens, but I won't pretend that everything is fine, I thought. I got the mic, and I started speaking ...

"Hi I am Sahil, I don't believe in pleasing people, and I don't know of the consequences of what I am about to say, but I will say what I have to. Why does it feel like I am listening to some politicians. I am new to the project, don't know much about the situation but it feel like I am being served free beer in the name of freedom. That's it."

I couldn't speak anymore. My hands started shivering, my face became very hot, my throat dry. I wanted to say more, but couldn't. That "that's it." in the end was me accepting defeat, I have the language tools to say what I want, but not the emotional backing. If I say anymore, It wouldn't make sense similar to when a kid comes back home crying, complaining but you can't understand anything because of the cries.

The Heartbreak

Then the back and forth went for a while till the "event in charge" stopped it. He wanted the conference to end on a happy note, and for that he had some gifts for the board members. They started opening the gifts, and all the sudden everyone became happy and cheerful again. I couldn't hold it any longer, some tears started pouring down my eyes. "Why is everyone here so superficial. How can we have a happy ending after all this!" I rushed out of the auditorium straight to the washroom. I cried, cried a lot! Then after some minutes, I washed my face and came out, had a coffee. Then Cor asked "what happened?", and I said that I had a "heartbreak", and let's not talk or I will start crying. He said "sometimes crying helps". I couldn't hold it. I went to the washroom, and cried again. Why is everyone so "non-serious" about what's going on, I thought.

I washed my face, and came back to have another coffee. This time I was feeling a little better. Cor was standing nearby, he comforted me, I asked him "Why is everyone so superficially involved with the project?" He helped me understand that the "foundation" is not same as the "community", and most of the people in the community are pretty serious about the project. I thought about it for a while, and it made sense. I was feeling a lot better now. Then we had lunch, me, Cor, Gabriel, Thorsten, Mohit, Eyal, and others (sorry, I forgot your names).

Moment of Realization

We don't hate the people, but the situations they cause. I was thankful that I got to witness this moment. I grew up both as a person, and as a member of the "libreoffice community". On the way back, I met Eyal, and while traveling in the train, we talked about a lot of things, how it was good to end the conference as they did.

Sometimes it comes up in the discussions that how code contributors are the "first class" citizens, and others are "second class" citizens. I realize that it's people like Eyal and Cor who speak their minds out "the loudest" :P and keep the spirit of "free as in freedom" alive. We need to appreciate them more than we do, as they wake the village up at night when robbers make their move. (Robbers here is just used as an imagery, and not for any person in general. Remember we don't hate the people but the situations they cause!)

Scene 01 🎬: First Step on a Foreign Land

Yes, this was my first time flying and first time outside India! I was staying in hotel Perrin. The room was super cosy, very quiet and ambient. I unpacked my stuff, took a bath, and all the sudden I got a message from Rafael. I asked if I can join them, and he affirmed. Then as he messaged, I left for ibis. There I found him on the reception writing a note for me (I was a little lost on the way). Others were sitting in the bar opposite to ibis.

First Time Meeting Everyone

They were Michael Weghorn, Sophie, Mike S, Olivier Hallot, Osvaldo Gervasi, Juan Jose, Xisco... I forgot the names :_). What would I say, I thought. I went in, waved/shaked hands, exchanged smiles... Then I took out some sweets which my mom made for everyone (mom to the rescue!), and we had something to talk about! I don't drink, so I ordered a coffee. Then after some time, we headed out for dinner.

Michael Weghorn has been reviewing my patches since long, so we "kind-of" knew each other. I thought that he was 25-26 Y/O, but no! We talked about a lot of "neardy" things like dotfiles, programming environments, debugging etc. I had a lot of fun, and I hope I didn't bore him.

The Dinner Episode

Me and Michael ordered a vegetarian dish. And when the order arrived, I learnt a valuable lesson "menu images are not for scale". A single serving was enough for 2 people. It was around 30cm in radius! Luckily 2 more people came in, and we shared the food. After that whenever I went out for dinner, I always asked about the serving size to get an idea before ordering anything.

A Linguistic Breakfast

On the morning of 9th, I met Pavolo (not the one who organized). He works with educational institutions helping them adopt free software. We talked about a lot of things, free software, small tomatoes.. :). One thing that I clearly remember is Esperanto. It's an artificial language which doesn't have any exceptions, and some basic rules.

Scene 03 🎬: Lunch with the Community

I left for the conference (Belval University). The people were super nice, they helped me with the directions, which train to take. I was lost in Belval. I tried searching for the venue, but couldn't find it. I entered the main building of the University, and there was some other conference going on. After wondering back and forth a few times, I found someone who was also going to the conference. We found the place!

Another lesson that I learnt is that if possible one should buy a local sim card. Not having internet in an unknown place is really inconvenient.

Meetings and Greetings

Here I met Eyal, Michael Meeks, Miklos and everyone. I also met Shinji. I had some food, some coffee and then went into the hall. After some time, everyone introduced themselves, we discussed various issues related to translation tools, marketing, how we should approach students etc.. Italo was amplifying those who were too shy to speak loudly. He is a really good communicator.

There I met Michael Meeks! I was quite moved by the way he presented his views, without any hesitation. His words were super clear, the delivery was perfect, when he spoke people listened.

It was Nice Talking to You!

After the conference I tagged along M.Meeks, and asked a lot of questions. Yes, he has put in work to get that good. He suggested that I should read books, observe(read/watch etc) how politicians deliver their content. I also understood that he was not just "any member" in the conference, and part of that confidence/influence might have been because of him being the owner of Collabora Online (COOL).

Going back to the hotel room I thought about his answers and my curiosity for a while. I realized that if I am serious about what I am doing, and if the content and the intent of communication is good, then people listen. I will put in some work to expand my vocabulary, and work on the language basics.

Scene 04 🎬: Some Interesting Talks

GSoC Panel

I presented my project, it was good for a "first timer". I started explaing "the code in my head" line by line :_), took some time, but they got the idea (I hope). After the panel, I met the other GSoC panel speakers, and we exchaned feedback.

I asked Adam Seskunas about debugging the tests, and I got some tips. He suggested that I should started using GDB as printfdebugging might not work all the time. Other than that I could also crash the tests intentionally, or use SAL_DEBUG("") blocks for printfdebugging.

More Subtle C++

I don't remember much from the talk other than "how cool the + operator is", and that I don't know any C++ at all! It was after this talk that I decided to go over C++ again, "formally" this time. I will read some books, write some software of my own, and work on some big projects to gain more experience.

Before this, I was working on many things at the same time, but now I have decided to learn "computer graphics" (opengl, gtk, game development, raytracing..), and work on it for some time (5-10 years) atleast.

Introduction to Problem Solving Techniques

This talk by Michael Meeks was one of the best ones (for me). It started as "Problems are Hard, and That's Great!" When you find something hard, don't be surprised, get your hands dirty, and the future belongs to you. Hard work is good but not enough. Often it is the case that we approach a problem, we follow the intuition, and we get the solution. This doesn't work for big and new problems. Technique can be slow but it's deterministic.

Working on projects with big codebases is better than writing many small programs. If you have a small head, then be happy as you are more likely to abandon intuition than those with big heads. Always keep logs of what you are working on, what approach you took, what results you got. Saving printf logs, stack traces helps. Since one cannot tackle large problems in one go, the logs help save the context, so that you can quickly start from where you left.

Don't just go and ask questions, try with a systematic approach first. On the other hand, if you are hitting the wall even after trying with a systematic approach, it's better to ask someone, and share the logs! The goal is to understand the problem and defeat it. Pieces of paper are not enough for keeping logs, find a digital solution. I use Emacs BTW ;).

The Hermeneutical Spiral: read the bug --> dive deeper --> reread the bug --> (loop); IIRC then he was saying something like "for big problems, often we need to read the ticket, then dive into the codebase, then read the ticket again." Often it happens that I dive into the codebase, and start changing things, and later I find that what I was doing wasn't related to the ticket at all!

Scene 05 🎬: I am Too Inexperienced!

The Community Dinner

At the community dinner, Caolán and Michael Weghorn were talking about widget toolkits. How GTK is going down with each release, forcing their philosophy on the developers. I thought "I don't know either GTK or QT!" Then the dinner started, and I choose the vegan option. For starters, they had a very small fried potato on a 2x2in white tray. For the main course, they served boiled cauliflower and thin carrots! I am not complaining but that isn't even considered salad in India :). I was half asleep, and when Caolán, Balazs and others started going back, I tagged along.

Running in the Woods!!!

On the last day, I went running with Cor and Andrea by the river side. It was super fun, sometimes the slope went up, sometimes down. Cor out ran both of us. We talked about a lot of things like what were the environmental issues when they went to school. Andrea shared how he started things slow, and how he is the last one among his peers still running. In his school days, Ozone depletion and recycling were the main issues. The site was beautiful, something hard to find in the northen plains of India. It was somewhat similar to Jammu and Kashmir.

I have started preparing for the next time we meet; I only take stairs now and go for a run in the evenings. I remember Cor was flying on the roads even against the slopes.

Gallery!

Tags: #LibOConf24