In a free market, over time, competition in the production of a commodity product will eliminate all profits. Bread-makers can sell their bread for enough money to cover the cost of the capital invested in the bakery, the cost of the flour, yeast, sugar, and water, the fuel needed for firing, and the salary of the baker. They can earn no more money than that. If they did, then another bakery would be established which would price its products lower, splitting that profit between the customer and the owner of the new bakery.
In order to earn a profit, you need to do something special (called a franchise). This could have several forms: you could create something new that nobody else has. You could have an exclusive territory assigned to you (as in the traditional franchise, such as McDonald's etc). You could have help from the government, in the form of a patent or copyright. Or you could have a professional certification, such as a law or medical degree, without which one is prohibited from practice -- and possession of which is controlled by other lawyers and doctors who are sure not to give out too many.
In the case of software development, you can copyright and/or patent your software (although it's dodgy that both apply, since the theory is that they can't both be used on the same work). Or, you can write your software in such a way that it is inextricably tied to a piece of hardware which only you sell. Or you can develop an expertise with a piece of software which nobody else can or will reproduce.
Or you can simply not worry about getting a franchise because you know that only certain types of people have the ability to program. If true (and I believe it to be true) then programmers will forever command higher than usual salaries. And the more demand for programmers, the better-off will be programmers. And the more use of software, the more demand for programmers. And the less expensive is software, the more wide will be the use of it.
Every process is a mix of inputs. The ratio of inputs depends on the cost of these inputs. The process gets changed over time to handle the varying cost of the inputs. If one of them becomes cheaper, it becomes a larger factor in the production.
I believe that there is sufficient evidence to say that Open Source and free software lowers the cost of production of software, and hence will ineluctibly raise the salary of programmers, even as these programmers give away more and more of their software.
All of this, of course, is in complete opposition to Stallman's GNU Manifesto. He attempts to rebut objections to GNU's goals. He repeatedly makes the claim that free software will reduce programmer's pay. I claim otherwise. Hopefully Stallman has changed his mind.