Sunday, January 18, 2009

MaraDNS support boundaries; Linux rocks as a server

To clarify the boundaries of support for MaraDNS, a memory leak has to be something where one can show that MaraDNS is allocating memory while running that is never freed, and results in MaraDNS using more and more memory while running. Memory allocated but not freed during startup doesn't count; while I cleaned most of those in 2006, there is one that I couldn't clean up because the recursive code depends on it.

Did I mention that I'll happily do other things for MaraDNS if paid? These boundaries of support only cover what I'll do for fun and for free.
Let me clarify something: I think Linux is an excellent server operating system. While not quite as nice as FreeBSD, if one uses a stable distribution, such as Debian stable or RHEL/CentOS on supported hardware, one has an excellent server. According to some reports I have heard, a Linux server can handle about four times the traffic as the same machine running a server version of Windows.

Indeed, just this last week there was some problem with our internet connection at work making it difficult to keep TCP connections open. What was interesting was that the problem only seemed to be happening with Windows servers; I had no problem downloading files from Linux and other servers but couldn't download a simple 100 kilobyte email from our email provider who runs Windows as a server.

However, Linux doesn't work as a desktop OS yet:
  • Binary compatibility. The Linux Kernel developers do not care as much as they should about binary compatibility. I can no longer play these video games for Linux I bought a few years ago in modern releases of Linux (the sound no longer works). The ABI (and hell, the API) for kernel modules changes from version to version; forget about getting new hardware to work with an older kernel (LWN tries to justify this practice by implying it's not OK to want to run new hardware on an older, stable kernel; my response is simple: Windows has no problem with having a stable driver model allowing new drivers to be made for older OSes yet working without problem on newer OSes. Why can't Linux do this?)
  • Because of this issue with drivers, I have two choices. I can have an unstable distribution of Linux (Ubuntu) that works with my hardware but has basic functionality, such as using wireless with static IPs, broken (not to mention a bug that damages hard disks and makes them not last nearly as long as they do in Windows), or I can have a stable distribution of Linux (RHEL/CentOS) that doesn't fully work with my hardware (The wireless driver has issues with crashing and sound doesn't work)
  • Fragmentation. I don't like the fact that, with my open source programs, it is difficult to resolve issues like my program not starting up correctly in Linux at boot time. Different distributions of Linux have different ways of doing this and issues like this make supporting Linux applications more difficult. I actually just threw in the towel and no longer support my application except through the public list
  • The user community. I don't like people who treat Linux like a religion, being someone who was the that way about Linux a decade ago. I don't think it's appropriate to declare Jihads against people who don't think Linux is God's gift to the earth, and the actions of Linux zealots (which you can see on a number of bulletin boards, such as Slashdot and to a lesser degree Digg) are pretty annoying at times
  • Applications. Since Linux isn't a friendly environment for binary-only applications, a large number of quality applications are not ported to Linux. This even includes things like being able to transfer files to and from my cell phone from my computer--Nokia makes a nice software suite that lets me transfer files to and from its internal memory, send text messages using my computer's keyboard, make changes to my cell phone's addressbook, etc. Forget about doing any if this in Linux.
So yeah, Linux sucks...on the desktop. But yeah, Linux rocks (and kicks Windows' ass) in the server back room.