So, there are multiple steps and stages involved in creating an app.
What the developer writes is âsource codeâ. If the programming language is âinterpretedâ, that means that the written code is executed in that form. The venerable language BASIC is one of the most famous interpreted languages, but there are others. The biggest problem with interpreted languages is that they are slow to execute, because every piece of the code has to be translated into the computerâs internal language at time of execution, every single time that line is executed.
Most languages are âcompiledâ languages. Before the code can be executed, it has to be run through a program called a compiler, that takes the written source code and translates it into the computerâs language all at once, so that when the app is run, it doesnât have to translate those instructions on the fly. This makes it run much faster.
Pretty much every modern app is compiled. Interpreted languages are primarily for small-scale scripting these days.
After the code is compiled, it is packaged into whatâs known as a âbinaryâ (because thatâs all that computers actually know at the heart of things). This is the kind of app you can simply drag-install or run a simple installer for. The installers are usually for apps that have to put things on your system somewhere other than inside the app package in /Applications, though an increasing number of apps are bypassing the separate installer and simply doing these tasks when you run them the first time.
So, an app can be distributed as source code or a binary. Commercial products are pretty much always distributed as binaries. It saves the user the time and hassle of compilation, which requires having developer tools installed.
Open source, however, is frequently distributed as source code. There are many reasons for this, including the ones others have cited. An important one is the fact that binaries are extremely platform-specific. While commercial projects have the resources to build into their code provisions for multiple platform variations (running on an Intel or Silicon Mac, for example), open source projects are largely volunteer work. The developers will compile their code for their own machines, because thatâs how you test your code, but those binaries are just for them.
Until an âofficialâ release (open source projects are frequently eternally in beta), the intended audience is mostly tinkerers who are comfortable with the Terminal. The hope is that people who try the software can contribute to the development, not necessarily by adding actual code but by submitting detailed bug reports. Good bug reports require a certain level of understanding of how things work under the hood, one that the average user just doesnât have in this day and age. (Back in the early â80s, when I cut my programming teeth on Applesoft BASIC, just using a computer frequently required this level of understanding. That changed with the original Macintosh, and then Windows.)
What package managers like Fink and Homebrew do is act as an intermediary between source code and binary. Compilation normally requires a number of additional actions, including setting particular parameters for the compilation, ensuring that certain other libraries or apps are available to draw upon (these are called âdependenciesâ), etc. A package manager has access to the ârecipesâ to compile a wide variety of apps, so you can simply tell the package manager to install such-and-such app, and it will set up the compilation without you having to know the recipe. In most cases, a package manager will even find and download the source code for you, installing needed dependencies on the fly. All you have to do is tell it what app you want, and it fetches the parts, puts it together, and leaves you with a completed app.
Some others have brought up the cost of an official Apple Developer account as a reason for open-source software to not be distributed as binaries. This may be a reason for some projects, but itâs a very minor reason. Appleâs blessing is needed only to have a signed developer certificate and to distribute on the App Store. (App Store distribution is still necessary on iOS/iPadOS unless you live in the EU, but itâs not required on a Mac.) Not having paid the Apple Tax does not prevent one from distributing a Mac app as a binary. It does add an extra step for the user to initially run it, but thatâs all.