I like remote work to an extent, but its not that simple, and whether programmers "need" something or what "can" happen is a really not the best point to argue, because for example you don't "need" anything more than C if you require portable code to do anything that pretty much any other general purpose language does. I've also done these volunteer projects. They work because timelines are pretty up in the air, there's often little or no funding to be concerned with, everyone is working on it because they want to, and they're only working when they are well-motivated to do so. There are many more constraints in a proper company and job. Remote communication doesn't even come close to the interaction of a roughly synchronized office environment. Of course, there are downsides to the traditional office setup too, but in eliminating those concerns you introduce more problems presented by remote setup. I know people who even have the option of remote work and choose not to, and I can empathize with that sentiment.