Skip to content
npyl edited this page Aug 4, 2018 · 11 revisions

This is the Dev Journal where I post stuff about my experience developing the port of conky for macOS.

Prologue

When I first put my mind to it - porting conky on macOS - I was really young (~14 years old) and definitely not as experienced as I am now (18). I set off, and after doing a bit of research decided to get hands-on and see for myself, the result being me failing miserably: Various API incompatibilities, autoconf errors and more...

Three years ahead (!!!), and the first port of conky to macOS (apparently torsmo's, too) made its debut.

The experience was pretty cool, it being my first actual port (First-First was a calculator ported from win to linux 😏). I enjoyed fixing the missing headers, creating the darwin.cc and darwin.h and introducing it to the rest of the project by patching the cmake files.

After some time (~1 year) conky has managed to get himself cpu, memory, network stats and more... The first milestone is almost complete, the only parts missing being implemented to a good extent.

The Troubles:

Exactly.

And Apple aids this. Porting is never easy, BUT there are some things that are fundamental in an OS API when it comes to system-monitoring such as being able to get count of processes / threads / running processes / running threads. Now, Apple doesn't really like you knowing stuff and thus things like getting count of running threads / processes don't work as expected. And last but not least: Apple has unbelievably bad support for X11, called XQuartz, and you can be the judge of that yourself. To me this is frustrating and to some extent unacceptable: publishing an API/Software, assigning a maintainer but still keeping the project highly unmaintained. Is this how software industry works? Maybe! But, Apple, you have assigned a project to ONE AND ONLY ONE (!?) person! Nobody says this is wrong (which probably is), BUT, is it so difficult to pay one person to at least do what you assigned him to do: maintain?!!!!

Except of these cases, which occur more often than not, you should be able to find alternatives to most of the API incompatibilities, etc.

Other than that the experience has been totally enjoyable and memorable. Let the journal begin. ~

Journal::Begin