https://gitlab.gnome.org/GNOME/gnome-shell/issues/530#note_308621
Ниже приведен ответ разработчика gnome-shell:
Итак, мой вопрос: должен ли я использовать синтаксис класса es6 для расширений оболочки и использовать новую платформу Lang.Class () для внесения вклада в саму gnome-shell?
На данный момент: да.
Поддержка классов ES6 в gjs все еще относительно нова, поэтому вы все еще находите много применений инфраструктуры Lang.Class, которая использовалась ранее. А в случае с gnome-shell есть дополнительное усложнение в виде расширений:
const Lang = imports.lang;
const Foo = new Lang.Class({
Name: 'Foo'
});
// this works
class Bar extends Foo {}
class Baz {}
// this doesn't
var Quz = new Lang.Class({
Name: 'Quz',
Extends: Baz
});
План, конечно, состоит в том, чтобы портировать gnome-shell для использования классов ES6, но он сломает все расширения, которые все еще используют Lang.Class для наследования от класса, определенного в gnome-shell. Так что это не то, к чему мы должны постепенно проникать, а скорее явный переход с достаточной свободой действий для разработчиков расширений, чтобы адаптировать их код в случае необходимости (я надеюсь выбрать локальную ветку в начале цикла 3.32, поэтому постучите по дереву).
Итак, TL; DR:
Новые приложения или расширения должны окончательно использовать классы ES 6, и я бы порекомендовал разработчикам уже существующих серьезно подумать о портировании.
В более общих терминах: использование системы отслеживания проблем в качестве форума поддержки крайне неэффективно, потому что любые ответы, как правило, переходят в неизвестность, когда проблема закрыта, поэтому, вероятно, никто, кроме первоначального «репортера», не получит от них никакой выгоды. Это приводит к довольно плохому использованию времени разработчика (которое не тратится на исправление реальных проблем).