governance merged 1997

GCC EGCS

Community fork to accelerate development. Became the official GCC in 1999. The fork took over the project.

What it is

GCC (GNU Compiler Collection) is a compiler system that supports C, C++, Fortran, and other programming languages. It's the default compiler on most Linux systems and supports dozens of hardware architectures. In the 1990s, it was the critical piece of infrastructure that made free Unix-like operating systems practical.

The story

By the mid-1990s, GCC was the most important compiler in the free software world—and one of the most frustrating to contribute to. The GNU Compiler Collection was maintained under Richard Stallman's FSF with a philosophy that prioritized stability and the GNU project's needs above all else. Experimental work piled up in external forks: Cygnus Solutions maintained their own patches, the Linux kernel developers had optimizations that couldn't get merged, the pgcc (Pentium GCC) project had Intel-specific improvements, and the Fortran community had their own fork. Everyone was doing great work. None of it was making it into mainline GCC.

On August 15, 1997, developers from Cygnus, the Linux community, and several other factions announced EGCS (Experimental/Enhanced GNU Compiler System, pronounced 'eggs'). The announcement came from D.V. Henkel-Wallace at Cygnus. The premise was simple: merge the scattered forks, accept contributions more readily, and develop more aggressively. Jeff Law coordinated the effort, handling releases, merging patches, and keeping the project on track.

The results were dramatic. EGCS development outpaced GCC development almost immediately. While FSF's GCC languished, EGCS shipped better optimization, added new architecture support, and attracted the developer energy that had been frustrated by GCC's slow pace. Linux distributions started shipping EGCS instead of GCC.

By April 1999, the FSF acknowledged reality: they halted GCC 2.x development, blessed EGCS as the official GCC, and appointed the EGCS team as the new GCC maintainers. The EGCS Steering Committee renamed itself the GCC Steering Committee. GCC 2.95, released in July 1999, was the reunification release. It was a hostile takeover disguised as a merge—and everyone was better off for it.

The EGCS fork fundamentally changed how GCC was governed, replacing the FSF's centralized gatekeeping with a community steering committee model that persists to this day.

Timeline

GCC 1.0 released by FSF

EGCS announced as a merger of experimental GCC forks

EGCS 1.0 released, quickly adopted by Linux distributions

FSF blesses EGCS as official GCC, EGCS team becomes GCC maintainers

GCC 2.95 released as the reunification release

Key people

Jeff Law
EGCS release manager and coordinator, later GCC Steering Committee
D.V. Henkel-Wallace
Cygnus engineer who made the initial EGCS announcement
Richard Stallman
FSF founder whose conservative GCC gatekeeping motivated the fork

Impact

EGCS is the rare fork that didn't just succeed—it consumed the original. The fork-then-merge pattern it established became a template for other projects, most notably when the community fork proves more vigorous than the official version. The GCC Steering Committee model that emerged from EGCS still governs GCC today.

The fork also demonstrated that even the FSF's flagship projects weren't immune to community pressure. It shifted power from a single organization to a broader community of stakeholders, establishing a governance precedent that influenced numerous subsequent projects.

Lesson: When the gatekeepers won't open the gate, the community will build a new one—and everyone will use it instead.