Skip to content

docs: update experimental features docs - #634

Merged
natibek merged 5 commits into
canonical:mainfrom
natibek:update-experimental-docs
Oct 22, 2026
Merged

natibek merged 5 commits into
canonical:mainfrom
natibek:update-experimental-docs

Conversation

@natibek

@natibek natibek commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Add section for previous experimental features.

SNAPDENG-36039

@natibek
natibek requested a review from ndyer October 14, 2026 05:42

@raimundo-henriques raimundo-henriques left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @natibek ! I have left some nitpick comments, mostly aiming at making the page a bit more user friendly.

| gpio-chardev-interface | Removed | 2.69 |
| per-user-mount-namespace | Removed | 2.76 |
| [layouts](https://ubuntu.com/docs/snapcraft/9/how-to/crafting/use-layouts/) | Graduated | 2.77 |
| classic-preserves-xdg-runtime-dir | Graduated | 2.77 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be possible to add links to every graduated feature?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can look around for related links. Some like the per-user-mount-namespace just has github PRs from my knowledge.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should that maybe give us pause? I mean, is there a reason for these not to be documented? I don't think we should like to PRs, though, to be clear.
Thank you!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure what the documentation goals have been for experimental features. Not sure if we document them once they are graduated and have a constant design or while working on them. I'll double check.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! Please let me know what we can find, so I can also try to make sure we stick to our plan.

@zyga zyga Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

per-user-mount-namespace is an ancient feature by now. It allows us to have user-fstab files and unshare one more mount namespace so that applications can use document portals. In practice it allows us to vary the namespace (a little, there are constraints) for each user.

CC @raimundo-henriques if ytou want to use this

| per-user-mount-namespace | Removed | 2.76 |
| [layouts](https://ubuntu.com/docs/snapcraft/9/how-to/crafting/use-layouts/) | Graduated | 2.77 |
| classic-preserves-xdg-runtime-dir | Graduated | 2.77 |
| {ref}`dbus-activation <interfaces-dbus-interface>` | Graduated | 2.77 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When we click the link, we are taken to a page titled 'dbus interface', where 'dbus-activation' never occurs. I think it would be clearer to use the title of the page we are linking to (as happens in some entries of the current experimental features table). Right now the tables are not consistent regarding how they refer to the features, but I think we could start here.

Suggested change
| {ref}`dbus-activation <interfaces-dbus-interface>` | Graduated | 2.77 |
| {ref}`dbus interface <interfaces-dbus-interface>` | Graduated | 2.77 |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The experimental feature was called dbus-activation which is related to but different from the dbus-interface. That is why it links to the interface page. It does not have a dedicated doc.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see... Thank you. As my reaction shows, I found it confusing that it liked to something with another name. Is this the pattern with the other links or are the others linking to their dedicated docs?
I would suggest not linking to anything other than what is specifically dedicated to that feature (which can be a section on a page, of course), even if it means not having links.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried finding the most approapriate links to the features. To me, it feels a bit extreme leaving out links because the page isn't about the experimental feature especially when the feature gates a specific functionality within the context of what the page discusses. I think it is better to point to the resource it relates to in that case and add to the documentation moving forward than leaving it pointing to nothing right now.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since some of them don't have links, it doesn't shock me to leave them out. But I also get your point...

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we could link to the interface and in the interface page add a paragraph about bus activation, correct usage of the interface allows a bus message to cause "bus activation" where the dormant service is started and the message delivered

Comment thread docs/reference/development/experimental-features.md Outdated
| [layouts](https://ubuntu.com/docs/snapcraft/9/how-to/crafting/use-layouts/) | Graduated | 2.77 |
| classic-preserves-xdg-runtime-dir | Graduated | 2.77 |
| {ref}`dbus-activation <interfaces-dbus-interface>` | Graduated | 2.77 |
| {ref}`refresh-app-awareness <explanation-how-snaps-work-refresh-awareness>` | Graduated | 2.77 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

Suggested change
| {ref}`refresh-app-awareness <explanation-how-snaps-work-refresh-awareness>` | Graduated | 2.77 |
| {ref}`Refresh awareness <explanation-how-snaps-work-refresh-awareness>` | Graduated | 2.77 |

@natibek natibek Oct 16, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar to quota-groups, the name of the actual experimental feature is refresh-app-awareness. I wonder if we should have another column for the name of the experimental feature and have a human readable version as well. Any thoughts, @raimundo-henriques?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a great idea, especially taking into account that this is a reference page. Once again, I was thinking about the title of the page the link takes us to. But that's an explanation page. I think it makes sense to list these with their official names and then have another column with the human-readable name (if it exists) linking to the a dedicated page (if it exists). Thanks!

| classic-preserves-xdg-runtime-dir | Graduated | 2.77 |
| {ref}`dbus-activation <interfaces-dbus-interface>` | Graduated | 2.77 |
| {ref}`refresh-app-awareness <explanation-how-snaps-work-refresh-awareness>` | Graduated | 2.77 |
| {ref}`quota-groups <how-to-guides-manage-snaps-use-resource-quotas>` | Graduated | 2.78 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here I'm not so sure. The title of the page is not the way to go, since the feature's name is not 'use ...'. I wonder whether it is accurate to use a human-friendly version of the feature's name:

Suggested change
| {ref}`quota-groups <how-to-guides-manage-snaps-use-resource-quotas>` | Graduated | 2.78 |
| {ref}`Quota groups <how-to-guides-manage-snaps-use-resource-quotas>` | Graduated | 2.78 |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The quota-groups is referencing the name for the experimental feature which does have the hypen. I think the other format for the experimental features is camel case QuotaGroups but the snake case quota-groups formatting has been the choice for the other features in this doc.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the explanation. I think the extra column might also help here, although I'm still not sure how we should refer to it there. This makes me think that maybe that extra column should be dedicated to further resources rather than to the human-readable name. WDYT?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current changes have something along these lines. I used the existing notes column to state the name and the functionality of the feature. What do you think?

| content-compatibility-label | Oct 2025 (snapd 2.72) | NO | |
| clustering | Dec 2025 (snapd 2.73) | NO | |
| remote-device-management | Apr 2026 (snapd 2.75) | NO | Remote device management via the Store, including delegating control of confdb views to operators. Currently under active development. |
| seed-refresh | Apr 2026 (snapd 2.75) | NO | |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering why were these removed here, but not added to the Previous experimental features table.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These features are not considered experimental in the same sense as the others are anymore. They are not removed or graduated. They are being treated differently.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. Wouldn't that new treatment also perhaps fit the other table, though?

@raimundo-henriques

Copy link
Copy Markdown
Contributor

One more thing I was forgetting, can you please add a metadata description to the top of the page?
Here is the a suggestion (please adapt as you see fit, but keep it between 120-160 chars):

---
myst:
  html_meta:
    description: Reference documentation for snapd's experimental features, including the feature flag mechanism, graduation process, and current and previous feature lists.
---

@raimundo-henriques raimundo-henriques left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the new version! I think it reads much better.

I've commented with some tiny nitpicks. Would you mind checking them?

I think we should maybe also put all the feature names (both kebap-case and CamelCase) between back ticks, but that's a very very tiny detail and can be done separately.

Comment thread docs/reference/development/experimental-features.md Outdated
Comment thread docs/reference/development/experimental-features.md Outdated
Comment thread docs/reference/development/experimental-features.md Outdated
Comment thread docs/reference/development/experimental-features.md Outdated
Comment thread docs/reference/development/experimental-features.md Outdated
Comment thread docs/reference/development/experimental-features.md Outdated

@zyga zyga left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

README.rst instructions don't work anymore (make is gone). I checked this in a markdown preview.

@natibek

natibek commented Oct 21, 2026

Copy link
Copy Markdown
Contributor Author

@zyga, the make lives in the docs directory. The instructions should work from there.

@andrewphelpsj andrewphelpsj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some corrections to make

| Name | Feature Flag | Date Introduced | Enabled by Default | Notes |
| :--- | :----------- | :-------------- | :----------------- | :---- |
| {ref}`Hotplug <interfaces-hotplug-support>` | hotplug | Jul 2018 (snapd 2.34) | NO | It controls the availability of dynamically creating slots based on system hardware. Currently only serial ports are supported (serial-port interface). |
| {ref}`ParallelInstances <interfaces-parallel-installs>` | parallel-installs | Jun 2018 (snapd 2.34) | NO | It controls the availability installing a snap multiple times. Layouts are not working properly with parallel installs due to problems with persistent mounts. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| {ref}`ParallelInstances <interfaces-parallel-installs>` | parallel-installs | Jun 2018 (snapd 2.34) | NO | It controls the availability installing a snap multiple times. Layouts are not working properly with parallel installs due to problems with persistent mounts. |
| {ref}`ParallelInstances <interfaces-parallel-installs>` | parallel-instances | Jun 2018 (snapd 2.34) | NO | It controls the availability installing a snap multiple times. Layouts are not working properly with parallel installs due to problems with persistent mounts. |


| Name | Feature Flag | Graduated/Removed | Release | Notes |
| :--- | :----------- | :---------------- | :------ | :---- |
| RobustMountNamespaceUpdates | robust-mount-namespace-updates | Graduated | 2.67 | It controlled how snap-update-ns updates existing mount namespaces. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| RobustMountNamespaceUpdates | robust-mount-namespace-updates | Graduated | 2.67 | It controlled how snap-update-ns updates existing mount namespaces. |
| RobustMountNamespaceUpdates | robust-mount-namespace-updates | Graduated | 2.68 | It controlled how snap-update-ns updates existing mount namespaces. |

| HiddenSnapDataHomeDir | hidden-snap-folder | Aug 2020 (snapd 2.46) | NO | It controls whether snap data is stored in ~/.snap/data instead of ~/snap. |
| UserDaemons | user-daemons | Aug 2020 (snapd 2.46) | NO | It controls the availability of user mode service support. Snapcraft needs to enable the `daemon-scope` setting. |
| {ref}`CheckDiskSpaceInstall, CheckDiskSpaceRemove, and CheckDiskSpaceRefresh <how-to-guides-manage-snaps-disk-space-awareness>` | check-disk-space-install, check-disk-space-remove, check-disk-space-refresh | Sept 2020 (snapd 2.47) | NO | Disk space awareness controls free disk space checks on snap install, remove, and refresh. Needs better testing. |
| [GateAutoRefreshHook](https://documentation.ubuntu.com/core/explanation/refresh-control) | gate-auto-refresh-hook | Apr 2021 (snapd 2.50) | NO | It enables refresh control from snaps via the gate-auto-refresh hook. This functionality has mostly been replaced by Validation sets. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this feature should be documented as removed. we've permanently disabled it, but just left the code in so that we can bring it back if someone complains

| MoveSnapHomeDir | move-snap-home-dir | Jul 2022 (snapd 2.57) | NO | It controls whether snap user data under ~/snap (or ~/.snap/data) can be moved to ~/Snap.|
| {ref}`Confdb <explanation-how-snaps-work-confdb-configuration-mechanism>` | confdb | Apr 2024 (snapd 2.62) | NO | It enables experimental configuration via confdb views. |
| AppArmorPrompting | apparmor-prompting | Apr 2024 (snapd 2.62) | NO | It enables AppArmor to prompt the user for permission when apps perform certain operations. Currently under active development. |
| {ref}`RefreshAppAwarenessUX <explanation-how-snaps-work-refresh-awareness>` | refresh-app-awareness-ux | Apr 2024 (snapd 2.62) | YES | It enables experimental UX improvements for refresh-app-awareness. There are some bugs that need to be addressed. Currently under active development. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

graduated in 2.79.

@natibek
natibek requested a review from andrewphelpsj October 22, 2026 15:13

@andrewphelpsj andrewphelpsj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, please reconcile the parallel-instances default status with Katie.

@natibek
natibek merged commit 4f10d61 into canonical:main Oct 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants