When we talk about the impact of Linux, the kernel that turned 30 this summer, we tend to focus on its technical outcomes--how it formed the foundation for a diverse array of operating systems for servers, desktops, mobile phones, cloud computing and beyond. But, arguably, Linux’s ultimate importance lies not in any of its technical benefits, but in the way it changed how developers work. Without Linux, the way many programmers program--indeed, even the way they think about the software engineeringn model--would likely be quite different.
To prove the point, here’s a look at five ways that Linux has upended software development and the software engineering model since its introduction in 1991.
1. Large, Distributed Teams of Programmers
Linux proved that large, distributed, unruly teams of developers could build viable software.
Before Linux, most software was developed by small teams of programmers working in close coordination with each other. That was the approach recommended by computer scientists like Fred Brooks, who warned in The Mythical Man-Month that adding more programmers to a project tended to decrease its efficiency.
From its start, the Linux kernel was developed using a different approach--one in which programmers across the world--who in most cases had never met--wrote and integrated code in a fast-paced, loosely organized fashion. By releasing early and often, they made it work.
Linux’s success--which Eric S. Raymond famously summed up by comparing Linux development to a "bazaar" as opposed to the “cathedral” approach used by most teams prior to Linux--paved the way for today’s world of highly distributed software engineering teams. I also tend to think that the idea of continuous delivery and CI/CD owes more than a little to the bazaar-style software engineering strategies that Linux brought mainstream.
2. Reusing Third-Party Software
Part of the reason Linux became very popular among software engineers relatively quickly was that Linux--and free and open source software more generally--makes it easy to reuse code written by other people.
Today, reuse of third-party software is commonplace, even among development teams whose products are not themselves open source. It’s hard to imagine building an app today without making use of upstream software libraries, third-party APIs or other resources external to your own project.
Admittedly, projects like GNU, which predated Linux by seven years, were promoting the reuse of code before Linux came along. But, arguably, Linux was the project that brought free and open source coding practices mainstream, helping to create the software engineering model of modular, reusable software components.
3. Modern Source Code Management
Linus Torvalds, who created the Linux kernel as a student in Helsinki, is most famous for that work. But an oft-forgotten fact is that Torvalds is also the father of Git, the massively popular open source source code manager.
Torvalds created Git to help manage the Linux source code. If Linux didn’t exist, then, neither would Git. Neither would GitHub, or GitLab or GitOps. And most importantly, neither would the culture of sharing and open collaboration that these technologies sustain.
4. “App Store” Software Deployment Strategies
Apple may take credit for releasing the first App Store, a place where developers can share applications, and users can easily install them, using a centralized online catalog.
But as with many things Apple has done, the App Store concept--which is now a mainstay software deployment strategy, especially but not only in the mobile ecosystem--owes much to what Linux developers were doing through software repositories long before app stores became common in the world of proprietary software.
Software repositories on Linux more or less do the same thing as app stores: They let users select the applications they want from a centralized, online list, then install them with a few clicks or commands.
Granted, companies like Apple deserve credit for making app stores that are very user-friendly. And the history of the app store concept in general involves more players than just the Linux community and Apple. Still, I think one could make a strong case that, without Linux and Linux software repositories, app stores as we know them today would not exist.
5. Community Enthusiasm
Last but not least, probably the greatest long-lasting impact of Linux on the software engineering model boils down to what you might call community enthusiasm.
I’m referring here to the way that Linux in particular, and free and open source software in general, has encouraged developers of all stripes to view contributions to the community as one of their end goals.
In an open source world where contributions to open source projects can be career accelerators, and open source code is widely reused, developers understand that there is real value in building software that can benefit as many users as possible.
Maybe developers would value the community as a whole if Linux and open source had never come along. But I have a hard time imagining a world where competitors like Red Hat and Google, or Intel and AMD, would work alongside each other in building software Linux if Linux hadn’t popularized the concept of community-driven software projects that no one really owns, but everyone gets to use.
To be sure, the software engineering model has been shaped by many influences besides Linux. But in ways that are easy to overlook, Linux has played an outsize role in shaping how developers work and think today, in areas as diverse as source code management and application distribution.