Are there any sources for the argument why this should apply to software and not to, say, farm equipment? The cash flow and taxation story seems to be the same.
When you buy farm equipment, you're getting something that (barring manufacturer defects, natural disasters, etc) is (nearly always at least) a long-term asset going to be providing a very predictable level of value over the next many years. Same with computers and things like that. With software development, the predictability is almost entirely non-existent for new and/or smaller software companies. I've personally worked on many projects/codebases that either never shipped or threw away huge parts of the code before shipping.
You're not really taking a financial gamble .
Also I think it's worth mentioning that, software engineers are people who are paid salaries, while farm equipment is not.
A more accurate comparison would be if instead of buying a finished tractor you hired a couple of handymen to come build you one from scratch. It may or may not work at all. It might end up costing you 10x or 20x or more what you would have paid for an off-the-shelf solution (so valuing it at the labor cost is a ridiculous thing to do. Who in the market is going to buy a custom-built tractor at 20x the market rate?)
How is farm equipment predictable? Droughts and floods make farming unpredictable.
There is an analogous set of rules for things like farm equipment. It is called accelerated depreciation and the government has used it for decades to increase incentives for purchasing capital equipment.
Because software development did not already fit in the definition of a capitalizable expense, the lawmakers modified the research and development rules to allow it.