Let me preface this by saying that this is a (very) long and medium-rare technical article about the security considerations and minutiae of porting (most of) the Arcan ecosystem to work under OpenBSD. The main point of this article is not so much flirting with the OpenBSD crowd or adding further noise to software engineering topics, but to go through the special considerations that had to be taken, as notes to anyone else that decides to go down this overgrown and lonesome trail, or are curious about some less than obvious differences between how these things “work” on Linux vs. other parts of the world.
You know you’re getting something good with a preface like this.
I generally don’t dig this low-level, but this has been my experience of Linux vs. BSD as well.
When you encounter a difference, you usually look at the BSD solution and say “That seems to simple to actually work”. And yet here it is running on the same hardware, running the same programs.
Or you wonder where all the actual “stuff” is (look at kqueue and kevent, for instance), until you realize that you don’t really have to worry about it anymore. You don’t need to keep your socketlist around locally, the kernel already has that, and it’s just extra work.
Same with OSS versus ALSA. You can mess with the insanely opaque and huge API of ALSA, or you can do four ioctls (less if 44.1 KHz and 16-bit audio is fine with you), and then do write() calls. sndio adds some nice enumeration facilities and error checking, but it’s still very lean.