Программист точно такая же профессия, как и любая другая. Он должен кормить семью и зарабатывать деньги.
А если человек пишет программу для себя лично? И продавать ее не собирается? Просто ему эта программа нужна для своих задач, то почему бы ее не выложить на всеобщее обозрение, пусть другие тоже пользуются? Вот на этом принципе и должны строиться программы.
Кому-то нужна программа например для рассчетов грузоподъемности кранов. Он заказал программистам ее сделать, заплатил им. Они для него ее сделали. А потом почему-бы не распространить эту программу бесплатно для других пользователей? Ведь всё равно тот, кому она была нужна уже за нее заплатил - заплатил за работу программистам. Зачем держать у себя ее, и ни с кем не делиться?
Вот по этому принципу и должны делаться программы. Заказчик заказывает программу, программисты делают, им заказчик платит за работу, и всё. Заказчик пользуется своей программой (ему-то всё равно она нужна, он за работу заплатит в любом случае, и рассчитывает получить прибыль от использования программы, которая покроет расходы на ее изготовление). А теперь эту программу для других можно распространять беслпатно. Если кому-то тоже пригодится - пусть пользуются.
А вот если кому-то понадобится чуть-чуть ее изменить - попросят исходники у программистов, и переделают ее под себя. Или у разработчика закажут переделанную версию и за нее заплатят.
А то люди сделали программу, им за нее заплатили, а они еще держат исходники у себя, и требуют еще денег за каждую копию. Это не правильно. Ты сделал работу, получил деньги за нее, теперь можешь бесплатно раздавать то, что не требует от тебя новых затрат. Ведь скопировать программу просто - это тебе не новую сделать.
А зачем платить за работу несколько раз? Работа-ведь делается один раз, значит заплатить нужно только за первую копию программы, а остальные распространять бесплатно. Пусть она будет дорогой, но тот, кому она нужна - заплатит. Может несколько фирм объединиться и заплатить за одну программу на всех. А остальные получат ее бесплатно.
Вот на этом принципе и должна быть организована работа программистов и распространение программ.