What does it take to create a desktop environment or window manager?

You don't need to understand the whole stack to be able to contribute.

I'm in the middle of a merge request that makes GNOME Maps use a new UI component to show some error messages, to be able to make those changes I needed to now a bit of Javascript (the programming language Maps uses), XML (the markup language used to define UI) and how to use git to make the contribution itself.

For the XML part is was really straight forward, all I needed to do was to add a new element around everything, something like this:

<NewElement>
   ... (everything that existed before)
</NewElement>

This new element is called ToastOverlay, it has a method to create Toasts, little messages that appear in the bottom of the application.

For the Javascript part, I added a new method to create a new Toast from an string, something like this:

showToast(message) {
    let toast = new Toast({
        title: message,
    });

    toast_overlay.showToast(toast);
}

After creating this method I needed to change the old error messages to use this new method. Again, really simple stuff, I'm sure you would be able to come up with this changes yourself.

I can help you get started with contributing, to both KDE or GNOME, if you want!

/r/learnprogramming Thread