DEV Community

Cover image for My first big open source project with a friend
Nico
Nico

Posted on

My first big open source project with a friend

Today I wanted to make a little blog post (also my first one) about my first big open source project.

The beginning

It started with me switching full time to Linux. (arch btw)
I was wondering if there was a soundboard for Linux and found that there were no good alternatives to the Windows counterparts.

Often when I realize something like this I think something like: "How can it be that no one really created this?".

That combined with the fact that I had been planning to get into C++ for a while, then led me to start the project.

First functional version

After a little research I found out that it's fairly easy to implement a soundboard on Linux with PulseAudio modules.

Here is a screenshot from the first version:

Old version

I wrote it with C++ and Qt5 as widget toolkit. I had a little help from a friend who was still using Windows at the time and is more proficient in C++ than I am.

It used system calls to the PulseAudio CLI and another CLI program called mpg123 to play the sounds.

Collaboration

Then I collaborated with him and made a new version which was a major rewrite and looked like this:

QML Version

I did most of the UI work with QML and he did the backend stuff. This was also the first version to support Windows with VB-Cable.

Up until that point the logo looked like this. This was my first attempt on creating a logo using Inkscape
Old Logo

Next-gen version

At some time we both agreed that we want to change the UI framework again because we were not so happy with QtWidgets and QtQuick.

When I created the first version I was more into coding with languages like Java, Kotlin and despised JavaScript a bit back then.
However, by then I was a fan of Web development and JavaScript/TypeScript frontend frameworks and we decided to use a web based UI.

He coded a webview library which uses WebView2 on Windows and Webkit2GTK on Linux. I created the new UI using Vue.js and Vuetify.

This is how the current version looks like:
Screenshot
(We've come a long way 😮)

We also created a new logo using Canva:
New Logo

This version also introduces major new features like an integrated downloader and pass-through which can be used as a workaround to share an applications' sound on Linux.

Closing words

Thank you for reading my post! I've never written a blog article before, so criticism is very much welcome.

Links

Top comments (1)

Collapse
 
alexzwitscher profile image
⛱️ Alex ⛱️

Nice blog post