# Object Windows Library

The Object Windows Library (OWL) is a C++ object-oriented application framework designed to simplify desktop application development for Windows and (some releases) OS/2.
OWL was introduced by Borland in 1991 and eventually deprecated in 1997 in favor of their Visual Component Library (VCL). Its primary competitor was the Microsoft Foundation Class Library (MFC). OWLNext, an open-source project driven by the OWL user community, has continued the maintenance of OWL, ensuring that the library and applications that use it work with the latest version of Windows and modern C++ compilers.

## History

In the early 1990s, Borland dominated the C++ market. In 1991, Borland introduced Borland C++ 3.0 which included OWL 1.0. At that time, C++ was just beginning to replace C for development of commercial software, driven by the rising of the Windows platform and the rapid adoption of object-oriented design. During this period, OWL was a popular choice for Windows application development.
In 1992, Microsoft introduced MFC as part of Microsoft C++ 7.0. As a similar C++ application framework for Windows, MFC immediately became OWL's primary competitor in the C++ application development market.
OWL 1.0 depended on Dynamic Dispatch Virtual Tables (DDVT), a proprietary extension to C++ that allowed the programmer to bind Windows messages (events) to functions (event handlers) in a simple manner and with little run-time overhead. MFC, on the other hand, used a solution that did not require a language extension.
In 1993, Borland launched Borland C++ 4.0 which included OWL 2.0. In this version of OWL, the proprietary DDVT extension was replaced by response tables, a macro-based solution compatible with standard C++ and similar to MFC in use. A conversion tool (OWLCVT) was included to migrate code from OWL 1.0 to OWL 2.0.
In April 1993, Borland and Novell signed an agreement to port OWL to Novell AppWare Foundation. AppWare Foundation was an API designed by Novell to be cross-platform, allowing the deployment of applications on Mac, Windows and Unix clients and with several network services. The main tools for developing in AppWare were OWL and AppBuilder. However, in late 1994, Novell CEO Raymond Noorda resigned. Novell expansion plans were reconsidered, AppWare development was stopped and so was OWL for AppWare. In 1995 a group of original team members bought AppBuilder. In the same year, Software UNO offered a commercial port for OWL 2.0 to several platforms: AIX 3.2.5, DEC OSF/1 AXP, HP-UX 9.03, Linux 1.2, Solaris 2.x, Sun OS 4.1.x, and SVR4 for x86. It was called WM_MOTIF.
In 1995, Borland C++ 4.5 with OWL 2.5 was released. As it was released before Windows 95, Borland promised a free upgrade for any incompatibility present in the final Windows version. In August 1995, Microsoft launched Windows 95 and Visual Studio 4.0. By then, Visual Studio had already eclipsed Borland C++ in shipments, and it was clear that OWL was losing ground to MFC.
In 1996, Borland released Borland C++ 5 for Windows. This version included OWL 5, a major revamp of the library. While OWL 5 received a minor update with the release of Borland C++ 5.02 a little later, version 5 would end up as the final version of OWL by Borland.
In 1997, Borland released C++Builder and deprecated Borland C++. OWL was included on the Companion CD that shipped with C++Builder, but Borland ended maintenance and further development of the library.
In late 1999, Borland stopped selling Borland C++ and OWL.

## OWLNext

Shortly after Borland ended the development of OWL, maintenance was taken over by a group of users led by Yura Bidus. This effort evolved into the OWLNext open-source project currently hosted at the SourceForge site. OWLNext is a modern update and extension of OWL with support for the latest Windows versions and modern C++ compilers from Microsoft and Embarcadero Technologies.

## Shipped releases

| Product version | OWL version |
| Borland C/C++ 3.0 | OWL 1.0 |
| Borland C/C++ 2.0 for OS/2 | OWL 2.0 |
| Borland C++ 4.0x | OWL 2.0 |
| Borland C++ 4.5x | OWL 2.5 |
| Borland C++ 5.0x | OWL 5.0 |
| Borland C++Builder 4.0 | OWL 5.0 |
| Borland C++Builder 5.0 | OWL 5.0 |
| CodeGear C++Builder 2007 | OWLNext 6.20 |
| Embarcadero C++Builder XE | OWLNext 6.30 |
| Embarcadero C++Builder XE2 | OWLNext 6.32 |
Later versions of OWLNext have been released through SourceForge.