Can all software be free?

Those who believe that all software should be free have little understanding of the overall software business.  There are free versions of widely popular packages like text editors, web browsers, and web servers that have all of the functionality of proprietary programs, but most of those programs are relatively small (under 200,000 lines of code) and limited to the types of things that programmers like to use.  So there’s a large pool of talented and interested individuals available to write and maintain the package.   In addition, these programs are usually substantially completed by a very small group of developers before they are released as free software.  Free software can work in that niche.

On the opposite end of the spectrum is large vertical market packages that require a lot of vendor support.  The companies that create these packages must charge for something, because they’re paying programmers to create the programs.  These applications (customer resource management and business intelligence, for example) are very large (millions of lines), and not terribly interesting to most programmers.  Programmers work on this software primarily because they get paid, not for fun.  The free software community’s contention is that companies who create these packages can make the program freely available and still make money by providing services.  It’s been done to some small extent, but I doubt that it can be done successfully in general.

There is a huge middle ground between these two extremes that consists of software that takes a group of developers a long time to create (a year or more for a manageable team of fewer than 10 developers), using a combination of in-house code and purchased components.  These applications will have maybe 500,000 lines of in-house code combined with that much code in third-party components.  These are smaller vertical market packages that don’t require much vendor support, but they’re not useful to enough people in order to be inexpensive, nor interesting enough that programmers would create them for free.   I can see no way that these types of packages can be successfully distributed as free software.