When we talk about the impact of Linux, the kernel that turned 30 this summer, we tend to focus on its technical results: how it formed the basis of a wide range of server operating systems. , desktops, mobile phones, cloud computing and beyond. But, arguably, Linux’s ultimate importance is not in its technical advantages, but in the way it has changed the way developers work. Without Linux, the way many programmers program – indeed, even the way they think about the software engineering model – would probably be quite different.
To prove this point, here are five ways Linux has revolutionized software development and the software engineering model since its introduction in 1991.
1. Large distributed teams of programmers
Linux has proven that large, distributed, unruly developer teams can create viable software.
Before Linux, most software was developed by small teams of programmers working in close coordination with one another. This 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 effectiveness.
From its inception, the Linux kernel was developed using a different approach – an approach in which programmers all over the world – who in most cases had never met – wrote and integrated code in a fast fashion. and not very organized. By going out early and often, they made it work.
The success of Linux – which Eric S. Raymond famously summed up by comparing Linux development to a “mess” unlike the “cathedral” approach used by most teams before 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 has taken over.
2. Reuse of third-party software
Part of the reason Linux has become very popular among software engineers relatively quickly is that Linux – and free and open source software more generally – makes it easy to reuse code written by other people.
Today, the reuse of third-party software is common, even among development teams whose products are not themselves open source. It’s hard to imagine building an app today without using upstream software libraries, third-party APIs, or other resources external to your own project.
Certainly, projects like GNU, which predated Linux by seven years, promoted code reuse before Linux came along. But, arguably, Linux was the project that mainstreamed free and open source coding practices, helping to create the software engineering model of modular and reusable software components.
3. Modern source code management
Linus Torvalds, who created the Linux kernel while a student in Helsinki, is most famous for this work. But an often overlooked fact is that Torvalds is also the father of Git, the hugely popular open source code manager.
Torvalds created Git to help manage Linux source code. If Linux didn’t exist, neither did Git. Neither GitHub, nor GitLab nor GitOps. And above all, the culture of sharing and open collaboration that these technologies foster would not either.
4. “App Store” software deployment strategies
Apple can take credit for launching the first App Store, a place where developers can share apps 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 core software deployment strategy, especially but not just in the mobile ecosystem – owes a lot to what Linux developers were doing through software repositories long before app stores became mainstream in the proprietary software world.
Software repositories on Linux do more or less the same thing as app stores – they allow users to select the apps they want from a centralized list online, then install them with just a few clicks or commands.
Certainly, companies like Apple deserve credit for creating very user-friendly app stores. And the story of the app store concept in general involves more players than the Linux community and Apple. Still, I think it could be argued that without Linux and the Linux software repositories, app stores as we know them today wouldn’t exist.
5. Community enthusiasm
Last but not least, Linux’s biggest lasting impact on the software engineering model probably comes down to what you might call community enthusiasm.
I’m referring here to how Linux in particular, and free and open source software in general, have encouraged developers of all stripes to view community contributions as one of their end goals.
In an open source world where contributions to open source projects can be career accelerators and where open source code is widely reused, developers understand that there is real value in creating software that can benefit as many people as possible. possible users.
Perhaps developers would appreciate the community as a whole if Linux and open source had never existed. But I find it hard to imagine a world where competitors like Red Hat and Google, or Intel and AMD, would work side by side to create Linux software if Linux hadn’t popularized the concept of community software projects that no one owns. really. , but everyone uses it.
Certainly, the software engineering model has been shaped by many influences besides Linux. But in ways it’s easy to forget, Linux has played a disproportionate role in the way developers work and think today, in areas as diverse as source code management and application distribution. .