Authoring a GNOME Shell Extension: A Developer's Journey as an Open-Source Project Sole Maintainer

AllThingsOpen 8 views 26 slides Oct 20, 2025
Slide 1
Slide 1 of 26
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26

About This Presentation

Presented at All Things Open 2025
Presented by Josh Huber - Cengage

Title: Authoring a GNOME Shell Extension: A Developer's Journey as an Open-Source Project Sole Maintainer
Abstract: In this introductory level session, I share my experience as a sole maintainer of a GNOME Shell extension that ...


Slide Content

Authoring a
GNOME Shell Extension:
A Developer's Journey as an
Open-Source Project Sole Maintainer
Josh Huber
Sr. Software Engineer @ Cengage
linkedin.com/in/jhuber1

Hello!
Works on online
learning platforms used
by ~1 million users
Josh
Huber
Philosophy
Major
Math
Teacher
Database
Admin /
Architect
Software
Engineer +
Architect +
DevOps
Bassist
Homelab/
Hacking
Lives in Raleigh with wife,
two daughters, and two cats

1. Linux Desktop and GNOME Shell
2. How to make a GNOME Extension
3. How I became a maintainer
4. Perspectives as a sole maintainer
5. Takeaways and Q&A
Outline
Authoring a
GNOME Shell Extension:
A Developer's Journey as an
Open-Source Project Sole
Maintainer

Linux Desktop
Desktop usage
doesn’t include
Chromebooks or WSL
Approx 2-5% of
global browser
market share
Higher Linux usage among
developers and engineers
They use Linux in
servers/cloud/containers,
not necessarily on desktop

Stack Overflow 2025 -
Over 27% surveyed use
Ubuntu personally/
professionally

Linux Desktop Environments

GNOME Shell KDE Plasma

Hyprland Xfce Cinnamon MATE

LXDE Budgie COSMIC

LXQt Pantheon Unity Enlightenment

By Software: KDE developersWallpaper: Krystian ZajdelScreenshot: Paowee - Self-taken; derivative work, GPL, https://commons.wikimedia.org/w/index.php?curid=173343847

GNOME vs. KDE
GNOME Shell
Simpler, Streamlined, Cleaner
Lower Distraction
Default in Fedora and Ubuntu
Lighter hardware requirements
Less directly customizable*
KDE Plasma
More granular
Highly customizable
Powerful
Large Community
Lots of apps available

●Fewer built-in features
●Customize GNOME by
using Extensions
●Similar to
Chrome Extensions &
Mozilla Addons
Fact
Dash to Dock is the most
popular GNOME Extension with
nearly 10 million downloads.
GNOME Shell Extensions

How to make a GNOME Extension
➔Developer Guide at gjs.guide/extensions has a Getting Started page



➔Code your Extension. This will require a bit of JavaScript.
➔Test the Extension locally
$ gnome-extensions create --interactive
You’re done!
(if you only want to use that new Extension locally)

$ ./demo.js

Publishing your GNOME Extension
➔Make the source code available
somewhere publicly (eg. GitHub)
➔Upload the packed Extension to the
GNOME Extensions site
➔Extension Review process
➔Extension goes live, available for GNOME
users to find in the search and install
➔Maintain your Extension

Maintaining your Extension
➔You aren’t technically obligated
to maintain your Extension
➔Each major GNOME version upgrade
intentionally disables Extensions!
➔Maintainers must update Extensions
for new GNOME versions
➔Best case: No code changes needed,
only metadata needs to be updated
➔Maintainers vary on attention to updates
➔Update your Extension ahead of the official
release of new GNOME versions.
➔Use the beta or RC releases of GNOME
“plumbing_pipe_wrench_plumber_repair_maintenance_fix_renovation”. The image is dedicated to the public domain under CC0.

Extension Metadata
“Networking” by Charles Rondeau released under CC0 Public Domain

How I became a maintainer
➔It was 2019. I was using an existing GNOME Extension to do
one simple thing: display my local IP address in the top bar
➔Extension had shortcomings
◆Displays wrong address when doing a lot of
development work with Docker containers locally
◆Sometimes would show loopback address (127.0.0.1)
◆Showed private VPN address when VPN was up
➔Extension maintainer seemed no longer active
➔No luck finding an alternative Extension

Path from user to maintainer
Goal:
Fix the thing,
just for me
Not
really a
JS dev
Fumble through
the docs and code
to make it work
Success!
It works
for me.
I can’t be
the only
user with
this need?
Share the
solution as
open-source
Bug fixes and
periodic
updates
required
Accidentally
became a
sole
maintainer

My Extension: LAN IP Address

Sole Maintaner Responsibilities
Developer
Release Manager
Security Engineer
Communications
Product Manager
(scope)
QA
UX
Issue Management

Perspectives as a sole maintainer
Being a sole maintainer
can be a lot of work
… or not, if you
manage your scope

Perspectives as a sole maintainer
Contributing back
to open-source
can be rewarding

“High Resolution Abstract Wallpaper 1” by deviantart.com/designsplash is licensed under CC BY-NC 3.0
User Reviews

Perspectives as a sole maintainer
Being a maintainer
helps make you a
better contributor to
other projects

Recap
1. Linux Desktop and GNOME Shell
2. How to make a GNOME Extension
3. How I became a maintainer
4. Perspectives as a sole maintainer

Takeaways Don’t be daunted
You don’t need to be expert
or even good at coding.
More accessible than ever
with YouTube videos and AI
code assistants.

Start small right now!
Pick something small that
doesn’t have an existing
solution to your liking.
“Scratching your own itch”
by working on something
you want is motivating. You
are user #1.

Big projects can
come later
Don’t get paralyzed thinking
about a grand project.
Small projects will likely
lead you to bigger projects
anyway..

Give Desktop Linux
a try
Easy if you have a spare
machine
Dual booting is another
option
Gain skills and
experience running
your own project
Add it to your resume.
Control the scope
You know your resource
limits. Stick to it to avoid
burnout.

Links
These Slides
docs.google.com/presentation/d/1BzvRpsCkU_Q-ToRNRVg9SOb9eJewES_z4F85ydSKM7w
GNOME Extension LAN IP Address
extensions.gnome.org/extension/1762/lan-ip-address/
GitHub repo for LAN IP Address
github.com/Josholith/gnome-extension-lan-ip-address
LinkedIn
linkedin.com/in/jhuber1
Q&A


Thanks!

References
1.Desktop Linux Market Share Report October 2025, itsfoss.com/linux-market-share/
2.KDE vs GNOME - Which is Better Desktop Environment, 23 Jul 2025,
www.geeksforgeeks.org/blogs/kde-vs-gnome/
3.GJS Guide - gjs.guide/extensions/development/creating.html