This is an opinion editorial by niftynei, a developer
educator who runs the Base58 Bitcoin protocol academy and an
organizer of the upcoming, Nix-focused Bitcoin++
conference.
When you want to install a new app on your computer, where do
you get it from?
Deciding which source to use is a problem that's surprisingly
difficult to solve, but it's one that every computing platform
struggles with.
Before the internet was widespread, new software packages were
distributed on hard media, like CDs or Core, for example, you'd
need to buy it physically at the store or have it mailed to you.
You'd then load the disk or USB stick into your computer, and make
a copy of the new software onto your local disk.
As a developer writing code, you'd have to physically hand out
copies of your programs to friends and family. Or you'd work for a
large corporation that had relationships with companies and
computer stores, which would figure out how to get the software you
wrote distributed to their clients and customers.
With the advent of always-connected computers, the landscape of
software distribution forever changed. Now, instead of having to
physically pick up a copy of the bits in a program, you can easily
download a copy of it from the internet.
This made it much easier for new developers to write apps that
anyone can download. The problem now, however, is answering the
question: Where on the internet should users download the new
software from?
The Hacker's App Store
The way that mobile phone ecosystems solve the problem of new
application distribution is through a program on your phone called
the "App Store" (or the "Google Play store" on Android).
Developers upload the latest copy of their apps to either
Apple's or Google's servers. Those companies then send out a silent
notification to all of the phones that have the app installed, and
the app gets updated in the background on users' phones, without
the users involvement.
If you're a user and you want to add a new app to your phone, in
most cases you'll be able to find it in the App Store, and download
it from there.
But not all software is available as a mobile phone app. Some
software projects are desktop apps or tools that developers use to
write new pieces of software. These applications need a
distribution channel too. On desktop operating systems, we tend to
call the "App Store" software by the term "package managers." They
manage the packages of software that you download onto your
computer.
Modern package managers consist of a central server, sometimes
the app, and a client-side application which runs on the package
user's computer.
If you're a developer, you've probably run into homebrew
or...