Цели публикации проекта в исходных кодах могут быть разные:
1. Личные убеждения
2. Юридическая необходимость (например проект основан на GPL-коде)
3. Простота дистрибуции (нет необходимости самостоятельно мейнтейнить порты для разных ОС/дистрибутивов)
4. Наработка портфолио/репутации
5. Бизнес модель (продукт поставляется бесплатно, но есть донат или поддержка оказывается за деньги - выгодно чтобы продукт использовался как можно более широко). Это особенно актуально если разработчик ПО зарегистрирован как благотворительный фонд, т.к. в США, например, компании могут донатить в такие фонды часть налогов а фонд имеет возможность платить разработчикам зарплаты. Фонды, например, имеют Linux, Apache, NetBSD. nginx зарабатывает на коммерческой поддержке.
6. Как ни странно, если код открыт - нет необходимости заботиться о том, чтобы его не украли конкуренты и проще доказывается авторство.
7. Если продукт изначально разрабатывается не для продажи, а для внутреннего использования - возможность привлечь внешние ресурсы к разработке и меньше тратить свои.
8. Реклама бренда - очень часто небольшие компании делают бесплатный продукт, в т.ч. с открытым кодом, чтобы продвигать платные продукты.
...
Соответственно автору - ЧСВ, портфолио, репутация, карма, донат, заработок на поддержке, дополнительные ресурсы в разработке программы, внешний аудит кода, избавление от проблем защиты от утечек кода.
Волонтерам, конкурентам - в зависимости от лицензии. Если это бесплатная лицензия - то наработка портфолио, прокачка скилов, в случае фонда - может быть возможность денежного вознаграждения, возможность доработать код под себя, возможность создать порожденные продукты. При этом в случае GPL эти продукты так же должны быть с открытым кодом. В случае коммерческих приложений с открытым кодом особых причин для волонтеров или конкурентов ими заниматься мало.