Mac OS X support in the official htop 1.x tree

Let's allow Mac users to run the most up-to-date htop on their terminals and enjoy the latest bugfixes and features

Introduction

Hi, htop's author here. htop was originally developed for Linux, and its codebase is heavily dependent on the Linux-only /proc filesystem for gathering system data.

It was never a strict goal to make it Linux-only; it just happens to be the only platform I run. Still, users have managed to run it on other systems. Some run it on FreeBSD using an emulation layer which simulates a Linux-like /proc filesystem. I've received and merged small patches to improve this.

On the Mac, however, the current situation is a bit different. There are several versions out there, which as far as I can tell are all based on a fork of htop 0.8.2 (which is five years old!), that was implemented ripping out all Linux-specific code and replacing it with Mac-only code. There is nothing wrong with that! The idea of free software is that determined users should be able to do this.

The problem is that, due to the way this fork was done, it hasn't kept up with the development and bugfixes of htop over the years. The result is that I keep getting bug reports from Mac users, some of them for very old bugs!

Unfortunately, I have very little free time to dedicate to htop development (on Linux, that is!) and making a major port would take me a lot of time. I'm a PhD student in Brazil, so the extra time I have left from academic research is filled with freelance programming job, teaching classes, you know the drill: making ends meet.

Since I keep getting so many bug reports from the Mac community, I thought that maybe I could pick my own project as a freelance programming job: through this fundraiser, you can allocate my time so I can make the latest version of htop run natively and cleanly on Mac terminals.

The project

Create an abstraction layer to separate core htop from OS-specific code

Port the Linux-specific code to use this abstraction layer

Write Mac-specific code on top of this abstraction layer

Note that this is not a port to turn htop into a Mac GUI application. For that you have Activity Monitor; htop intends to be a terminal application (which is useful so you can peek into the status of your box through SSH sessions).

A side benefit of this project is that it will be much easier to add other native ports such as FreeBSD; in case there's interest these ports can be added as stretch goals later.