In software engineering, porting is the process of adapting software for the purpose of achieving some form of execution in a computing environment that is different from the one that a given program (meant for such execution) was originally designed for (e.g., different CPU, operating system, or third party library).
The term is not generally applied to the process of adapting software to run with less memory on the same CPU and operating system.
The amount of effort actually needed depends on several factors, including the extent to which the original environment (the source platform) differs from the new environment (the target platform), the experience of the original authors in knowing which programming language constructs and third party library calls are unlikely to be portable, and the amount of effort invested by the original authors in only using portable constructs (platform specific constructs often provide a cheaper solution).
In that same market, the choice of operating systems has effectively been reduced to three: Microsoft Windows, macOS, and Linux.
However, in the embedded systems and mobile markets, portability remains a significant issue, with the ARM being a widely used alternative.
This greatly reduces design efforts, because the machine independent part needs to be developed only once to create portable intermediate code.
Some interpreters are extremely easy to port, because they only make minimal assumptions about the instruction set of the underlying hardware.
The ported version of Pac-Man for the Atari 2600 omitted many of the visual features of the original game to compensate for the lack of ROM space and the hardware struggled when multiple ghosts appeared on the screen creating a flickering effect.
[11] Many early ports suffered significant gameplay quality issues because computers greatly differed.
[12] Richard Garriott stated in 1984 at Origins Game Fair that Origin Systems developed video games for the Apple II first then ported them to Commodore 64 and Atari 8-bit computers, because the latter machines' sprites and other sophisticated features made porting from them to Apple "far more difficult, perhaps even impossible".
Notably, Space Invaders on the Atari VCS became the console's killer app despite its differences,[19] while the later Pac-Man port was notorious for its deviations from the arcade version.
While broadly similar today, some architectural differences persist, such as the use of unified memory and smaller OSs on consoles.
Other objections arise from user interface differences conventional to consoles, such as gamepads, TFUIs accompanied by narrow FoV, fixed checkpoints, online restricted to official servers or P2P, poor or no modding support, as well as the generally greater reliance among console developers on internal hard coding and defaults instead of external APIs and configurability, all of which may require expensive deep reaching redesign to avoid a "lazy" feeling port to PC.