Robin FWIW, there are both extremely good and extremely bad points about FreeBSD & GhostBSD. Here is a published article I wrote about what could be improved in FreeBSD which relates directly to GhostBSD. Changes to the filesystem and replacement of dotfiles are two of many issues. :-)
Unix has always been practical. Its structure evolved from necessity, shaped by real-world constraints and engineering trade-offs. The early days of computing didnβt allow for elaborate hierarchies or theoretical purity; everything had to fit within the limits of available storage, memory, and processing power. As a result, many of the conventions we take for granted today, dotfiles in home directories, the division of system configuration across /etc/, /usr/, and /var/, grew out of those limitations.
The problem is that while hardware and software have evolved, the Unix filesystem structure has mostly remained the same. This persistence isnβt entirely a bad thing; Unixβs longevity is due in large part to its stability and consistency. But stability should not be mistaken for perfection. Certain aspects of the traditional Unix filesystem are inefficient, redundant, or simply artifacts of an era when computing had different needs.
Take dotfiles, for example. Every Unix user is familiar with the clutter of hidden files in their home directory: .bashrc, .vimrc, .config/, .local/share/, .cache/, and many others. This system evolved naturally as applications needed a place to store user-specific settings, and since early Unix systems lacked a dedicated configuration directory for users, applications simply dumped their files into [$HOME]. Over time, this became standard practice. But it was never particularly elegant, and as applications proliferated, home directories became increasingly messy.
A better approach is to introduce a dedicated, structured directory for user settings, separating configurations from personal files. Instead of scattering dotfiles throughout the home directory, each user has a clearly defined location within /config/users/<username>/, where all personal configurations are stored. This means shell settings like .bashrc or .zshrc move into /config/users/<username>/shell/, graphical settings move to /config/users/<username>/gui/, and application configurations have a structured home in /config/users/<username>/applications/. By removing dotfiles from home directories, the filesystem becomes cleaner and easier to manage.
This approach is not limited to user configurations. The traditional /etc/ directory has long been a catch-all for system settings, storing everything from networking configurations to daemon settings and kernel parameters. Over time, it has grown into a sprawling directory filled with files that may or may not follow any standard naming or organizational structure. By replacing /etc/ with /config/, the structure becomes more logical and predictable. System initialization settings live in /config/init/, network settings in /config/network/, security settings in /config/security/, and so on. The messy sprawl of /etc/ is replaced with a hierarchy that makes sense.
One of the long-standing debates in Unix-like systems is the division of responsibilities between /usr/, /var/, and /bin/. Originally, /usr/ was intended to store user applications and data, while /bin/ and /sbin/ contained essential system utilities. Over time, however, /usr/ became home to an increasing number of system files, while /var/ took on a role as a dumping ground for logs, caches, and runtime data. The distinction between these directories is no longer as clear or as useful as it once was. A modern system benefits from rethinking this layout while maintaining compatibility with existing tools.
With a structured filesystem, /usr/ remains a place for user-facing applications and tools, /var/ strictly holds runtime data, logs, and caches, and /config/ becomes the centralized location for system-wide and user-specific configurations. Logs, which historically have been scattered across /var/log/, /Library/Logs/, and individual application directories, are unified under /var/log/ but linked appropriately for access through /Library/Logs/. This organization ensures that logs, caches, and temporary files are always in predictable locations.
Another improvement comes in handling mounted filesystems and network shares. Historically, Unix systems have used both /mnt/ and /media/ for mounting removable drives, while network filesystems are either mounted arbitrarily or through NFS-specific paths. A more organized approach consolidates all removable and network-mounted filesystems under /media/ for clarity and consistency. Similarly, /srv/ is restructured to properly handle hosted services, such as web servers, databases, jails, and virtual machines, keeping all hosted services contained within their proper namespace.
The changes extend beyond just reorganizing directories. They also make administration simpler. By structuring system and user configurations logically, it becomes easier to back up and restore configurations, apply system policies consistently, and manage settings across different machines. Instead of guessing whether a particular application stores its settings in ~/.config/, /etc/, or some other obscure location, everything is where you expect it to be.
Below is the new filesystem layout that reflects these improvements:
/ # Root of everything
βββ /bin/ # Essential system binaries
βββ /boot/ # Bootloader, kernel, firmware
β βββ /efi/ # EFI firmware support
β βββ /firmware/ # Kernel firmware
β βββ /loader/ # Bootloader binaries
β βββ /modules/ # Kernel modules
β βββ /zfs/ # ZFS boot files
β βββ /debug/ # Debugging symbols
βββ /config/ # System-wide configuration (replaces `/etc/`)
β βββ /init/ # Init system settings
β βββ /network/ # Network settings
β βββ /security/ # Authentication, firewall, PAM
β βββ /sysctl/ # Kernel tuning
β βββ /users/ # **Per-user settings (Replaces dotfiles)**
βββ /dev/ # Devices
βββ /home/ # User home directories (symlink to `/Users/`)
βββ /lib/ # Shared libraries
βββ /libexec/ # System daemons and utilities
βββ /media/ # Mount points for removable storage
βββ /mnt/ # Temporary mount points
βββ /net/ # Automounted network shares
βββ /proc/ # Process information
βββ /run/ # Runtime state (replaces `/var/run/`)
βββ /sbin/ # System administration utilities
βββ /srv/ # Hosted services
βββ /sys/ # System state (replaces `/proc/`)
βββ /tmp/ # Temporary files
βββ /usr/ # User utilities and applications
βββ /var/ # Variable runtime data
β βββ /cache/ # Cache files
β βββ /db/ # Databases
β βββ /log/ # System logs (symlinked to `/Library/Logs/`)
βββ /System/ # macOS-style system directory
βββ /Applications/ # User-installed applications (macOS-style)
βββ /Library/ # System-wide shared resources
βββ /Users/ # macOS-style user home directories
The beauty of Unix has always been in its pragmatism. The system doesnβt force users into a particular way of doing things, but rather provides a flexible environment where simple tools can be combined to solve complex problems. These proposed changes donβt upend that philosophy. Instead, they refine it. The core Unix principles, simplicity, composability, and transparency, remain unchanged, but they are applied in a way that reduces redundancy and improves organization.
Perhaps the most important aspect of this restructuring is that it does not require breaking compatibility with existing systems. Symlinks can bridge the gap between old conventions and the new structure, ensuring that legacy applications continue to function while new applications take advantage of a cleaner, more logical hierarchy. This way, change is incremental rather than disruptive, and users can adapt at their own pace.
Unix was never designed to be perfect. It was designed to work. Over the years, it has accumulated inefficiencies and inconsistencies, but that does not mean they must be preserved forever. A careful, considered restructuring can keep everything that works while improving everything that doesnβt. The best changes in Unix are the ones that make life easier without making anything harder. This is one of those changes.