Psychedelic Panorama of Foo

Á¦ À̸§ÀÌ Inigo Montoya ÀÔ´Ï´Ù. ´ç½ÅÀÌ ³» ¾Æ¹öÁö¸¦ Á׿´¾î. Á×À» ÁغñÇØ.

Åä¿äÀÏ, 3¿ù 22, 2008

 

GNUL v. AOSX

¾Æ³çÇϼ¼¿ä. I thought it would be amusing to title this after what they would look like if they were stock symbols. It has no further meaning than that. This is really "GNU/Linux vs. Apple Mac OS X." There I fully qualified the operating system names for the picky enthusiasts from both sides.

Since an apparent rivalry is beginning between Linux and OS X, I thought I would offer up my perspective as a user of both. I've been using GNU/Linux since I installed version 0.2.1 (yes, the versioning system has existed that long,) BSD since 1999, and OS X since 2001. First computer I ever used was an Apple II and I learned to type in 1991 on an Mac Classic. My first programming job was DCL and MACRO on VAX's, but my second job was virus projection for Macs written in perl, and e-commerce sites also written in perl. I developed on the Power Computing Mac clones. Remember those?

Why Do I Use Linux?

Linux is for ALL Development

Needless to say, I have serious Mac-envy. I love Macs. Why then did I become a Linux user. Even so, why did I stay a Linux user after OS X was released? In simplest terms, I'm a software developer. Linux is THE software development platform. I'm not speaking for just web development, database programming, embedded software, or anything specific at all. It's just good for ANY and ALL software development. Seriously. Linux is an OS designed and created by developers for developers. OS X in contrast is an OS designed to be cool and draw consumers to Apple Consumer Electronics.

A Variety Cross Platform/Architecture Compilers and Tools

Here's an example. I haven't run Windows on my home or work computer willingly since 1996. I gave Windows 95 a chance hoping it would improve on 3.11 WFW. In 2003, a friend asked me to write a multi-threaded program to integrate with their performance testing tool on Win32 platform. I'd done plenty of multi-threaded programming in and out of C++ by that point. Not hardly any Win32 though because I swore off that stuff. It was my friend though. We do crazy things for favors. Using the MinGW libraries, I was able to produce something for ia32 and alpha platforms in a couple weeks.

Here's another good example. There's a product called perl2exe. It's a build tool that takes your perl software and converts it to native binaries (bypassing code completely.) It just takes the perl and creates a binary plus library for any platform (Solaris, Linux MIPS, Linux ia32, Linux ia64, et al.)

Basically, Linux easily crosses architecture/platform barrier with ease. OS X can do this as well, but with a bit more tweaking. Some might argue that the examples I give are primarily aimed toward GCC which is also available on OS X. OS X even has a prime IDE for C/C++/Obj-C development that just comes with the operating system for free. That may be true, but the GCC compiler that is distributed for OS X is usually dated and not well supported. To get the newer features and fixes that caused problems on OS X, one needs to download the new source and rebuild it. OS X does not lend itself well to this kind of tweaking. Especially, if one is not experienced with GCC from Linux.

Aside from GCC, there are other tools and compilers supported on Linux that are not supported on OS X for development. This is coming along, and maybe it will get there. My point is that the way things are right now, OS X has not caught up to Linux. Take Wind River for example. Wind River is an embedded compiler that supports a number of platforms. I prefer this compiler for all my embedded development. It has much better hardware optimization support than GCC. It is possible to just use GCC, but Wind River is head and shoulders of above it. What's my point? If you follow the link, you'll find that it only runs on Windows, Linux, and Solaris. It's proprietary and not OSS, so you can't just rebuild it for OS X. It just simply isn't supported. Maybe in the future it will be, but for now I'm using Linux for my embedded development.

A Variety of Hardware Emulation Platforms

Hardware emulators aren't just for emulating your favorite video game console or for running Windows, but that seems about the best OS X supports. Why do we need virtual machines and hardware emulators? Well, for the same reasons given above. Once you write your source and it compiles, do you really expect it to run on your machine? Absolutely not. You have to run it on a hardware emulator which Linux has so many and so much support, that it's insane.

Some may say that this is really only useful for hacking and enthusiasts, but that's absolutely not true. I think too that this is definitely the electronic age. If you truly want to get the most out of your products, you should be looking at ways to improve them. Likewise, this kind of thinking is what landed us the iPhone, other smartphones, and PDA phones. As a result, more jobs for this kind of work are appearing in the world. The demand for hardware emulators for professional software development is going up faster and faster. OS X has an uphill battle on this because the only embedded development platform it truly supports is for the iPhone and people have to pay to do that.

Linux is Lean

Now we get into probably my favorite reasons why I like to use Linux and not OS X. Linux is not a bloated BSD. I'll agree that the best thing to happen to BSD is OS X, but it's still bloated. It's got tons of software that you can't easily configure, or trim. It takes forever and a day to install. I can install Linux in less than 10 minutes and have everything I need. OS X took me over an hour on my Macbook and it came with a ton of things I really didn't want. People don't realize it, but there are tons of things to configure to get your OS X to run A LOT faster. Who's idea was it to turn all the features on and make it run super slooooow out-of-the-box?

Most Linux systems are designed to run lean out-of-the-box. If you want the cool features, you have to be cool to know what to tweak. Furthermore, the number is growing of Linux distributions that can run in small-footprint platforms, and the desire for embedded Linux platforms is growing because the ease of development.

Desktop Environments Aimed for Geeks and Developers

This is probably my greatest reason for Linux. I don't think this will change either. The desktop environment is aimed toward developers. Linux Distributions (Ubuntu, Fedora, et al.) have made many attempts at a more user-friendly environment for desktop users, but they're in their prime right now for developer desktops. As a developer, let me list the things that impress me about Linux desktop.

  • Alt-Button-1 window movement. This is being able to move your window or resize it without clicking on the title bar or the window anchors. This is huge for me because sometimes on OS X, the window drifts off-screen. Now you can't move it unless you know the appropriate key-combination. I want to be able to click on a window and have it move. Sometimes, my mouse is near a window corner, but not the title bar. Or sometimes, my pointer is not near a window anchor. Maybe I don't like wasting my time trying to grab the ever so tiny window anchor for resizing. This is a big one for me. As long as Linux can do this and OS X doesn't, I'm going to love Linux. Yes, it's that important and I see it in OS X's future.
  • Multiple-desktops and Virtual Desktops. Leopard has this, but it's not very good. It's more flashy than functional. It's the basics, so that's alright. The support on most Linux Distributions is much better though. Furthermore, why is this important? Well, when I worked at IBM, this was the developers' prime reason for using Linux. To have more than one desktop, and organize them based on what one is doing. This was a huge productivity feature for many programmers. I don't use it as much, but I do use it a lot.
  • Mouse gestures built-in. I don't think I have to say anything else about this.
  • Customizable keystrokes. OS X comes with its own set of keystrokes that are standardized. Linux does as well, but you can deviate from the norm. I choose not to, but rather I like to add more keystroke commands. I have to say that my favorite ones are for bringing to the fron my favorite applications. For example, I use Ctrl-Shift-F12 to bring my buddylist to the front. Then, I pick a user and message. That's nice. I like being able to cycle similar program windows (you can do this in OS X too) with Alt-Esc. I can use Ctrl-Shift-F10 to switch to Firefox, and then Alt-Esc to cycle windows. It's nice. My favorite is Ctrl-Alt-T. It is a standard keystroke in linux for bringing up your preferred terminal emulator.

Why Do I Use OS X?

This may seem absurd to some, but I actually think OS X is the best OS out there right now for Consumer Level Desktops and Servers.

OS X is for Desktops

From the perspective of a Desktop User and a Desktop Support Specialist, OS X is a dream.

  • Everything just works.
  • It works well.
  • It does what you expect it to do.
  • Almost never crashes, and hung programs have an simple, and intuitive way to kill them.
  • It's user friendly.
  • There's a consistent way to get to Preferences for each program.
  • Configurations are always simple and easy to understand.
  • The OS uses terminology that normal users can understand.
  • Great API integration so programs can easily reuse Services and work together cohesively. This produces and experience such that a user doesn't need to know what program he/she is in. They are all pretty much the same.
  • Very easy to support platform from the Desktop Support Perspective.

There is just no denying it. OS X is the most dumbed-down, simple OS in the world. Perfect for the average consumer or someone who just doesn't want to worry about support of their PC.

Now some have suggested that in order to get over my Linux Desktop environment hangups, that I should run XonX. Now, I want to dispel this as a good idea right here and now. That's just silly. Why would I run two desktop environments on the same system. I would run either X or Aqua. Now, with that said, if I do choose X, why am I running OS X in the first place? That is my logic. If I'm going to run X on my Mac, I'm going to install Linux and let that be the end of it. I want to run OS X for its unique features. That's why I run it at all. When I get home, I am glad that I know I can come home to a stable system that I don't have to maintain.

OS X is for Servers

A lot of companies like to lean on Blade Center running Linux or Windows. Primarily Linux has been chosen for most server platforms because it's lean, and Linux Administrators are a dime-a-dozen. You can just get a Linux SA and a cheap ia32 machine and there you go. I don't necessarily believe that is all that great. Apple's XServe is some of the best hardware for a 1U server that you can find anywhere. It comes with OS X though. You can install Linux on it, but wait! OS X for the same reasons illustrated above for Desktop Users is exactly the reason why you want to keep it for your server. Setting it up becomes a no-brainer. It ships to you headless and ready-to-go. You can configure it remotely with no problems. It just works.

Basically, my logic is that XServe is some of the best server hardware you can find, so why not buy it? It comes with OS X and is simple to manage on your own, so why install Linux on it? Apple has made it so that anything more than going to the apple store and purchasing an Xserve through it is just too much of a hassle.

·¹À̺í: ,





This page is powered by Blogger. Isn't yours?

¿¡ °¡ÀÔ °Ô½Ã¹° [Atom]