Hi Fedora Community!
I’m interested in developing a native libdnf5-snapper plugin to replace the current Actions plugin workaround, and I’m looking for potential collaborators or existing work.
Background:
- The python3-dnf-plugin-snapper works great with dnf4 but is incompatible with dnf5’s C++ architecture
- Current “solution” requires users to manually configure libdnf5-plugin-actions with shell scripts
- This feels like a significant regression in user experience compared to the seamless dnf4 plugin
Why Actions plugin isn’t sufficient:
- No proper error handling or logging integration
- No configuration system for plugin-specific settings
- Fragile shell-script based snapshot linking
- Missing intelligent transaction state management
- No support for selective package filtering (important packages vs. regular packages)
- Users report issues like missing package descriptions in snapshots
My technical approach:
- Native C++ libdnf5 plugin using direct libsnapper API integration (following current Fedora packaging guidelines for shared library usage)
- Inspired by openSUSE’s proven zypper-plugin architecture rather than the legacy dnf4-plugin D-Bus approach
- Intelligent package classification - mark kernel/systemd/glibc updates as “important” for better cleanup policies
- Configurable package filtering via INI configuration (similar to openSUSE’s
/etc/snapper/zypp-plugin.conf) - Robust error handling with proper fallback behavior
- Full integration with libdnf5’s transaction hooks and logging systems
Why direct libsnapper API over D-Bus:
- libdnf5 plugins run as root anyway (At least the action that triggers a transaction.)
- More reliable than D-Bus (works even during system rescue scenarios)
- Better performance and simpler error handling
- Follows current Fedora packaging best practices for shared libraries
- Consistent with how other system tools integrate with libsnapper
Development scope:
- Core functionality achievable in ~3-5 days
- Additional features (advanced configuration, package importance classification) could follow
- The foundation is solid - the dnf4 plugin logic translates well to C++ with libsnapper
Questions:
- Is anyone already working on this? I couldn’t locate existing libdnf5-snapper development
- Would the community be interested in such a contribution?
- Should this be maintained separately or integrated into existing plugin collections?
- Any objections to the direct libsnapper approach vs. D-Bus integration?
I’m happy to either collaborate on existing work or lead this development if there’s community interest. This could bring Fedora’s snapshot integration up to par with openSUSE’s mature implementation.
Thanks for any guidance!
Environment:
- Fedora 42 with Btrfs + Snapper setup
- C++ development experience with system libraries
- New to Fedora community but eager to contribute