Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I would like to know what would be needed to study and understand in terms of computing platforms and OS (Linux, Mac OS X and Windows) to become a software porting engineer.

share|improve this question

migrated from stackoverflow.com Feb 15 '12 at 15:05

This question came from our site for professional and enthusiast programmers.

closed as not a real question by Morons, gnat, Yannis Rizos Feb 24 '12 at 9:44

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

Learn the differences in the programming APIs that different OSes provide, learn the differences in CPUs/hardware, learn the differences in compilers. Develop for multiple platforms, perhaps the best would be to develop multi-platform software. IMO, for this work you have to be a very good programmer with excellent testing and debugging skills. –  Alexey Frunze Feb 15 '12 at 11:28
add comment

3 Answers

up vote 1 down vote accepted

That's an incredibly broad question.

Generally you'd need to have a basic knowledge of each platform, plus have a preferred cross-platform toolkit (Java, Qt/C++, c#).

Once you know a cross-platform toolkit you know 90% of your code is going to be the same and its just a case of looking up functions for each platform when you need it to be. Such as getting the operating system version number, as an example.

Really you need to start with the toolkit/toolchain and work from there.

share|improve this answer
add comment

This answer is too broad. There are no general "porting software" experts. Most porting software experts focus on a particular programming language or environment.

The most typical scenario for porting is a C++ application. Usually, the porting will consist of detecting the platform-specific functionality and removing or abstracting this. Afterwards, the abstraction can be implemented for multiple platforms. Apart from being a huge refactoring job (often with cross-cutting concerns throughout the codebase), the software porter will have to adjust the build system and installation to correspond to the target platform.

A good way to start with this is to read through multi-platform codebases. StepMania is a good example. Familiarise yourself with as much cross-platform frameworks as possible: Qt, OpenSDL and Java are good candidates.

share|improve this answer
add comment

You have to be familiar with the platform the application is coming from and the platform the application is going to. It is really as simple as that. This is not a particularly common task (in the life cycle of the application), so there is not exactly a ton of need to be filled in this arena. Whether or not you are a "porting expert" will be a lot less relevant than your expertise of the thing being ported in 99% of cases.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.