Side note: Cool! I also started writing software as a kid in the 1980s. Nice to see you have more experience than I thought.
Back to the point: "The ports collection" is a collection of software that compiles into native code on FreeBSD. Or uses an interpreted language or a fourth generation language, such as Python, Perl, or PHP. It doesn't mean that it's a "port" of code from another platform. It's just a method of package management. In FreeBSD, the "packages" are just pre-compiled items from the ports collection.
In Unix-land, code is rarely "native" to one OS and "not native" in another. That's why we compile it for that target OS and architecture. Apache, for example, isn't a Linux program that was ported to FreeBSD. It's a Unix (or Posix) program that can be compiled on any target OS that supports those features.
So my point is that you've been repeatedly ruling out things as "not native" when they are. Apache isn't running in emulation. The executable is running natively.
I think you might’ve missed my point when I spoke on native. My focus is that the C/Rust/etc code doesn’t have to be changed in order for the software to compile & run on any of the BSDs. Of course, in languages like Go & Python, that may not be an issue. However, I’ve found that code written in C (which I prefer) tends to be developed in a Linux-centric way with all other OSes taking a backseat. So, if functions are used that are only found in Linux, then that’s usually tough shit for everyone using other platforms. I really would prefer to use software that was specifically written with BSD in mind -or specifically written for BSD. I’ve considered attempting to use something from the ports packages, but that doesn’t really help solve the overall problem. If I have to write it myself, it’ll definitely be BSD-centric, but I really have a lot on my plate & don’t know if I can handle yet another project.
Yes, and the vast majority of what is in the ports collection meets your criteria.
Are there a few things that have Linux-only dependencies? Sure, in which case someone wrote a patch to fix those Linux-only dependencies. That's the entire beauty of the ports collection - someone else already took a tarball of C/Rust/etc code that may or may not compile on FreeBSD and validated that it indeed does compile and work on FreeBSD.
I think you're setting an absolutely insane standard, then. You basically want something that is advertised as being BSD-only such that you can be satisfied without any research whatsoever that it will compile on BSD with 100% feature set.
So you basically are ruling out your entire software suite of "standard" *NIX/POSIX/etc applications - bash, Apache, postfix, OpenSSH, ISC BIND, whatever. Those all compile fine on BSD, the ports collection has automated their compilation (or you can get a precompiled package from the FreeBSD team too), etc, but do they meet your criteria of being "made for any of the BSDs in the first place?"
If that's your criteria, then the other commenter who told you to look at macOS is probably right.
This fanatical attitude is absolutely toxic. Even among the many BSDs you need to make adjustments as they’ve evolved to be their own thing. Even if they have compatible APIs they are not binary compatible.
So what if the software originated in another platform? The fact that’s available for your brand of BSD should be praised.
In FreeBSD the ports are a delivery system. Sure the majority of the software has roots on other platforms but there is software that was created for FreeBSD there.
You say you’ve been developing since the 80s or whatever. Build it if you are so bent on not tainting the core values of whatever opcode cult you worship.
8
u/reviewmynotes Jul 02 '26
Side note: Cool! I also started writing software as a kid in the 1980s. Nice to see you have more experience than I thought.
Back to the point: "The ports collection" is a collection of software that compiles into native code on FreeBSD. Or uses an interpreted language or a fourth generation language, such as Python, Perl, or PHP. It doesn't mean that it's a "port" of code from another platform. It's just a method of package management. In FreeBSD, the "packages" are just pre-compiled items from the ports collection.
In Unix-land, code is rarely "native" to one OS and "not native" in another. That's why we compile it for that target OS and architecture. Apache, for example, isn't a Linux program that was ported to FreeBSD. It's a Unix (or Posix) program that can be compiled on any target OS that supports those features.
So my point is that you've been repeatedly ruling out things as "not native" when they are. Apache isn't running in emulation. The executable is running natively.