My year in review: contributions to Elementary OS
Tags: opensource, elementaryos, vala
Published: 2020-12-18 14:19:29

This year I decided to take my open source contributions to the next level and focus my attention on a single project: [Elementary Linux](https://elementary.io). I choose this project for three simple reasons: 

1. I use it for both work and personal use;
2. It has a strong focus on design. I suck at design, so contributing with elementary might help me to learn a thing or two about it; 
3. It focuses on providing nice defaults. I have wasted too many hours customizing KDE and other WMs, but with elementary everything works well out of the box. 

## Camera

The Camera app is migrating toward using GStreamer directly and a lot of things are changing right now. My first contributions were aimed at better camera detection: there are many reports of non-working cameras and PRs [#127 - Setting v4l device now works correctly](https://github.com/elementary/camera/pull/127) and [#128 - 
Use gst.DeviceMonitor to list video sources](https://github.com/elementary/camera/pull/128) include better detection by using GStreamer to enumerate available cameras. 

Another area of improvement was to allow simple image adjustments in the app. Mirroring was added in [#138](https://github.com/elementary/camera/pull/138) and brightness and contrast in [#139](https://github.com/elementary/camera/pull/139). 

IMHO, my largest contributions was actually [#134 - Add option to switch cameras](https://github.com/elementary/camera/pull/134). I frequently use two cameras for classes and this not being able to select which to use was quite a limitation. After some back and forth regarding design issues it was finally merged!

![Camera switching in elementary](https://dev-to-uploads.s3.amazonaws.com/i/zyp50alavtvbe52x813s.gif)

I am still waiting for feedback in [#142 - Send notification when recording has finished](https://github.com/elementary/camera/pull/142), but it looks promising as well. 

## Code editor

A first simple contribution was to [enable changing tabs using `Ctrl`+`Tab`](https://github.com/elementary/code/pull/888). This scratched an itch that was bothering me for a long time: I've lost count of how many times I tried to use the shortcut with Code... and now I don't need to count anymore. The PR was accepted and is already shipping in the pre-release images for Elementary 6! 

A second item on my wishlist was better markdown support. I like using Code to edit markdown. Somehow I'm more focused when using it for writing that VSCode, which is my goto editor for code. And issue [#850](https://github.com/elementary/code/issues/850) was a good start. It proposed the inclusion of shortcuts for common formatting such as bold, italics and links. Many other editors use these for accelerating markdown editing and this is now possible since [PR #890](https://github.com/elementary/code/pull/890) was accepted! 

![Markdown actions in Code](https://dev-to-uploads.s3.amazonaws.com/i/ezjj8py8iei18b5vattg.gif)

I even sent a [second PR](https://github.com/elementary/code/pull/894) building a "list mode" of sorts and opened an [issue requesting other shortcuts](https://github.com/elementary/code/issues/916). 

![list edit mode in code](https://dev-to-uploads.s3.amazonaws.com/i/7erwsb9rbuoq2purevue.gif)

# Conclusion

This year has been great for me. I've learned a lot about Vala, GTK and design by contributing to *elementary*. I have even contributed to fix issues that are actually going to be useful for me, which is an even bigger plus. The only downside is that *elementary* is not a large project with lots of people reviewing code, so sometimes PRs take weeks to finally get merged. Anyways, let's hope that next year brings more learning and merge Pull Requests 🎉️