MacPorts' design choices are deliberate. Each one trades convenience for isolation, control, or auditability — and each one has a name worth knowing.
Variants are the most-used concept. They're build-time switches declared in a port's Portfile (the MacPorts equivalent of a Homebrew formula). Some are mutually exclusive (+darwin vs +universal); some stack freely (+python312 +lua +cscope). The variant set you install becomes part of the package's identity — you can have vim +python312 and vim +ruby installed simultaneously, and switch the active one with sudo port activate.
Sandboxed builds. When MacPorts compiles a port, the build runs inside a trace sandbox that monitors all filesystem access. If a port's build script tries to touch /usr/local (which would conflict with Homebrew) or ~/Documents, the sandbox catches it. This is one reason MacPorts builds tend to be more reproducible — they're forced to declare their dependencies cleanly.
Self-contained dependencies. If you sudo port install nginx, MacPorts pulls in its own OpenSSL, its own pcre, its own zlib — never the macOS system copies. The downside is more disk; the upside is that a macOS update almost never breaks your MacPorts setup.
Snapshots are MacPorts' answer to 'macOS upgrades break everything'. Before a major macOS upgrade, run sudo port snapshot --note "before sequoia". After the upgrade and a fresh MacPorts reinstall, sudo port restore --snapshot "before sequoia" reinstalls every port (with variants) that was active before. It's the closest thing MacPorts has to a Brewfile.