>
Linux

It is Time for a Modern Synaptic Package Manager

It is Time for a Modern Synaptic Package Manager

By drunkUncle

I have been using Linux for a long time, and there is something that has been bothering me lately. We have gained a lot with the app store model, but we have lost something important in the process. Synaptic (the GTK-based graphical front end for APT that was the default package manager UI on Debian and Ubuntu for years) is still my reference point for what a package manager should feel like. Every new package manager I try, from the GNOME Software center to Flatpak portals to Snap store, falls short in some specific way that Synaptic got right twenty years ago. I want to talk about what Synaptic did, why the modern replacements do not measure up, and what a modern Synaptic would actually look like.

What Synaptic did that nothing else does

Synaptic presented every package in the repository as a row in a list. Each row had a name, a version, a short description, the installed size, the maintainer, and a checkbox indicating whether the package was installed. You could sort by any column. You could filter by name, by description, by section, by status (installed, not installed, upgradable, residual config). You could right-click a package and see its full dependency tree, its reverse dependencies (the list of other packages that depend on it), the files it would install, and the changelog (a log of what changed in each version, written by the package maintainer). You could mark packages for installation or removal, review the full set of changes before committing, and abort cleanly if you changed your mind.

The thing that made Synaptic good was not any one feature. It was that every feature was visible. You could see exactly what was about to happen, why it was about to happen, and what the consequences were. There was no hidden state. There was no opaque recommendation engine. There was no “smart” grouping that hid the actual install path behind a tile. The list was the list. The diff was the diff.

That level of transparency is what a package manager should be. Installing software on a system is a load-bearing decision. It modifies shared libraries, changes default file associations, adds startup hooks, and sometimes pulls in services that listen on the network. A user deserves to see all of that before clicking install. Synaptic made the pre-commit review the centerpiece of the workflow. Every modern replacement I have tried treats the pre-commit review as an afterthought.

What the modern replacements do instead

GNOME Software, KDE Discover, and the elementary AppCenter are all built on the app store model. The package is a tile. The tile has an icon, a name, a one-line description, a star rating, and a single Install button. The user does not see the dependency tree. The user does not see the maintainer. The user does not see the version that is about to be installed, the files that will be added, or the services that will be enabled. The user sees a button.

This is a fine model for discovering a single application and clicking install. It is a bad model for managing a system. A user who wants to understand why a system update is pulling in a new version of libc (the C standard library that nearly every program on a Linux system depends on) cannot get that information from GNOME Software. A user who wants to see what a particular package depends on cannot get that information. A user who wants to read the changelog before upgrading cannot get that information without leaving the app store and going to a web browser.

Flatpak and Snap add another layer of opacity on top. A Flatpak is a bundle that includes its own copy of every library it needs, so the dependency tree is not visible to the system package manager. The user cannot see what version of GTK a Flatpak is shipping. The user cannot see the security update history of a Flatpak the same way they can see it for a deb. The Flatpak portal exposes some of this through the FlatHub page, but that page is in a web browser, not in the package manager UI.

What a modern Synaptic would look like

The interesting question is whether a Synaptic-style package manager is buildable today with modern UI conventions. I think the answer is yes, and I think it is overdue. The shape it would take is roughly this.

A list view as the primary UI, with the same columns Synaptic had. A filter bar across the top with the same filter axes (name, description, section, status, maintainer, source repo). A right panel that shows the package details (full description, maintainer, version, dependencies, reverse dependencies, file list, changelog, available versions across repos). A mark-for-action list at the bottom that shows the full set of pending changes with a one-line summary of each, expandable to show the full diff. A commit button that shows a final summary of the changes and asks for confirmation.

The list view is the controversial part. Modern UX (user experience) conventions favor cards and tiles for discovery. But for management, the list is correct. When you are managing a system, you want to see many packages at once. You want to compare them. You want to filter them. A card view makes all of that harder. The list is the right tool for the job, and the modern package manager UIs that have moved away from the list have made a real usability trade-off in favor of visual appeal.

The mark-for-action list is the other piece that matters. Without it, every package change is its own commit, and the user has no way to review a batch of related changes together. With it, the user can stage a set of changes, see the combined impact, and then commit them as a single transaction. This is the pattern that Synaptic got right and that every modern UI has dropped.

What I am not asking for

I am not asking for a return to the GTK 2 aesthetic. Synaptic looked like a 2005 application because it was a 2005 application. The visual design has aged out. A modern Synaptic should look like a 2026 application: clean typography, light or dark theme, sensible keyboard navigation, accessible to screen readers. The visual layer is not the point. The interaction model is the point.

I am also not asking for a return to the underlying package format. Debs and apt work fine. The format is not the bottleneck. The bottleneck is the UI layer that sits on top of the format. A modern Synaptic could be a front end for apt, for dnf (the package manager used by Fedora and RHEL), for pacman (the package manager used by Arch Linux), or for Flatpak. The choice of underlying format is orthogonal to the choice of interaction model.

Trade-offs

The honest trade-off is that a Synaptic-style UI is harder to build than a card-style app store. The list view, the filter bar, the detail panel, and the mark-for-action list are more engineering work than a tile grid. A small team at a distribution vendor would have to commit to building and maintaining it. The market pressure is in the other direction. App stores get the design awards. Lists do not.

The other trade-off is discoverability. A card-based app store is better at helping a new user find a video player than a list view is. The card surfaces recommendations, ratings, and screenshots. The list does not. For a new user, the card is the right starting point. For a user who already knows what they are looking for, the list is the right tool. A modern Synaptic would not replace the app store. It would complement it. The app store is for discovery. The Synaptic is for management.

If you are a distribution maintainer, the case for building a modern Synaptic is that you have a population of power users who currently resort to the command line to get the visibility they need. The command line is fine. But a well-designed GUI is faster for the common case (reviewing a batch of updates, finding a package by name, checking the reverse dependencies of a library) than typing apt commands. Bringing those users back to a GUI is a real win for the distribution.

What I would tell past me

If I could send a message back to the version of me that first installed Debian in 2004, I would say four things.

  • Synaptic is the high water mark for package management UX. Every modern replacement has to be measured against it. Most of them fall short in specific ways that the Synaptic design anticipated.
  • Transparency beats recommendation. A list with filters is more useful than a tile with a star rating when the user knows what they want. The shift to recommendation-driven UIs has hurt power users more than it has helped new users.
  • The diff is the product. The act of reviewing a set of changes before committing them is the load-bearing interaction. Every package manager should center that interaction in the UI. Most modern ones hide it.
  • Build for the second hour, not the first. The first hour of a Linux install is fine with an app store. The second hour, when the user starts to manage the system, is where the modern UIs fall down. A modern Synaptic is a second-hour tool.

Bottom line

Synaptic got the package manager interaction model right in 2005. Twenty years later, the modern replacements have not matched it. The case for building a modern Synaptic is the case for bringing the list view, the filter bar, the mark-for-action list, and the pre-commit review back to the center of the workflow. The visual design should be 2026, not 2005. The interaction model should be Synaptic. If you are a distribution maintainer, this is a real project with a real audience. If you are a user, the closest you can get today is the command line. That is fine. It is also a shame.

Leave a comment