The new extension mechanism in the jupyter server will differ from notebook's server extensions.
The --sys-prefix installation would become the default. (Users are confused when enabling an extension requires more permissions than the installation of the package). Installation in system-wide directories would be done with the --system option.
Installing an extension will include the addition of a 'manifest' file into a conf.d directory (under one of the Jupyter configuration directories, user / sys-prefix / system). The placement of such an extension manifest provided by a Python package can be done with jupyter server extension install --py packagename [--user / --system / --sys-prefix]. Packages (conda or wheels) carrying server extensions could place such manifests in the sys-prefix path by default effectively installing them. Development installations would also require the call to the installation command.
Enabling an extension is separate from the installation. Multiple scenarios are possible:
enabling an extension at the same level (user / sys-prefix / system) as where it was installed, or at a higher level (user for sys-prefix and system, or sys-prefix for system).
forcibly disabling an extension that was enabled at a lower level of precedence.
forcibly enabling an extension that was disabled at a lower level of precedence.
This would be done via two conf.d configuration directories managing a list of disabled extensions and list of enabled extensions in the form of empty files having the name of the corresponding extension. If an extension is both disabled and enabled at the same level of precedence, disabling has precedence. Packages (conda or wheels) could place such a enabler file in the sys-prefix path by default. The jupyter server extension enable command would be required for development installations.
(Possibly) when an extension is enabled at a given precedence level, it may only look for the version of the extension installed at the same or lower precedence level. For example, if an extension foobar is installed and enabled system wide, but a user installs a version with --user, this version will only be picked up if the user also enables it with --user.
From JEP 0028 (Jupyter Server):
Opening this issue for further discussion.