09 April 2017


Do we, all of us, walk in the footsteps of our ancestors?  Some people speak of a wheel of time, and others, an arrow.  Might time be both at once, each minuscule ending pointing to some new calamity, a series of singularities?

Is my contemporary homeland the new Rome, doomed both to rise to the same greatness, and to fall to the same depths of annihilation for its sins?  Some people believe that we live multiple lives, that our souls somehow shed bodies in the same way that our bodies shed clothes after a long day's work... or after we're burned.  Do we consider that, if the self has lived multiple lives, that those other than the self may well have done so, too?

Are those who pay the price of repeated mistakes truly innocent?  In some cases, it can be folly to leave one's self open to injury as much as to do injury to others.  Just as foolishness can learn to avoid making mistakes, might innocence so learn to avoid the consequences of such mistakes being made?

Who are we, such small creatures in our arrogance, to question the universe around us?  Or to question our gods?  The image is reminiscent of the peddler's dirt-smeared child asking questions of the emperor, a chance meeting in the street- if anything so momentous could be attributed to chance.  And, in the small, quiet hours of the night, when we fancy that we hear our foolish questions answered... are we sure that the voices doing the answering are to be trusted?  Might the universe tell lies?

What makes the life of a human, more aptly an ape of the species Homo sapiens- oh so scandalously hybridized with H. neanderthalensis, H. rhodesiensis, and most certainly others of more hair and smaller brains (and thus more scandalous still) in the ancient past... what makes our lives so much more valuable than others?  A blade of grass is alive, just as much as a fish, or a cow, or a worm.  Does a blade of grass not have ambitions?  Does a worm not have them either?

Do the ghosts of all of humanity wander among us, unseen by all by a gifted few, and laugh at our errors?  Do they despair of them?  Our fathers and mothers, and their fathers and mothers, so on back through the mists of time to the first mote of a protobiont, surely are wiser than we are, in our infancy.  And the stars from which nearly all that we see and know was born- dust and rock, water and sky, light on the moon and the embrace of another living creature- those ancient stars, are they yet wiser still?

And so, like a wizened and surly mage in some tale of wars and heroes, I haunt my tower.  Surrounded by my books and herbs, and accompanied by my familiar, I advise such kings and lords (though less well-dressed than in bygone days)... I advise such kings and lords who as are bold enough or reckless enough to climb the steps, and of nights I ask questions of the stars.

20 March 2017

State of the BSDs

So, every once in a while I find myself doing a mental comparison of the various flavors of the main *BSD implementations, where they stand, what they support, etc.

Even more rarely, the comparison necessarily becomes manifest, in the form of trying to install each of them, and cursing like a sailor with a bad case of boils about what works and doesn't work on each one.

Just for posterity's sake, below you'll find a table of the standing of each, in my observation, as of today (Monday 20 March 2017).

This table only compares features that are significantly different and reasonably uncontested.  There's not much point in comparing things that they all have in common.  They all support DRM2 / KMS on x86[-64] in their most recent releases, for example.  Other concepts, like "security of the base system" are relevant and have some numbers available but are hotly debated, whereas nobody is arguing that Dfly supports PowerPC, or that OpenBSD has netmap.

Points awarded:
  1. Does not exist or work at all
  2. Exists or works, but is not documented or well-supported, or requires third-party patches
  3. Exists or works well, is documented, and is supported
Please note that if you have a factual correction about some information and care enough to post about it, I will gladly review an amend as appropriate - I do not care, however, if you agree with me on the more subjective measurements, that I didn't include your favorite BSD flavor, that Linux blah blah blah, etc. ad nauseam...

Differentiating FeatureFreeBSDOpenBSDNetBSDDragonflyBSD
Niche Architecture Support1220
Modern Security Hardening1221
SMT-aware Scheduler2002
Network Ring Buffer2012
Modern C[++] Compiler in Base1112
Next-Gen File System Available2122
Native Hypervisor2200

Here's the break-down:

N.B. I'll add links to supporting documentation later as a follow-up, when I have a few minutes
  • Niche Architecture Support: NetBSD and OpenBSD are both strong here, with the base system and a good selection of pre-compiled binary packages available for a wide variety of architectures.  FreeBSD supports a few of the less-common architecures, but only has pre-built packages for x86[-64] and ARM.  Dragonfly, of course, only supports x86-64, period.
  • Modern Security Hardening: Again, NetBSD and OpenBSD are both strong here, with a good selection of PaX features (or workalikes) in the base system and well-documented.  DragonflyBSD has started on a few of them but doesn't have the whole buffet yet.  FreeBSD only has them as a separate distro-nee-patch-set (HardenedBSD).
  • SMT-aware Scheduler: FreeBSD has ULE, DragonflyBSD has... well... whatever it's called, but poor OpenBSD and NetBSD are stuck with descendants of the old 43BSD scheduler, which isn't particularly aware of CPU topology as far as I can tell.
  • Network Ring Buffer: FreeBSD and Dragonfly both have netmap.  NetBSD seems to have an implementation, possibly related to the kernel-in-userland option, but I can't find much about actually using it.  OpenBSD has nada in this department.
  • Modern C[++] Compiler: DragonflyBSD has a modern GCC in the base system.  All of the rest have Clang in base, either as an option or as default, but Clang on anything other than x86[-64] and ARM[64] is catch-as-catch-can at the moment, and the default releases for different architectures reflect that.
  • Next-Gen File System Available: Think copy-on-write, filesystem-level snapshots, multiple virtual filesystems on a single partition, abundant bit rot protection etc.  All of the BSDs have ZFS in some form, though OpenBSD's ZFS does seems quite experimental even though it does exist (thanks to Ted Unangst).  Dragonfly also has HAMMER[2], which is pretty alright.
  • Native Hypervisor: Pretty straightforward - is there a hypervisor in the base system, or not?  FreeBSD has Bhyve.  OpenBSD has vmm.  The others have naught.  I'm not counting the ability to act as a Xen Dom0 here, because even though Xen is a good hypervisor, its administrative experience is normally a far cry from "native."

Now, none of this should be construed to mean that I just absolutely adore one above all others - they each have their strong points: Dragonfly simply won't run on anything other than x86-64, and FreeBSD's support for anything but x86[-64] and ARM is shoddy at best (no pre-built binary packages AND a ten-year-old compiler in base?  C'mon?!); NetBSD supports the most platforms out of all of them, but OpenBSD is the only one with solid sun4v support, etc.

The point is that I've got each of them running happily on at least one (1) system that I own, for a good reason or two.  Diversity in measure is still a good thing.