serious question, not trying to start a lame flamewar.
how do you guys feel, and what are your positions, regarding general portability, cross-platformness, and not being locked-in?
one of the major attractions of open source and certain non-Microsoft products to me is that I am not locked into the Windows and x86/x86-64/ia64 platforms, and that I can create things fairly easily for more than one platform.
you can accomplish not being locked in in one of two ways... open standards and open source.
Microsoft has what I consider to be a very poor record in working with open standards... the Kerberos fiasco, the Active Directory violation of standard LDAP, and lack of Office document standardization as all cases in point.
Microsoft's position has consistently been to "embrace and extend" open standards so customers are locked into Microsoft's intentionally incompatible version of a standard.
we all know what Microsoft's general position on open source is.
While Microsoft tried to be cross platform in the past with Alpha, PPC and MIPS versions of NT, those died out.
open source operating systems are ported to other operating systems quite often and easily, provided someone is willing to do the work of conversion and some maintainance.
a hardware CPU company with a new CPU can reasonably pay a few kernel and compiler hackers to port a portable open source kernel, a open source compiler, and some userland utilities to their new architecture... or they can hire in-house staff to do it.
it would be much harder for a company to persuade Microsoft to port Windows to their architecture and give it full support, even with payment.
Linux, for instance, has some differences on embedded systems and on mainframes/NUMA systems/clusters, but the basic user experience and programming experience is similar on all.
this allows you as a programmer to extend your skillset to a significant number of platforms.
of course, Windows does has dominant market share in many areas... but in the future, this market share will increasingly be limited to the desktop while non-MS operating systems, particularly Linux, will control most other areas.
Linux basically owns the 32-bit and 64-bit embedded non-hard-realtime OS market.. and it may be getting the option of hard-realtime support in the main kernel tree in the future. WinCE is a nonstarter in this market, basically.
for servers, Linux is steadily increasing it's marketshare and appears to be starting to eat into Microsoft's market. While it will definitely not eliminate MS from the server market, it is likely Linux will gain dominant market share in servers in the future
also, most open-source operating systems are generally POSIX compliant, more or less. so a well-written program on one should work on the rest with minimal porting. It will also work on other POSIX compliant systems... and most non-Windows OS's have at least acceptable POSIX compliance, if not excellent.
Windows servers has a subsystem that impliments one part of POSIX, primarly for accounting purposes to keep government requisitions that require all OS's bought conform to that part of POSIX.
compare porting a native POSIX application to native Win32, or vice versa.
I know theseanster has been messing around with C# on Mono... what do the rest of you do, or do you not really care?