The past thirteen days have been among the busiest in FreshPorts history: twenty-two pull requests merged, seven people contributing, and changes to almost every page on the site. Here are the highlights.
FreshPorts speaks your language
FreshPorts can now be translated (#678), and five translations are ready:
- Deutsch, by Stefan Eßer
- Français (Canada), by Marc Pearson
- Türkçe, by Yusuf Yaman
- Português (Brasil), by Gustavo Nobrega
- 简体中文, by ykla
Pick your language at the top of any page. You do not need to be logged in. Day and month names follow your choice, and account emails are now sent as UTF-8 and translated too.
Port names, descriptions, and commit messages come from the FreeBSD ports tree, so they stay as they are.
Thank you to everyone who translated. If you would like to add your language, or improve an existing one, see the translation guide. All you need is a .po file and a pull request.
Phones and tablets
FreshPorts is now usable on phones and tablets (#636). On narrow screens the page stacks into one column, and the sidebar becomes a drawer that opens from a Menu button pinned to the top right. The search box has moved into the page header on every device, so it is always easy to find.
Choose your text size
Anyone can now pick a text size, from Smallest (75%) to Largest (150%), beside the language picker (#690). Your browser’s own text size setting still applies on top of that.
The site header, footer, and announcements keep their size whatever you choose, so the page layout stays put (#702).
Changing the text size or the language now brings you back to the same place on the page, rather than to the top.
Search finds things faster
- Searching by port name is much faster. Counting the results used to take up to 19 seconds; it now takes a few milliseconds.
- When a search finds exactly one port, you go straight to it (#653).
- When a name or package search finds nothing, FreshPorts suggests ports that might be what you meant.
- Mistyped a URL such as
/category/port/? The “not found” page now suggests alternatives instead of leaving you stranded (#614). - Package names containing
+now search correctly (#680).
Port pages
- Each section heading now has a link beside it, so you can copy a link straight to that section (#675).
- Long lines in commit messages and UPDATING entries now wrap instead of running off the page (#674).
- Build-only and run-only dependencies are now shown alongside
BUILD_RUN_DEPENDS. - Dark mode had a number of rough edges, now fixed (#598). Text now has better contrast against the dark background, and the search, watch list, and issue icons have been redrawn, with versions for both light and dark mode.
Behind the scenes
- Bots hammering the search page are now turned away, which keeps the site responsive for people (#692).
- Security advisories from VuXML are being processed again. Newer versions of the expat XML parser refused the way
vuln.xmlincludes its parts, so we now expand them before parsing. - The status page now makes problems stand out: maintenance mode, disabled logins, stopped services, and stale status are all highlighted.
- Plenty of PHP 8 fixes and general tidying.
- Our sponsor links now point to their current homes: TrueNAS (iXsystems) and NetActuate (RootBSD) (#683).
- If you visit over IPv6, you will see a new badge in the middle of the footer.
- ABI on pkg.freebsd.org which only update pkgbase are no longer listed, since they have no ports packages. The FAQ has the current list.
- Port versions are now checked against the ports INDEX every night. A port’s version can change without a commit to that port, for example when its master port or a shared Makefile changes, and FreshPorts used to miss those, sometimes for years. Each night FreshPorts compares every port with an INDEX built at the commit it has finished processing, and refreshes any port which has fallen behind. To make that comparison accurate, FreshPorts now also records each port’s package version exactly as
makereports it. For about a hundred ports which build kernel modules, such as graphics/drm-61-kmod, the package version includes the FreeBSD version it was built for, which FreshPorts could not work out before. - The FreshPorts code has finished moving from Subversion to git. Each part of the system now has its own repository on GitHub, and each has a README explaining where it came from.
Thank you
Thank you to Stefan Eßer, Marc Pearson, Yusuf Yaman, Gustavo Nobrega, ykla, and erpel for their contributions, and to everyone who reported problems. Ideas and bug reports are always welcome on GitHub.
Home Page Before

Home Page After

Port Page Before

Port Page After












