Dennis Ritchie and Richard Stallman tripping on Acid in a corpor

A short history of the C language with focus on licensing

Explore the history of C language through licensing milestones, from early adoption to the rise of Clang/LLVM and musl in the modern era.

November 13, 2024· 4 min read
9 score

The history of the C language and its ecosystem is deeply intertwined with the evolution of computing, software licensing, and corporate strategy. Here's a chronological journey of how C, its implementations, and the actors around it shaped its trajectory.

Birth of C (1969–1973)

Key Actors: Dennis Ritchie, Bell Labs, AT&T

Origins:

C was developed by Dennis Ritchie at Bell Labs between 1969 and 1973 as an evolution of B, which itself was a simplification of BCPL.

It was designed for the UNIX operating system, enabling efficient, portable, and low-level programming.

UNIX and C became tightly coupled, influencing each other's development.

Copyright Context:

At the time, AT&T owned Bell Labs and the rights to UNIX and C. However, due to its regulated monopoly status, AT&T could not directly sell software. Instead, UNIX and C were shared with academic institutions, fostering widespread adoption.

Early Adoption and Standardization (1974–1989)

Key Actors: Universities, GNU Project, ANSI

Rise of UNIX and C:

C spread rapidly in academia and industry because of its compact syntax, efficiency, and close relationship with UNIX.

It became the lingua franca for systems programming, particularly as UNIX was ported to different hardware.

Proliferation of Flavors:

Each UNIX vendor began creating its own C compiler (e.g., Sun's cc, HP's cc) with slight variations, leading to portability challenges.

Licensing and the GNU Project:

The late 1980s saw the rise of the Free Software Foundation (FSF) and the GNU Project, founded by Richard Stallman. The GNU Project aimed to create free alternatives to proprietary UNIX tools, including a free C compiler: GCC (GNU Compiler Collection).

GCC, released under the GPL (GNU General Public License), became one of the most important C compilers, combining high performance with open-source licensing.

Standardization:

In 1983, the American National Standards Institute (ANSI) formed a committee to standardize C, culminating in the ANSI C standard (C89) in 1989. This reduced fragmentation and made C more portable.

Commercialization and Fragmentation (1990s)

Key Actors: Microsoft, AT&T, GNU/FSF

Proprietary Compilers:

Companies like Microsoft, Borland, and Watcom released their own proprietary C compilers for DOS and Windows.

Microsoft’s Visual C++ compiler became dominant in the Windows ecosystem, though it also supported C.

Decline of AT&T's Influence:

AT&T sold its UNIX assets to Novell in 1993, reducing its direct influence over C's trajectory.

UNIX itself began to fragment into proprietary systems (e.g., Solaris, AIX, HP-UX) versus free derivatives like Linux and BSD.

Rise of GCC:

GCC gained prominence in the open-source community as Linux and BSD adoption grew. Its GPL license ensured that improvements to GCC were shared, fostering rapid innovation.

The Open-Source Era and Clang's Emergence (2000s)

Key Actors: GNU/FSF, LLVM Project, Apple

GNU Dominance:

By the early 2000s, GCC was the default compiler for most open-source projects, including Linux. Its licensing under the GPLv2 ensured that it remained free and open, but its governance by the FSF limited flexibility for some corporate users.

Challenges to GCC:

GCC's GPL licensing was perceived as restrictive by some companies, particularly Apple, which needed a compiler for its proprietary tools but didn't want to share source code under the GPL.

Birth of Clang/LLVM:

In 2003, the LLVM Project (Low-Level Virtual Machine) was launched, providing a modular, permissive alternative to GCC.

Clang, a frontend for C/C++ built on LLVM, emerged in 2007, championed by Apple. Licensed under the permissive Apache License, Clang allowed companies to modify and use it without open-sourcing their changes.

Clang vs. GCC:

Clang offered better error messages, faster compilation times, and a more permissive license, leading many projects to adopt it.

Modern Era (2010s–Present)

Key Actors: LLVM, GCC, musl

Clang’s Rise:

Clang/LLVM became the default compiler for macOS and iOS development and was adopted by Android and FreeBSD. Its permissive license made it more attractive to corporations than GCC's GPLv3 license.

GCC Evolution:

GCC remains dominant in the Linux ecosystem and is the default compiler for many Linux distributions.

Static Linking and musl:

Licensing issues with glibc (GNU’s C library) under the LGPL prompted the development of musl, a lightweight, MIT-licensed alternative libc designed for static linking and portability.

Licensing’s Role in C's Ecosystem

GNU GPL and GCC

The GPL ensured that improvements to GCC were shared, driving innovation but deterring corporate use in proprietary systems.

Apache License and LLVM/Clang

The permissive Apache License of LLVM/Clang encouraged corporate adoption by allowing proprietary extensions without obligation to share.

LGPL vs. MIT for libc

The LGPL license of glibc allows dynamic linking but complicates static linking due to redistribution requirements.

The permissive MIT license of musl makes it ideal for building portable, static binaries.


Key Milestones in the Rise and Fall of Flavors


Conclusion

The evolution of C and its ecosystem has been profoundly shaped by licensing decisions:

The GPL drove collaboration but discouraged proprietary use.

The Apache License of LLVM and MIT License of musl enabled broader corporate adoption.

Proprietary interests (e.g., Microsoft, Apple) fueled the rise of alternatives to GNU tools.

Today, Clang/LLVM and GCC are the dominant compilers, each thriving in different ecosystems. Meanwhile, alternatives like musl and the rise of static linking reflect ongoing innovation driven by licensing freedom and technical needs.

C guys

Related Articles