Project revival: TwoSquares is preserving GNU Telephony's history and preparing an open-source revival. Contributors and collaborators are welcome.
GNU Telephony
Open-source telephony, preserved and being revived
From the historical GNU Telephony project

GNU Common C++: Portable Systems Framework

Documentation for GNU Common C++ (Common C++ 2), the portable C++ library providing cross-platform multi-threading, socket streaming, synchronization, and IPC for early GNU Telephony servers.

Superseded Framework

GNU Common C++ was superseded by GNU uCommon C++ for modern telephony servers. Preserved for legacy codebase maintenance.

ProjectGNU Common C++
Doc TypeFramework Architecture & Reference
Original Date2001-09-10 (Revised 2010-11-21)
RestoredOctober 2026
LicenseGFDL 1.2+
SourceHistorical Archive

§1Foundational Role in Early GNU Telephony

Before the C++11 standard introduced standardized threads (`std::thread`), mutexes, and smart pointers, writing portable, multi-threaded C++ network daemons across GNU/Linux, BSD, Solaris, and Windows was notoriously error-prone.

GNU Common C++ provided a highly cohesive, portable class framework: - Threading: `ost::Thread`, `ost::Mutex`, `ost::Semaphore`, and thread pools. - Sockets: `ost::TCPStream`, `ost::UDPSocket`, `ost::SocketService`. - Data Formats: XML DOM parsers, configuration file parsers, MIME encoding. - Memory: Shared memory segments, memory-mapped files, and thread-safe allocators.

§2Evolution into uCommon C++

As server architectures scaled and embedded VoIP hardware emerged, Common C++'s heavyweight object hierarchy and deep inheritance trees imposed unnecessary memory overhead. In 2006, David Sugar began developing GNU uCommon C++ as a streamlined, zero-overhead successor.

This page reconstructs material originally published at gnutelephony.org. It has been formatted and annotated for archival preservation.
Licensing & Attribution

Historical source: GNU Common C++. Reproduced or adapted under the GNU Lesser General Public License (LGPL) 2.1 or later where stated.

Document Revision Record

Historical revision date: 2001-09-10 (Revised 2010-11-21). Restored to permanent static archive in October 2026.