Thursday, November 22, 2018

GNOME+Rust Hackfest #4

Last week, I had the pleasure of attending the 4th GNOME+Rust hackfest in Thessaloniki, Greece. While other folks were mainly focused on the infrastructure work, with my Rust being extremely rusty as of late, I decided to do something that tests the infra instead. More specifically, I took up on Sebastian's challenge of "Maybe someone should write a gst-inspect replacement in Rust". I am happy to report that by the end of the hackfest, I already have an implementation that covers 30% of the typical usage of gst-inspect. This implementation also comes pre-built with paging by default (which I only recently added to the current gst-inspect) and colored output (MR on existing gst-inspect still pending review).

I did run into some rather interesting issues though but there was always someone who could help me out. One specific one was on how best to pipe the output in Rust to a pager. This took more than a day and my implementation was mostly very similar to the one I did in C. Then I consulted Alex Crichton, who was able to come up with a much cleaner solution in 5 minutes. Another issue was that I wanted to name the binary 'gst-inspect-1.0' but turned out Cargo currently doesn't allow that. It's not big deal and I went with 'gst-inspect' (which might be a better name anyway to avoid conflict with existing binary) for now but me hitting this issue at the hackfest, resulted in Alex providing instructions on how someone would go about fixing this issue.

I also found a few things missing in the gstreamer bindings and added those as part of the work.

I'm still slowly working on adding the feature to show details about plugins and elements but it might take a bit, since I'm pretty swamped with work these days. However, once that feature is in, we've most of gst-inspect usage covered and I can file the merge-request for it.

If for some reason you want to try it out already, the branch is here. Oh and here is a screenshot:



Other than that, we had a lot of conversations about Rust, GStreamer and GNOME during the hackfest and such events really motivates folks to do even more awesome work.

I would like to thank GNOME foundation for sponsoring my trip and especially the GNOME Travel Committee for helping me out when I had an issue with changing my accommodation. I'd also like to thank Collabora for letting me use my work time for this event.


No comments: