Imagine a restaurant where before being offered a seat you are mandated to pay for the dish in advance and sign an agreement to not try to reproduce any of the cuisine without prior permission from the management. You are then blindfolded and fed the dish. The recipe is a secret and even the chefs are legally forbidden from disclosing them.
Next, imagine a restaurant where you can ask to look for any of the recipes at any time and order your dish if you want to. Since nothing is holding you back from replicating the dish and/or selling it, the prices are extremely low. You are permitted to share the recipe with anyone along with any modifications you think that would enhance the dish. The chefs benefit from this and are able to better the dish with time. The community helps improve the quality of the dish.
The former restaurant may be profitable but can hardly be called ethical. It tries to sue and shutdown nearby restaurants which pose danger to its business. The latter respects your freedom of knowing what you eat.
In this analogy, source codes are the 'recipe' that a computer needs to generate softwares for the user while programming is the art of writing meaningful pieces of software.
Not everyone owns a restaurant or knows how to cook but everyone consumes food. We should be free to choose what we want to eat and understand our duty to ensure we give back the same to others as we expect of them.
You can read more about Software Freedom here.
Ideally, I envision Free/Libre Open Source Computing Standards at both the hardware and software levels which can hopefully one day be a practical reality.