Ideally, free software, such as gcc, linux, gimp, firefox, and many others, are developed by enthusiasts for free. Private companies can also plays the role of the "enthusiasts", if they have the wish to do so.
The more I gain experience developing software, the less I can actually belive this is really as that. For the following reasons :
1) Developing software might be a very cheap activity (you just need a computer to do it), but it takes time, *a lot* of time, especially if you want to develop good software (i.e. no crashes, memory leaks, instabilities, compatible with all kind of PC hardware, etc, etc...)
2) Some of those software are absolutely gigantic in size, much larger as anything you'd write for a hobby. For example the latest version of gcc is 6.4 million of lines of code (according to cloc). Personally I wrote several application that are arround 3-5k lines of codes, and they were huge investments from me, by that I mean I spend whole weeks of vacation into them in addition to a few weekends and evenings. People developing gcc did 3 orders of magnitude more work than my huge investment (this is not the only measure I know, but it gives an order of idea), and there is only about 50 major developers, which means they all did roughly 100 times the investment I made, which is simply unimaginable.
3) Trying to get a hold of how software someone else wrote works internally is very hard, much harder than actually developing your own from scratch. Therefore, if you have an idea for a small improvement in a free software and want to actually implement it, it takes probably a thausand times longer to find where you should modify the source code than to actually modify it to implement your idea.
4) As some free software projects are gigantic and have many contributors, there should be people who takes the major decision as how the project evolves. If there is more than a couple of developers it can quickly become a nightmare if everyone comes with its ideas and such. For adding new features I think it can be imaginable a random guy does it during it's free time. However, when it comes to optimizing or re-arranging the existing code to be more maintainable or more efficient, it is a major decision that has to be taken by someone leading the project.
For all these reason I can't believe free software is developed by random enthusiasts during their evenings, or even by university laboratories or companies that are willing to help developing a free software project for whatever good reason.
Only paid professionals can do significant development of such works. But who are they, exactly (I'm not asking the names, who I don't really care, but what kind of guy are they / what is their jobs).
If you still don't get why I mean, I really dare you to make a small improvement to a big project such as gcc, gimp or the linux kernel, a change that make any sense of course, and get it accepted. I really dare you. You'll probably cry just looking at the quantity of files in the source code, having no vague idea where the module that handles your part is located.
The more I gain experience developing software, the less I can actually belive this is really as that. For the following reasons :
1) Developing software might be a very cheap activity (you just need a computer to do it), but it takes time, *a lot* of time, especially if you want to develop good software (i.e. no crashes, memory leaks, instabilities, compatible with all kind of PC hardware, etc, etc...)
2) Some of those software are absolutely gigantic in size, much larger as anything you'd write for a hobby. For example the latest version of gcc is 6.4 million of lines of code (according to cloc). Personally I wrote several application that are arround 3-5k lines of codes, and they were huge investments from me, by that I mean I spend whole weeks of vacation into them in addition to a few weekends and evenings. People developing gcc did 3 orders of magnitude more work than my huge investment (this is not the only measure I know, but it gives an order of idea), and there is only about 50 major developers, which means they all did roughly 100 times the investment I made, which is simply unimaginable.
3) Trying to get a hold of how software someone else wrote works internally is very hard, much harder than actually developing your own from scratch. Therefore, if you have an idea for a small improvement in a free software and want to actually implement it, it takes probably a thausand times longer to find where you should modify the source code than to actually modify it to implement your idea.
4) As some free software projects are gigantic and have many contributors, there should be people who takes the major decision as how the project evolves. If there is more than a couple of developers it can quickly become a nightmare if everyone comes with its ideas and such. For adding new features I think it can be imaginable a random guy does it during it's free time. However, when it comes to optimizing or re-arranging the existing code to be more maintainable or more efficient, it is a major decision that has to be taken by someone leading the project.
For all these reason I can't believe free software is developed by random enthusiasts during their evenings, or even by university laboratories or companies that are willing to help developing a free software project for whatever good reason.
Only paid professionals can do significant development of such works. But who are they, exactly (I'm not asking the names, who I don't really care, but what kind of guy are they / what is their jobs).
If you still don't get why I mean, I really dare you to make a small improvement to a big project such as gcc, gimp or the linux kernel, a change that make any sense of course, and get it accepted. I really dare you. You'll probably cry just looking at the quantity of files in the source code, having no vague idea where the module that handles your part is located.