Portability Anyone?

When describing the various systemic qualities of a system to-be developed, one of the least-mentioned is that of portability. I am referring to portability as the need to port one application on one platform to a different platform. So, the question usually goes: will I need to port the application running on Windows to AIX or vice-versa? That's a good question because the answer will determine how you implement and support the solution. Of course, it sounds great to have that capability in the system because it appeals to the free-spirits within us; no one likes the idea of being 'locked-in' to a particular vendor or their platform technology. Or do we but just don't like to admit it?

 

I have seen many instances where application development teams have caught on to the idea of being able to run an application on anything and have put an amazing effort into delivering this quality into their systems.  But at what cost?  In the course of the system's lifecycle, in retrospect, rarely does a need arise to port the application to another platform that justifies the cost of implementing the capability to do so.  Of course, no one has a crystal ball and the possibility, albeit distant, is omnipresent.

 

The past was ridden with fear of "lock-in".  I have spoken to several enterprise architects lately about platform technology and trends.  There is still a lot of reluctance towards the adoption of Microsoft technology because of the fear of "lock-in".  In terms of a trend, I see the focus of "lock-in" diminish and the emphasis on adoption of industry standards in the platforms take the "lock-in" market share.  The ability to port is usually not realized and the cost of designing portability into a solution is not cost or time feasible.  Sure, Microsoft software only runs on Windows and Windows only runs on Intel/AMD hardware so from that perspective, there is "lock-in", so…?  'Rip and replace' strategies typically aren't the most effective and in a service-oriented fashion an 'encapsulate and integrate' approach method is becoming more and more common using standards-based interfaces and messages.  So, with this said, portability anyone?  I would be interested in other perspectives so smoke 'em if you got 'em.