A conversation with Outreachy student Sonja Heinze about Fractal

Sonja Heinze was an Outreachy intern for GNOME from December 2019 – March 2020. She worked on Fractal, GNOME’s Matrix client. She was interviewed by Oliver Propst during her internship.

Do you want to introduce yourself?

I’m a mathematician and have just finished a PhD in algebraic singularity theory. Last year, I went to a place called Recurse Center for three months with the idea to figure out if programming would be a fun alternative to an academic career.

Can you tell us about the work you’re doing?

At the moment, I’m implementing a video player in Fractal. Fractal is a communication app for the GNOME desktop based on the Matrix protocol. Communication is organized into rooms. With my contribution, video attachments get handled as follows: any message with video attachment that appears in the room history (i.e. list of messages sent in that room), gets provided some own little space where it gets auto-played in a loop without sound.

Of course, when the user scrolls up or down in the room history and the video message gets out of sight, it stops playing. When clicking on the video, the media viewer opens. There, the user can play and pause the video and seek in it (see second picture in mail attachment). Furthermore, in the media viewer the user can go forth and back through all the media sent in that room (i.e., images and videos). Both, in the room history and in the media viewer, the video widget dimensions get adjusted well according to the video resolution ratio.

Why did you choose this project?

The project seemed the most interesting and challenging one on the Outreachy list. For me, learning through the internship is just as important as starting to get to know the open source world. I hadn’t seen GTK or GStreamer before and reading about them seemed very interesting. Furthermore, Fractal is written in Rust.

I hadn’t seen any code written in Rust before, but Rust had already caught my attention during my time at the Recurse Center. I guess, if the project was written in a very common language that I didn’t know, I wouldn’t have chosen that project. But for a newish language like Rust, it seemed more acceptable and learning Rust through the project was a motivating idea. Also, contributing to a non-commercial open source communication app alternative to the mainstream ones was another mo titivating factor.

How would you rate the development experience?

It has taken me a little while to get used to the general work flow programmers are used to; as in, when to ask in a private chat, when in a public chat, when on GitLab and, if on GitLab, where. I find GitLab very user friendly. Also, whenever I don’t know about a functionality that’d be useful, my project mentors tell me about it. And whenever I know about one, but don’t know how it works, the documentation is very useful.

What are your impressions about the GNOME community and how do you feel about contributing to GNOME in general?

My two mentors for the project are super nice and helpful. And the other community members I’ve interacted with so far, are so as well. I haven’t interacted with that many people yet, though. Contributing to GNOME is cool. I see GNOME as part of a non-commercial open source alternative to Windows or Mac and contributing to that is, for sure, worth the while.

Your work on Fractal involves using GStreamer can you and tell us something about GStreamer?

GStreamer is a library used for media reproduction. In Fractal, GStreamer was already used for the implementation of the audio player that appears for messages with audio attachment in the room message history.

GStreamer reproduces audio or video by means of a pipeline, i.e. a system of connecting pieces, called elements, that manipulate the media in one way or another. In Fractal, we use a high level API provided by GStreamer for that called GstPlayer. In the end, I’ve been able to do almost everything through GstPlayer. But on my way there, I’ve sometimes manipulated the pipeline directly and through that I’ve learned a little bit about how GStreamer works. 

For example, I’ve read a little about how communication with and inside the pipeline works. The way a pipeline communicates internally is by sending events from one element to another. There are different kinds of events. Some of them are responsible for informing all pieces of the pipeline about an instruction that might come from outside the pipeline. 

An example is wanting to access a certain point of the video and playing the video from there, called seek event. For that to happen, the application can send a seek event to the pipeline; that’s one way of communicating with the pipeline from outside. When that happens, that seek event is put on all sink elements of the pipeline and from there sent upstream, element by element, until it reaches the source element, which then pulls the requested data and sends it through the pipeline. 

Events are just one example of pipeline communication. To mention some more ways to communicate with the pipeline from outside: messages the pipeline leaves on the pipeline bus for the application to listen to, state changes and queries on elements or pads.

Anything else you want to add or share?

Fractal uses Flatpak, which provides isolation of the app from the rest of the user’s system. I didn’t know Flatpak before and the concept seems pretty interesting. I hope to find some time to learn a bit about it soon.

We want to thank Sonja for taking time talking with us about Fractal and the work she’s done. More information about Fractal is available on the GNOME wiki.

GStreamer Spring 2018 Hackfest Remarks – author’s note

Had the pleasure to attend the GStramer Spring Hackfest taking place in Lund Sweden May 6 – May 4, here follow some reflections.

There is likely no overstatement that multimedia development is probably one of the more complex areas of software development so to be present while  what must be some of the more competent in the domain hacking was quite an experience.

The atmosphere was intense focused, it almost felt like you could feel vibrations in the air.

Nirbheek and people busy hacking

Considered it good that many of the participants had an affection towards
GNOME (something to be for grateful/appreciative for).

Would be positive to attend a future GSteamer Hackfest.
Thanks to the local company Axis who provided the venue.

*The GNOME/GStreamer relationship is something to care about.
*There is no overstatement that the GStreamer community is a very knowledge & competent group of people which makes the alignment with GNOME valuable.

Photo: CC BY-SA 3.0 Oliver Propst  

Giving Spotlight | Meet Tanu Kaskinen, PulseAudio maintainer

Tanu, CCo

We have this week had the pleasure to interview Tanu Kaskinen about his work as PulseAudio maintainer

Do you want to introduce yourself?

Hello, my name is Tanu Kaskinen and I’m a PulseAudio maintainer (and also involved in the OpenEmbedded project a little bit).  I spent my childhood in Järvenpää, Finland, and moved to Tampere when I started my software engineering studies at Tampere University of Technology. I’ve been living here ever since (13 years, if my calculations are correct).

How did you become involved with PulseAudio and why do you think its’ an important project? 

At a time (2007, I think) I had a MIDI keyboard, and I wanted to play along while listening to music in Rhythmbox. That required running software synthesizers with JACK, but I couldn’t make Rhythmbox work properly with JACK. PulseAudio seemed like the future of desktop audio, and Rhythmbox certainly worked with PulseAudio. There was a PulseAudio module for bridging to JACK, but that was glitchy, so I decided to try to fix it (my first open source code contribution attempt!). In the end my fix was not needed after Lennart rewrote big parts of the PulseAudio core.

Why is PulseAudio important? Well, you need some sound server to manage application streams, be that dmix (in ALSA), JACK or PulseAudio. Having an intermediary between the applications and the kernel is required for a lot of flexibility that people expect from their systems.

What are some of the challenges about maintaining PulseAudio? 

I guess all projects have their set of difficult bugs… In case of PulseAudio, hardware specific issues are quite common. Not having the hardware yourself is of course one problem when debugging, but even if the issue can be tracked down to a clear misbehaviour in the kernel driver, the bug may be left unfixed, because I have never learned to work with kernel code, and the ALSA developers may ignore the bug report (I don’t really blame them, I believe ALSA is understaffed too).

Any interesting features that are being worked on right now?

Nothing earth-shattering comes to mind, but here are things that I’m personally excited about: Georg Chini has been working on a long-standing bluetooth bug about bad A/V sync when watching videos.  

I believe the Intel HDMI LPE hardware is becoming pretty widespread on new computers, and the kernel driver for that has certain unusual behaviour that makes PulseAudio enter an infinite loop when the HDMI cable is not plugged in. I’m happy that it will be fixed in the upcoming release.

There have been various small tweaks to automatic routing in recent releases, and those are going to continue. 

What keeps you involved in the PulseAudio community?

I feel a need to do something useful with my life, and maintaining PulseAudio fills that need quite nicely. It’s not always fun, but it’s not so un-fun either that I would feel compelled to quit. PulseAudio has been a significant part of my life for some 10 years, and at this point it’s a pretty big part of my identity.

Can you describe PulseAudio’s role/relevance in a desktop environment such as GNOME?

GNOME tries to make a computer easy to use, and things should “just work”. PulseAudio plays a big role in that when it comes to audio. Also, if the GNOME user interface designers or developers have a vision for how e.g. audio settings should be presented, they have to work within the capabilities of the sound server.

Are you yourself a GNOME user?

Yes I am! I started using Linux when Debian Woody was current, probably in 2003. I don’t remember how I initially chose GNOME, maybe just because it was the default? I’ve sticked with Debian and GNOME pretty much all this time .

Why are you doing a fundraiser?

Because I don’t want a real job 🙂 I like having complete control over how I spend my time, and even if I didn’t feel so strongly about that, not many companies are willing to pay just for PulseAudio maintenance anyway. (Perhaps the number of such companies is even zero, but to be honest I haven’t tried reaching out to Red Hat or similar.)
In 2015 I found myself having enough savings to last at least a few years if I quit from my day job, and so I did. I wanted to spend more time on PulseAudio, because there was a shortage of maintainer resources in the project . In 2016 I launched the Patreon campaign to slow down the rate at which my savings are drained, and this year I started a similar campaign on Liberapay.

Questions for fun 

What is your favorite place on Earth?

Well, there’s a certain quiet spot on the shore of the Näsijärvi lake not too far from where I live. During summertime I sometimes go there to watch the sunset.

Favorite cake?

Hmm, I haven’t pondered this before, but I think the answer is the Swiss roll. Ideally with whipped cream and banana inside. I don’t know if I’ve ever eaten such Swiss roll, but I imagine that would be the optimal filling.

Thanks Tanu for taking time talking with us we wish you continued luck in your efforts!

Mid-June nigth in Tampere. CC0 Tanu Kaskinen

Consider support Tanu through his Patreon or Liberapay campaigns.

Giving spotlight | 3.28 Release Party Report from China

To celebrate the successfully held GNOME Asia Summit 2017 in Chongqing, the Linux Story community saw the 3.28 release as a chance to promote GNOME and Open Source in China.

With its influence in many major cities of China, Linux Story called upon open source enthusiasts to gather in their local cities to hold a 10 cities get-together event to celebrate the new GNOME release.

A set of pictures from the events with pictures follow here to enjoy (received from Linux Story).

In Xian, a speech titled “A Brief History of GNOME” was presented, the presenter Ckj then showed new features of GNOME 3.28
In Guangzhou, the party started with a demonstration of GNOME 3.28. Later Mr Li Ruibin, an experienced Linux user helped explain issues people face when using Linux and then introduced people to Flatpak.
In Beijing, the party did not only offer a GNONME 3.28 demonstration, but also delicious pizzas by sponsors like SUSE and ZhongBiao Software.

 

 

 

 

 

 

 

 

 

In Yangzhou and in Shanghai the spotlight was on GNOME 3.28 demonstrations and the excitement was very high.

 

 

 

 

 

 

 

An excitement exciting gathering happened in the Mozilla sponsored community office place in Taiwan where apart from a demonstration of GNOME 3.28 Mr Zeng Zhengjia a local Translator shared a lot of his experience with translating earlier versions of GNOME. The picture tells a lot about the atmosphere.

 

 

 

 

 

 

 

 

 

We want to thank the Linux Story community for the initiative and wish them luck in their continued efforts. Initiatives like this are great to see.