{"id":229,"date":"2026-10-13T18:32:48","date_gmt":"2026-10-13T16:32:48","guid":{"rendered":"https:\/\/linuxundich.de\/en\/?p=229"},"modified":"2026-10-13T18:32:48","modified_gmt":"2026-10-13T16:32:48","slug":"gnome-needs-volunteers-extensions-team","status":"publish","type":"post","link":"https:\/\/linuxundich.de\/en\/gnome-needs-volunteers-extensions-team\/","title":{"rendered":"GNOME Needs Volunteers for the Extensions Team: EGO Reviews Are Drowning in AI Submissions"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">If you use GNOME Shell extensions, you know <a href=\"https:\/\/extensions.gnome.org\/\">extensions.gnome.org<\/a>, EGO for short, as the central place to get them. Every extension there is reviewed by humans before it goes live. And according to a <a href=\"https:\/\/blogs.gnome.org\/jrahmatzadeh\/2026\/10\/12\/help-ego-team\/\">call from Javad Rahmatzadeh<\/a>, those very humans are increasingly at their limit. The whole post reads like a cry for help, and in my eyes that is exactly what it is.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Javad joined the team in 2020 because documentation for Shell extensions was missing back then. So YouTube tutorials came first, and later, on invitation from Sriram Ramkrishna and his GNOME Extensions Rebooted project, the Port Guide for GNOME Shell 40. It helped many authors move from GTK3 to GTK4, and according to Javad, plenty of them would have given up without it.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acec6be1097c&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acec6be1097c\" class=\"wp-block-image wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" height=\"927\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" srcset=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-aufruf-javad-blog.de_-640x464.webp 640w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-aufruf-javad-blog.de_-768x556.webp 768w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-aufruf-javad-blog.de_-1280x927.webp 1280w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-aufruf-javad-blog.de_-1536x1113.webp 1536w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-aufruf-javad-blog.de_.webp 1597w\" width=\"1280\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-aufruf-javad-blog.de_-1280x927.webp\" alt=\"The blog post on blogs.gnome.org with the Ecosystem header image, followed by the first paragraphs about the beginnings in 2020.\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Javad&#8217;s call in the GNOME blog starts by looking back at 2020, when documentation for Shell extensions was still missing.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Today all the <a href=\"https:\/\/gjs.guide\/extensions\/\">documentation<\/a> you need for your own extensions exists. Still, many people vibe-code their extensions and submit them to EGO without ever having looked at the docs. That leaves Javad with the feeling that the documentation feeds LLMs more than human developers. Since early 2025 submissions have exploded, and the vast majority are AI-generated.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acec6be10d99&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acec6be10d99\" class=\"wp-block-image wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" height=\"927\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" srcset=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-ego-startseite.de_-640x464.webp 640w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-ego-startseite.de_-768x556.webp 768w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-ego-startseite.de_-1280x927.webp 1280w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-ego-startseite.de_-1536x1113.webp 1536w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-ego-startseite.de_.webp 1597w\" width=\"1280\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extensions-ego-startseite.de_-1280x927.webp\" alt=\"Browser window with extensions.gnome.org sorted by popularity: lock screen extensions at the top, the call for volunteers in the second tab.\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">On extensions.gnome.org the extensions are spread over 332 pages, and a human reviewed every single one of them beforehand.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For years Javad has answered questions daily and reviewed extensions, often 4 to 10 hours a day. That work is unpaid and easily matches a full-time job, while monthly donations sit close to zero. The result: Javad is close to burnout and writes that without financial support it won&#8217;t be possible to keep going at this pace. At least there was the <a href=\"https:\/\/www.youtube.com\/live\/Q4O7dhreLDU?t=4081\">GNOME Pants Award<\/a> in 2026.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The main problem is quality. Extensions run directly inside the GNOME Shell process, so bad AI code threatens the stability of the whole desktop. According to Javad, LLMs produce needlessly complex, hard-to-read code that takes much longer to review. Some submitters even let an AI write their replies, and once the instructions meant for the model accidentally ended up in the text.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is a bright spot, though: Javad&#8217;s <a href=\"https:\/\/blogs.gnome.org\/jrahmatzadeh\/2026\/07\/27\/ego-ai-reference\/\">open letter to AI models<\/a> corrected specific code patterns the models kept getting wrong. Within a few weeks most of those mistakes were gone. Javad sees that as good news, but also as proof of how heavily the documentation feeds the models. That doesn&#8217;t solve the review problem itself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Who Is Needed?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>Reviewers:<\/strong> Developers who know GTK and the GNOME Shell source code. The role is voluntary, and availability during the week should be consistent. Javad offers mentoring and will teach you the review process.<\/li>\n\n\n<li><strong>Shexli helpers:<\/strong> The <a href=\"https:\/\/github.com\/NiffirgkcaJ\/shexli-gnome-extension\">linter<\/a> has existed for a few months and is meant to make reviews easier. Reviewers report false negatives and false positives, and whoever helps fixes them in Shexli. The team needs someone who improves the linter.<\/li>\n\n\n<li><strong>Donors:<\/strong> If you want to support the work financially, there is a <a href=\"https:\/\/jrahmatzadeh.pages.gitlab.gnome.org\/ego-donations\/\">donation page<\/a>.<\/li>\n\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to join the review team or help with Shexli, get in touch on the Matrix channel <a href=\"https:\/\/matrix.to\/#\/#extensions:gnome.org\">#extensions:gnome.org<\/a>. Javad names no deadline, but does give a reason to hurry: without more help, things can&#8217;t go on at this pace. So better sooner than later, even for a first question with no commitment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In my eyes this is a wake-up call for everyone who uses GNOME extensions day to day. Without reviewers there are no vetted extensions, and without those, many of us would be missing a good piece of GNOME. If you have the time and the know-how, think about it seriously. Everyone else can at least throw a few euros into the donation jar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ahem. Me Too.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I have to admit I feel called out here myself. With <a href=\"https:\/\/linuxundich.de\/en\/projects\/pulsgeber\/\">Pulsgeber<\/a> I wrote a GNOME Shell extension that was built with AI assistance. And yes, I have real respect for the step of submitting it to EGO. The thought that someone has to go through the resulting code line by line makes me a bit uneasy. I don&#8217;t want to dump work on anyone, least of all a team that is already running at its limit.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6acec6be11597&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6acec6be11597\" class=\"wp-block-image wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" height=\"855\" sizes=\"auto, (max-width: 781px) 100vw, 680px\" srcset=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extension-pulsgeber.de_-640x428.webp 640w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extension-pulsgeber.de_-768x513.webp 768w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extension-pulsgeber.de_-1280x855.webp 1280w, https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extension-pulsgeber.de_.webp 1420w\" width=\"1280\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/linuxundich.de\/wp-content\/uploads\/2026\/10\/gnome-extension-pulsgeber.de_-1280x855.webp\" alt=\"The TUXEDO Control Center in the background, on the right the opened Quick Settings with the TCC Profile tile and the choices Default, Cool and breezy and Powersave extreme.\"\/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Pulsgeber puts the TUXEDO profiles into the GNOME Quick Settings: you then pick the device&#8217;s power profiles without detouring through the Control Center.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Still, in my eyes you shouldn&#8217;t brand every AI contribution as AI slop. Such extensions move a lot of things forward and enable features that used to be out of reach. In the end what counts is the quality of the code, not the tool it came from. The problem is unreviewed masses, not AI itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Behind all this lies a question for me: AI code is quickly generated, but someone still has to read and review it. That probably doesn&#8217;t only hit EGO, but every project that takes contributions from outside and checks them before release. What do you think: is the flood of AI submissions a problem on other platforms too, and how should projects deal with it?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Javad Rahmatzadeh volunteers to review extensions for extensions.gnome.org and is now asking for help. The team needs reviewers, people to improve the Shexli linter, and donations.<\/p>\n","protected":false},"author":2,"featured_media":230,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"lui_source_id":48021,"lui_source_hash":"ffa25887cc329ab429e1cdcec6da0d3c88d48e1b0b1b0981c8ae4095573d9250","lui_source_translated":"2026-10-13","lui_source_reviewed":true,"lui_via_url":"","lui_via_label":"","lui_source_url":"","lui_source_label":"","footnotes":""},"categories":[2],"tags":[36,10,34,35,26],"class_list":["post-229","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gnu-linux","tag-ai","tag-gnome","tag-gnome-extensions","tag-gnome-shell","tag-news"],"_links":{"self":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/comments?post=229"}],"version-history":[{"count":1,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/229\/revisions"}],"predecessor-version":[{"id":231,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/posts\/229\/revisions\/231"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media\/230"}],"wp:attachment":[{"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/media?parent=229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/categories?post=229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxundich.de\/en\/wp-json\/wp\/v2\/tags?post=229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}