Open architecture, in relation to computer programming, refers to a hardware system, network or even software that is able to be extended by users to provide new or expanded functionality. When dealing with software, open architecture means that, while a program performs on its own, either the entire source code for the program or a development kit is available so users can rewrite parts of the software or develop plug-ins and extensions to allow the program to perform new tasks. A computer or other hardware system that uses open architecture is usually constructed in a way so users are able to change, remove or upgrade components within the system. It also enables users to add additional hardware or modify elements of the system to increase what a machine can do or to streamline it toward a single task. A system or piece of software that is set and cannot be modified is known as using closed architecture but also can be called a proprietary system.
One of the features of using open architecture is that the system or software that an end user receives can be seen more as a generic tool. If the needs of a user or company change, then the hardware or software can be changed to remain relevant without the need to completely remove an entire system that is already in place. Depending on the type of system, such as a network or an operating system, it can be possible to fully change the basic functioning to accommodate evolving technologies or new business paradigms. This can be especially important for computers and network hardware, where components can be upgraded regularly as technology advances without destroying an existing framework that has already been installed.
The concept of open architecture arose from the development of systems that were completely closed. The earliest types of systems offered no way to upgrade components, and software had no mechanism in place for extensions. These proprietary systems had limited use and, as the pace of advancements increased, became obsolete increasingly faster.
Although there are still propriety systems in widespread use in the computer industry, many of these systems do offer the ability to upgrade or expand the core functionality. Unlike an open architecture system, in which several vendors could provide different and competitive upgrades, proprietary upgrades are usually only available through the manufacturer of the system and can command a high price for access. The reliance on a single manufacturer as a source for all parts, plug-ins and upgrades to a system is one of the reasons why open architecture is favored over proprietary systems in large-scale applications.