Personally I see what's going on as just regular capitalism at work. A new thing was discovered (the internet) and people tried different ways of exploiting it to provide value. One of the tools people used was loss leader [1]. Now people seem to be putting less faith in the loss leader strategy for various reasons and switching back to a "pay up front" or "pay as you go" model.

It's true that a lot of companies have been consuming loss leader products but not the products that cover the costs (e.g. not giving the creator of the software a job, not purchasing an upgrade, etc.). This is equivalent to buying milk and nothing else at e.g. Walmart. They wont stop you. They probably don't even have a provision for people who buy nothing but milk over and over. They don't need one because they've spent a long time developing techniques to make sure you wont do that. In fact, if someone did start doing that it would be a good indication to the company that they need to adjust something. The internet hasn't been at this nearly as long as retail so it's no surprise that a feeling out process is going on.

Existing (stable) software has a very tangible value. With it you can accomplish much more than without it. You can take on more contracts and/or charge higher rates than you could without it. I think the fact that developers have previously been able to provide complete products by taking a smorgasbord of loss leader items and bundling them together with a little bit of their own glue was a market oversight that is now being corrected [2]. We can still be profitable if paying for the software we use. What would e.g. a home builder do if nails he used to buy at loss leader prices were suddenly priced at a profit? He wouldn't go out of business, he would pass the costs on one way or another.

Of course one could say "but I did pay them! I contributed 10 patches!", but this doesn't work because what happens if all clients "pay" this way? You have to have some way of enticing clients into buying your other products (e.g. hiring you into their company, etc.). In retail this works out ok in practice because companies tend to all do loss leader on the same things (everyone does milk for example). In software we're not all selling the same product so you can have situations where developer/company A has best-in-class product X as loss leader and product Y for a premium, while developer B has best-in-class product Y and sells Z for a premium. External parties take X from A, Y from B and Z from a vendor that is able to sell it cheaper because they aren't using it to cover losses on some loss leader product.

I think a lot of people have been blind to what's actually been going on because there has been (for a lack of a better phrase) religious zealotry involved. People saw (and participated in) "free software" and assumed that everything was changing. It was a bold new world where everything was going to be free! Except rent, groceries, etc. [3] It wasn't. It was just plain old capitalism that existed before we were born and will almost certainly still being going on after we're all dead.

[1] Give away your code and get one or more of:

a) a job based on your proven expertise (e.g. Alan Cox)

b) a paid contract for providing support (e.g. Redhat)

c) more traditional loss leader model of giving away part
of the offering while making the costs up elsewhere (e.g. "freemium", etc.)

d) advertising with the free product

[2] This would be equivalent to Walmart doing loss leader with meat, Safeway with bread, Target with vegetables, Home Depot with tables/chairs, Hobby Lobby with plates/silverware and us opening a hamburger shop.

[3] This isn't to say that e.g. the free software movement doesn't have a good moral foundation. I think they do. It was just never realistic to think that software can join this global gift economy while nothing else does. It would also be very unrealistic to think all other industries would look at what was happening and say "gosh! Lets give all our stuff away free to!".