From Wikipedia, the free encyclopedia
Jump to: navigation, search
WikiProject Computing (Rated Start-class, Mid-importance)
WikiProject icon This article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 Mid  This article has been rated as Mid-importance on the project's importance scale.
WikiProject Video games (Rated Start-class, Mid-importance)
WikiProject icon This article is within the scope of WikiProject Video games, a collaborative effort to improve the coverage of video games on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 Mid  This article has been rated as Mid-importance on the project's importance scale.



I did a full rewrite rather than edit; judgment call. I felt the original article was not very clear, and contained a number of factual errors. I think I managed to retain the tone and general outline pretty well though. Coren 17:41, Jan 2, 2004 (UTC)



I've always percieved the term port and associated words a colloquial term, possibly even an abbreviation. If this is the case, it ought to be mentioned. Some insight by someone with more programming experience would help. --BigBlueFish 10:58, 5 October 2005 (UTC)



I am very disturbed by the way this page has been written. Let us start with precise definitions:

Porting means: the act of moving software from one system to another in a functional way.
A piece of software/media is portable if: it can be moved to multiple systems without significant modification.
Portability means: the degree to which a piece of software can be ported (by measure of effort).

It is important to note that portability does not refer to the number of platforms something can be ported to. If software runs on a wide variety of platforms, it is more correct to say that it is widely available on or compatible with many systems. Portability refers to an inherent property of the program, not the availability (beyond 2) of platforms.

This point is most clearly seen when one thinks about .NET or Java applications. Programs written for those platforms are typically more portable than most applications written in C even though its possible for C programs to be deployed to more compatible platforms. C programs will typically make assumptions (ints > 16 bits, 2s complement math, exploiting undefined/implementation defined behavior, etc) that cannot even possibly be made in Java, for example, even though the resulting C application may be deployed on many more platforms than a Java bytecode interpreter exists for.

A programming language can be portable in one of various senses:
1. It is possible to write programs in the language such that source code is portable.
2. It is possible to write programs in the language such that object code is portable.
3. Most programs written in that language have high portability.

By specification, the C language basically fits in category 1, Java fits in category 2, and Python/LUA fits in category 3. C is in an extra special category, however, because of the plethora of implementation defined behavior in the language. C source can be portable in the sense of being able to compile on many platforms, but without retaining semantic portability (in ways that are beyond mere resource limitations). C++ ends up having all the same problems as C, for obvious reasons, but adds a new layer of problems since its such a big language. Very few C++ compiler vendors implement the language exactly to the specification.

I think the article needs to be significantly revamped to include this kind of background. Also get rid of the nonsense about Game Programs -- they are the same as any other program. Qed 02:46, 28 January 2006 (UTC)

Rename to Software portability[edit]

Any objections? --Piet Delport 16:00, 29 June 2006 (UTC)

This is a good idea. Porting is really not a good title. Moreover, this article really doesn't do justice to the concept of software portability, which is such an important and rich topic in the field. Perhaps we take the portability of C compilers for granted today, but multi-target compilers, and the ability to write applications that can run on many platforms, is really a big deal. Trevor Hanson 20:54, 18 April 2007 (UTC)
On further reflection, I think porting and software portability are distinct topics, each deserving an article. The former is about moving an application to a new platform; the latter is about multi-platform software technology, e.g. retargetable compilers. I have put in some maintenance tags to this effect. Trevor Hanson 21:06, 18 April 2007 (UTC)
I agree, they are two separate topics and should not be merged. Porting is what you do when you do not have portability. Lsi 21:03, 5 June 2007 (UTC)
Clearly settled a year ago. Removing tag. --Treekids (talk) 04:02, 13 June 2008 (UTC)


Another meaning of porting[edit]

Porting is also the pratice of putting holes into the barrel of a gun to reduce recoil and lower bullet speed. While software porting is probably the most common use, maybe there should be a porting disambiguation page? (I would make one but I am not sure how and don't want to break wikipedia) 19:15, 17 April 2007 (UTC) Trent

Also the practice of polishing the valve ports in a cylinder head to improve gas flow and increase performance in an engine. Sweavo 15:53, 5 July 2007 (UTC)

This is a mess[edit]

The words "portable" and "portability" are very general. The specific vocabulary has to be fleshed out here.

For example: Java is a system-portable programming language because it runs on different hardware systems using different operating systems.

Example 2: The data set for a Lucene (Java) search is compatible with the application; so Lucene data sets are application-portable between different platform versions of Lucene.

Example 3: Miranda IM is a self-contained Windows application; all software required for execution, other than the OS itself, is included in the Miranda IM directory. Since its operation (configuration, data storage, etc) is dependent on any Windows OS, but not a certain one, it is Windows OS-portable.

Example 3: "for(;;;){x++}" code compiles and works in both C and C++ languages; therefore it is programming language-portable between these languages.

The action of "porting" code from one language or platform to another is a different topic than the above types of computer software portability.

Story about "ports"[edit]

A recent contributor added a story about porting which claimed that the word comes from the use of the serial port to transfer files. Well, first of all, porting is not file transfer -- it is about transferring to a different operating environment, including processor, libraries, or operating system. This typically involves rewriting parts of the system, configuring it differently, recompiling it, etc. File transfer is not considered part of the process, though obviously it has to happen at some point. Secondly, people talked about software portability and porting long before there were PCs with serial ports, by the early 1960's at least. So I have removed this unreferenced and implausible claim. --Macrakis 21:28, 5 June 2007 (UTC)

@Macrackis, no, I claimed the the word comes from the use of the serial port to transfer files between incompatible systems. First of all, how do you effect a migration to a new environment without using a file transfer? Sourcecode and datafiles are files that need to be transferred to the new environment. Second of all, how are you gonna do this when your systems are incompatible, and you have no network? You use the serial port, friend! And lastly, I didn't mention PCs, you did. I said serial port, that means RS-232 and 1969 according to RS-232. However I do concede I can't reference my "story", I just told it how I did it back then. So I have left it removed. 23:38, 5 June 2007 (UTC)

I agree that file transfer between systems was not always easy, especially with different word sizes, byte sizes, tape formats, etc. But that is file transfer, not porting. It's all well and good to get the bits from a GE-645 to a PDP-10, but that won't make your application run. --Macrakis 23:55, 5 June 2007 (UTC)
I agree with what you say. In the days when systems were incompatible, the file transfer was a critical technical issue to overcome, as the first stage of any migration, with the following stages of adjusting the code, massaging the data, recompiling etc as you say. Note the serial port is used in the first stage. Also, a "port" would have been attempted with data before someone attempted it with code - the serial port would have still been used, however. This is why I'm certain of my story. I cannot find a reference though, not even in the jargon file, its glossary has no entry for porting at all. That's just what we called it, when that was the way a migration was done, because no other options were available as almost everything was incompatible with everything else. 00:14, 6 June 2007 (UTC)

This story sounds like a folk etymology to me. The relevant sense of the English word (meaning to carry, bear, or transfer over) actually dates back all the way to ancient Latin portare. --Piet Delport 00:57, 6 June 2007 (UTC)

I found one reference to the origin of the word, this page says "port" is short for "transport". 01:45, 6 June 2007 (UTC)

I agree that this story is likely a folk etymology. But to "port" in the sense of "to adapt software written for one system for another" is more likely a back-formation from portable/portability. As for the jwc678 glossary, is there any particular reason to believe it is right? --Macrakis 01:51, 6 June 2007 (UTC)
portable and portability themselves derive from the old verb, though. It's not a back-formation (which implies neologism), but a usage revival a new context. --Piet Delport 05:33, 6 June 2007 (UTC)
I'd argue that it IS likely a back-formation, since "portable" like in portable attache case, or portable radio, was a word with connotations of being conveniently relocatable. You would never say you wanted to port your television into the bedroom. It seems intuitive that "portable" was applied to software as a metaphor referring to this type of portable appliance, then later "port" came about as a pun on portable. "Is this program portable? Well, let's port it and find out!". After all, you do not carry a piece of software when you port it, you unpick it and stitch its roots into a new lower layer. Sweavo 16:01, 5 July 2007 (UTC)

Perhaps the contributor did, personally, refer to transferring files between systems as 'porting'. (I wonder how long ago this person's experience occurred? 1980? 1970?) Regardless, software portability has been a computer science topic since at least the 60s. One commonly heard things like "I'm writing a new port of the C compiler" in the 70s. Retargetable and portable compilers, key technology for all portable software, were well-established by the 70s. The XPL language and compiler generator, for instance, was documented in a well-known book published in 1968 (William M. McKeeman, James J. Horning, and David B. Wortman, A Compiler Generator, ISBN 13-155077-2), and was used for ports to several target system. The compiler was itself written in XPL, a technique adopted for early C compilers. (This was a departure from earlier compiler development strategies, which typically required rewriting the compiler anew for each processor, e.g. early FORTRAN and COBOL compilers.) Note that, in those days, software was not typically transferred via serial port, but on physical media such as magnetic tape or punchcards. Using the serial port for file transfers wasn't common until a) computers had standardized serial ports, and b) standardized file transfer protocols like XMODEM (late 70s) and KERMIT (early 80s) were readily available. Perhaps the obvious point should be made: You wouldn't try to move files across a serial port until you had compatible software running at both ends. This was generally accomplished by running the same (portable) application at both ends. Ergo, software portability was a precursor to 'serial porting'. Trevor Hanson 19:42, 6 June 2007 (UTC)

The idea of moving a program from one computer to another, or writing programs so they would work on multiple computers, is very old. See for example my paper "From UNCOL to ANDF: Progress in Standard Intermediate Languages" (Open Software Foundation Research Institute, RI-ANDF-TP2-1, January, 1992. Available at CiteSeer) which discusses a compiler-based approach. But I am not sure about the history of the vocabulary, so I did a bit of investigation with Web resources and here is what I came up with....

Oxford English Dictionary
1971 citation for 'portability'
1984 citation for 'porting'
There is also a 1972 citation, but it is not about software porting (mistake in OED):
1972 Computer Design Nov. 107 Problems encountered in peripheral sharing applications..are identified, and implementation details for a dual porting technique which overcomes them are presented.
1976 citation for 'port' (verb in this sense)
A bibliography on porting with 69 entries from 1969-1997.
1972 portability
1975 portable
1978 porting
1992 port (v)
The 1969 article in this bibliography calls portability "mobility".
In the ACM online service (which has a terrible search function, so I probably didn't get everything), there is:
1969 portable
J.B. Kruskal, "Extremely Portable Random Number Generator", Communications of the ACM 12:2 (February 1969)</ref>
1969 portable, portability
J.E. Rodriguez, "Program Portability, Data Manipulation Languages, and Data Description Languages", SIGMOD fdt 1:2 (December 1969), never uses "port" or "porting"
1973 portable/portability/transferable/transferability
Maria F. Weller, "Report of session on transferability", ACM SIGPLAN Notices 8:9 (January 1973) uses the words "transferable/transferability" and "portable/portability" pretty much interchangeably and ubiquitously, but uses only "transfer" as a verb, never "port" (well, I skimmed a lot, so I may have missed something).
In the seminal Software Engineering Techniques (conference sponsored by the NATO Science Committee), October 1969 full text
Many uses of "portable" and "portability", a few uses of "transport(ability)", zero uses of "porting" or "port".

It seems pretty clear from all this that "portable" and "portability" were in use by about 1969 -- when a verb was needed, it was typically "transport" -- while "port" and "porting" started being used in about 1976. So "port" does seem to be a back-formation from "portable" and perhaps also "transport". Of course, the verb "port" existed in other senses, but the transfer of this sense seems to have come from "portable" and "transport", not directly from the other senses. --Macrakis 03:52, 7 June 2007 (UTC)



I feel that portability must bementioned in this article, and preferably in the lead. Whether or not we eventually decide to split it into two articles, presently we have no significant division of content. All we have on software portability appears to be contained in this article. --Tony Sidaway 02:07, 16 January 2008 (UTC)

What about video disc formats?[edit]

I've used the term port to refer to HD-DVD only titles being, well, ported to Bu-ray if the resulting discs are virtually identical in features and I see no reason why it can't also be used for things like high-def DVD's that contain only identical features of the DVD. (no more, no less) And what about DVD releases that duplicate laserdiscs like the Chasing Amy Criterion Collection release? Or maybe some DVD releases to UMD? For that matter, there are DVD releases that are just like their VHS counterparts, sometimes even without menus. (rare, but I own one such DVD) In time I expect the term "port" to be used more commonly as more and more HD-DVD only releases come out on Blu-ray and I'm wondering if the article should or could mention this. —Preceding unsigned comment added by (talk) 02:00, 25 May 2008 (UTC)

Porting Embedded Software Across OS Platforms[edit]

POSIX portability standards & level of support are not the same across various OS platforms. More and more, the embedded applications demands more low-level and real-time features from the OS and as such developing your own OS Abstractor may not be practical, however can be done with enough development time & money. A sample of this OS Abstraction low-level & POSIX APIs can be found in the links below: —Preceding unsigned comment added by (talk) 19:10, 14 June 2008 (UTC)