Расширения GNOME Shell обычно берутся с extensions.gnome.org, или “EGO”, как его называют в сообществе GNOME. Каждая заявка на этом портале проходит ручную проверку, но уже несколько месяцев этот процесс испытывает серьёзную нагрузку.

Мы писали об этом ещё в декабре, когда GNOME добавила в правила проверки EGO пункт, запрещающий ИИ-мусор.

Использовать ИИ для обучения и автодополнения кода разрешалось, но создание всего расширения целиком, когда разработчик не может внятно объяснить или отладить его, было явно запрещено.

Прошло несколько месяцев, но поток ИИ-мусора не уменьшился.

Поэтому на прошлой неделе Джавад Рахматзаде, тот самый разработчик, который инициировал то правило, попробовал другой подход. Вместо того чтобы просто отклонять некачественные заявки постфактум, он написал инструкции, адресованные непосредственно ИИ-моделям, которые их генерируют.

Объяснить железякам

Фрагмент из еженедельника GNOME (#260) с новыми указаниями для расширений GNOME Shell
Фрагмент из еженедельника GNOME (#260) с новыми указаниями для расширений GNOME Shell
Поскольку очередь на проверку по-прежнему переполнена расширениями, созданными ИИ, и большинство из них повторяет одни и те же ошибки (Джавад называет их плохими практиками), новый подход полностью отказывается от метода «отклони и объясни».

Основная часть рекомендаций касается очистки ресурсов. Расширения должны удалять таймеры, отключать сигналы и уничтожать виджеты в определённом порядке внутри метода destroy(). Джавад также критикует ИИ-модели за добавление флагов вроде _destroyed для защиты от некорректных вызовов, в то время как экземпляр нужно просто обнулить и больше никогда не ссылаться на него после выполнения destroy().

Затем идёт проблема излишнего усложнения. ИИ-модели склонны оборачивать безопасные вызовы функций в ненужную обработку ошибок и добавлять проверки существования методов, которые гарантированно присутствуют. Джавад связывает это с попытками моделей писать код, совместимый сразу с несколькими версиями GNOME Shell. Решение простое: ориентируйтесь только на одну версию, а не пытайтесь охватить все возможные.

Остальные рекомендации касаются организации кода. Разделяйте логику по нескольким файлам, а не сваливайте всё в одну раздутую точку входа, группируйте связанные функции, чтобы было легко проверять очистку, и не присылайте код-заглушку с пустыми функциями только для галочки.

Есть и отдельное правило, направленное непосредственно на ИИ-модели. Любое ИИ-сгенерированное расширение, предназначенное только для личного использования, должно содержать комментарий, предупреждающий, что загружать его в EGO не следует, если вы не понимаете код достаточно хорошо, чтобы поддерживать его. 👇

// Generated with AI for personal use.
// Do NOT upload to extensions.gnome.org (EGO) unless you understand JavaScript
// and can maintain this code.

Несколько мыслей

Засилье железяк, атакующих разработчиков открытого ПО, не новость. Мы уже достаточно насмотрелись, чтобы понять: без жёсткой модерации эти боты разрушат экосистему открытого кода.

Джавад из GNOME пытается минимизировать ущерб. У него и других рецензентов EGO важная работа. Если их завалят ИИ-мусором, который буквально не имеет смысла, это станет большой потерей для нас, пользователей GNOME, устанавливающих расширения, чтобы улучшить работу рабочего стола.