hello: Let’s make a FreeBSD for “mere mortals”

Can we make an open source system that is welcoming to switchers from the Mac? Something that “just works” as intended, without the need to fiddle around much to get to a working desktop that does its job and otherwise gets out of your way? Say hello to hello, a desktop system for creators with focus on simplicity, elegance, and usability. Based on FreeBSD. Less, but better!

Image for post
Image for post
hello: a FreeBSD Live system that is welcoming to switchers from the Mac

Design is how it works, not how it looks

Don’t get me wrong here: With “welcoming to switchers from the Mac” I don’t mean a Mac theme nor a Mac clone. There is an abundance of themes and even so-called “Linux distributions” that are basically just themed versions of Ubuntu. This is not what I want to create.

Also, the last thing I want to have on an open source system is the lock-down and spyware that Apple has been adding to its systems as of late.

I mean something that is inspired by some core Mac principles, while using Libre (“free as in freedom, not as in beer”) ingredients, and simplifying things as much as possible.

Some examples:

  • A Live medium that you can boot e.g., from USB to try out the system without the need to install
  • Automatically set the correct keyboard, language, and timezone
  • A proper global menu bar that works like you expect it to work
  • Every application comes in its own directory that can easily be “managed” using the file manager, no need for package managers
  • Automatically discover network services using Zeroconf (no more looking for IP addresses on the local network)
  • Easy and straightforward installer that doesn’t ask you cryptic questions
  • A straightforward backup system that “just works”

Less, but better

When I think about it, most desktop environments have many things that I find utterly annoying and do not want nor need:

  • Annoying notifications
  • Lots of configurability which makes everything complicated, makes no 2 systems the same, and, as a result, makes everything unsupportable
  • Everything tightly coupled with everything
  • Lock-down (it’s my computer, not the manufacturer’s, and it’s not the manufacturer’s business to decide what I can and cannot run on my machine)
  • Spyware (no, I don’t want to send the manufacturer and the secret service a list of the authors of all applications I am using)
  • GNOME, KDE Plasma (too much of everything)
  • App Stores where you have to log in using personal information

Makes me realize that I want basically the things I have written about in my series on #LinuxUsability (part 1, part 2, part 3, part 4, part 5, part 6), and not much more. I don’t need feature creep on the desktop, but I need the basics to work. I don’t want to configure 1,001 knobs just to get something to work. I want to switch on the machine and be in familiar territory, but I don’t need most things that make everything complex. FreeBSD greatly simplifies things because there is only one FreeBSD and hence doesn’t suffer from the Desktop Linux Platform Issues.

Live medium

If you are somewhat like me, you want to try out a new operating system before you commit to installing to disk. This is what Live systems are for. Of course, hello comes as a Live system.

Image for post
Image for post
Create Live Media: Tool to fetch the lastest builds and write them to USB devices in one go

The Create Live Media tool makes it really convenient to fetch the lastest build and write it to a USB device in one go. No more messing around with dangerous dd if=... of=... commands!

Automatic keyboard, language, and timezone

As someone who is using Live systems for everything, I can tell you: It’s annoying to set keyboard, language, and timezone each time you boot into a new system.

So hello does it for you, automatically, without asking questions.

If you boot on a Mac, then the information stored in EFI NVRAM is used. If you have a keyboard attached that tells the system its language (like the official Raspberry Pi keyboards do), then this information is used. (If you know other ways to automatically figure this stuff out, let me know.)

A proper global menu

File, Edit,… you name it. Easy, eh? You would think. Yet so many systems get it wrong.

Image for post
Image for post
A proper global menu. Yet so many systems get it wrong

And this menu has superpowers: You can search its content, allowing for very quick navigation through applications with large menus like GIMP, Scribus, Krita, and the like.

Every application is a directory

Applications on Unix traditionally are scattererd around the whole file system, with the main executable in /usr/local/bin, metadata in /usr/local/share/applications, icons in /usr/local/share/icons,… you get the idea. As a result, it is very hard to drag-and-drop an application (and everything that belongs to it) in the file manager. The hello system simplifies this by taking a GNUstep-like approach using .app bundles. That Boot Environments application shown above? Open it in a new tab, and you see that it is actually a directory that contains the applications and additional resources it needs to run.

Image for post
Image for post
A simplified .app bundle is a directory that is treated like an opaque file in the file manager

This system can be extended to produce fully self-standing application bundles that have no dependencies other than the base system.Which means that you can have multiple versions of applications in parallel, and can update each application without impacting anything else.

Using Zeroconf to connect to devices on the network

For example, imagine that instead of having to find out and type IP addresses you could just use this:

Image for post
Image for post
Using Zeroconf to connect to devices on the network

This is just one example of what I mean by “small tools that do one job, but do one job well”.

Preferences are managed with small apps

Preferences are just regular applications, many written in Python, which allows one to inspect and change the source code with ease.

Image for post
Image for post

Easy and straightforward installer

If you have ever installed the operating system on a Mac, you should feel instantly at home. Example: just enter your name, the installer figures out a name for your computer (hostname) on its own. Want to log in over the network? It’s just one checkbox away.

Image for post
Image for post
An installer that does not ask the user cryptic questions

When you use this installer, you end up with FreeBSD proper plus an easy-to-use graphical interface.

A straightforward backup system

FreeBSD uses OpenZFS, a file system with true superpowers. Yet features like Boot Environments and Snapshots need to be understood and actively managed by the user. Well, let hello do that for you.

Image for post
Image for post
Straightforward tools to make use of advanced OpenZFS features

Say hello!

Would you like to try it for yourself? Grab the pre-alpha continuous build of the Live ISO (but be warned: it may or may not work, as not every build is tested).

What do you expect from a desktop FreeBSD for “mere mortals” that “just works” and is “welcoming to switchers from the Mac”? We would be happy to hear from you.

At this point, this project is still very much in the idea strage, with some proof-of-concept (ok, I’ve been using it as my daily driver lately). Do you have FreeBSD experience, Qt skills, or other ideas how to help the project? Check out the contributing page. This project lives from contributions of interested people like you! There is no company behind it, just users like you and me.

probono is the founder and lead developer of the AppImage project, the founder of the PureDarwin project, and a contributor to various open source projects. Screenshots were made on a hello Live system.

Written by

Author of #AppImage and contributor to hundreds of open source projects. #LinuxUsability, digital privacy, typography, computer history, software conservation

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store