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 of 26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 ...
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 I developed as a side project during my free time. While not my primary career focus, it has provided me with invaluable experience in open-source collaboration and development practices. My journey began when I sought an alternative to an abandoned extension and the need for specific features that existing extensions lacked. In true open-source spirit, by solving my own problem, I shared the solution with the community and it has been downloaded 75k+ times from the GNOME Extensions store and has been mentioned in articles/blogs as a “must-have” extension. The code is on GitHub where use the issue tracker for task management and PRs for feature updates.
Being a sole maintainer, I have to wear all the hats: issue triage, prioritizing feature requests, coding in JavaScript, QA testing, security, releases, and public communications. My approach centers on simplicity, focusing on essential features to keep the complexity minimized as a side project.
In this session, I will show visuals of the tools and resources used to maintain my project. If time permits I will show a 5-minute demo on creating a basic GNOME Shell extension from scratch.
Attendee Takeaways
This session aims to highlight the satisfaction of contributing to open-source as a sole project maintainer, while giving a real-life perspective on what being a sole maintainer involves. At the end of this session, attendees will have gained helpful insights to empower them to be able to be a sole maintainer of their own open-source projects, as well as being a better contributor to other projects.
Find more info about All Things Open:
On the web: https://www.allthingsopen.org/
Twitter: https://twitter.com/AllThingsOpen
LinkedIn: https://www.linkedin.com/company/all-things-open/
Instagram: https://www.instagram.com/allthingsopen/
Facebook: https://www.facebook.com/AllThingsOpen
Mastodon: https://mastodon.social/@allthingsopen
Threads: https://www.threads.net/@allthingsopen
Bluesky: https://bsky.app/profile/allthingsopen.bsky.social
YouTube: https://www.youtube.com/@allthingsopen
2025 conference: https://2025.allthingsopen.org/
Size: 4.97 MB
Language: en
Added: Oct 20, 2025
Slides: 26 pages
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
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