Linux vs. Windows
In my last post, I hinted at a personal preferance that I have towards Linux over Windows. Much to my chagrin, my company has a certain level of Linux acceptance in the Software Department. If it was up to IT, we'd all be on Windows. Thank goodness it isn't up to them, though. They have enough trouble keeping the networks and e-mail servers up.
Linux has to advantage of Open Source that Windows may never have. This is one of the principles of the
Simple Accessible Code and it offers the advantage of full disclosure to the end user over what the software is doing.
In my opinion, Linux is also every bit as capable as Windows. There are tools that compare with Microsoft Office (OO) and Adobe Photoshop (Gimp). There is a (pretty much built in) webserver (Apache) and out-of-the-box support for a wide range of programming languages (from Python to Java). Thanks to Mozilla, a superb (and widely accepted) web browser and GUI e-mail client are also available. More and more proprietary software is being released for Linux. Bash terminals are far more powerful than anything that DOS has ever offered.
But the world still uses Windows, and I still own a handful of shares of MSFT in my personal online stock account (mainly because of their latest generation of video game consoles). And in the forseeable future... Windows is here to stay.
Oh well... so much for "accessible code". :(
RobustnessA term in software engineering that gets tossed around quite frequently is "robustness". I use it myself when I want to compliment a piece of software that I feel adapts well to different environments and handles change well. Robustness is a desirable characteristic.
It is also a loaded term, though. Robustness cannot be quantitatively analyzed. If the requirements state that software should be robust - they would be rejected outright (at least, by smart software engineers), because robustness isn't testable.
Furthermore, is additional robustness something that separates the good software from the bad? Does the fact that Linux can be run on an assortment of platforms (x86, PPC, ARM, etc...) make it superior to Windows from a user perspective? Certainly, the majority of users "NEED" Windows to be productive in the modern business world (at least, they *think* they need it). In this sense, the more robust alternative is less desireable because the establishment of the alternative operating system transcends the Intel-compatible hardware it runs on.
[Editorial Note: I'm partially ignoring Windows CE & other "portable" Windows platforms. In my view, these targets never attained much acceptance. I have no data to support or refute this claim.]
I guess what I am driving at is that robustness is multifacetted. If a piece of software can be coded quickly and addresses a specific responsibility on a certain target operating environment then I would claim that it is arguably as robust as software that takes much longer to code, but handles multiple responsibilities in different configurations (that is, as long as the end user only needs the "specific responsibility" and he has the target operating environment available...).
When TOEs are scarce and responsibilities shift, though, neglibile work needs to be done on the system we said was designed for the general case, while a re-write may be required for the specific case. And the point of this discussion... at what point can the determination be made to put in the extra effort at the onset to design a general system? Doesn't the cost savings achieved by targetting the design to the specific need make it adventageous to skip true robustness in most sitations?
At this point, I am still unsure of the answer to this question... but I will continue to think about it.
[Editorial Note: In the beginning, I defined robustness as "adapts to different environements and handling changes well". I realize I spoke mostly to "adapts to different environments" in my entry. As a software engineer... this adaptability is a strong concern (in my view) for the products which my company makes. If you think this view is narrow-sighted, please let me know.]