In a previous article, I wrote about why I tend to favour open source software. In this article, I will be covering specific programs that I, as a software developer, use every day to improve our flagship product.
Linux, or GNU/Linux, is an operating system. Operating systems are vastly complex programs and it’s hard to explain what they are; I’m not even sure I know. For a basic idea, think of Microsoft Windows or macOS; Linux is an alternative to those.
My go-to Linux distribution, Linux Mint, is similar to Windows in certain, somewhat superficial ways. It has a similar graphical user interface, including a menu for finding and launching programs, and a row of icons across the bottom of the screen for programs I use frequently. However, fundamentally, it is very similar to the operating systems used on most web servers.
I use Linux at work so I can run other programs which help me get work done. Most of these programs can be used on Windows or macOS, but some of them are written to run on servers and they tend to work better on Linux.
Not to be confused with an insult popular among Brits, `git` is an essential tool for software developers working on large projects.
At Invotra, we make many changes to our flagship product every day and we need a way of keeping track of them. `git` allows us to keep each individual change isolated from the other changes in a given release until they have passed our extensive testing process, and to merge them into the release when they are ready.
Our intranet has a complex architecture, making use of multiple virtual servers to provide a performant service to our users. We regularly need to replicate this environment on our work computers.
Although our work computers are pretty powerful, they aren’t as powerful as the web servers we use to host our live service. As such, attempting to replicate our multi-server environment on our work computers using traditional virtual machines would slow them down to a crawl.
Instead, we use Docker to replicate these virtual servers far more efficiently. Where traditional virtual machines would rely on a kernel for each virtual system, Docker relies on the host system’s Linux kernel, allowing it to replicate our cluster of servers far more efficiently.
I have covered just a small handful of open source programs that I use for software development every day. While many industries tend to favour proprietary, closed source software, in software development, many open source programs seem to have become industry standards.