• The most important thing to get portability, (from a theoretical POV as I've never done it myself), is to identify what changes between platforms and stick them in a substitutable section, e.g. a DLL.

    For databases, that's the Business Logic Layer, etc, that was mentioned above.

     

    Of course, James's post highlighted just how bad going down this route can be without such a considerable amount of effort much better than anything I could think of, so I'll just say 99% of the time that it's not worth it.

    Finally, how far down the portability route should you take it? Multiple databases; multiple OSs; multiple levels of user competence?

    Paul