Вступление
В последнее время стал наблюдать тенденцию среди некоторых начинающих разработчиков (к счастью, далеко не всех) не выкладывать исходные коды. Что ж, думаю что кто-то должен поднять эту тему. Недавно, к слову, вышла вот такая прекрасная статья о частых ошибках начинающих разработчиков от уважаемого Overwrite, так что это будет скорее небольшое дополнение к ней.Почему открытый исходный код это хорошо?
Много начинающих разработчиков пренебрегает публикацией исходного кода, а некоторые ещё и придумывают всяческие оправдания почему они не хотят этого делать (пожалуй моё любимое это "я делаю для людей, а не для разработчиков"). Что ж, для начала хочу немного описать как это вообще работает и почему это важно.Минутка теории: есть такая штука как система контроля версий (он же VCS - Version Control System) которая позволяет сохранять рабочие состояния кода. Это работает как сохранение файла в какой-либо программе: если вы сделаете что-то не так, то запросто сможете отменить изменения на последнюю сохранённую версию. Только тут можно делать много таких сохранений, иметь удалённый репозиторий где код будет храниться, работать в команде и так далее. Самая популярная из этих систем - GIT, есть сервисы для хранения этих самых кодов, самые популярные из которых GitHub, GitLab (и разные селфхост варианты, такие как тот же GitLab или Gitea, но о них говорить тут не будем).
Если вы вдруг ещё не понимаете к чему я веду, то кратко объясню: вы можете сохранять рабочие состояния кода, а потом к ним возвращаться, а также работать в команде. Хорошо, с этим разобрались. Но причём тут открытый исходный код? Дело в том, что хранить проекты только у себя на компьютере это сомнительное решение. И в любом случае если проект относительно немалый или если нужно работать в команде, то придётся использовать GIT. И на том же GitHub его можно держать, для этого там есть публичные и приватные репозитории.
И вот тут возникает вопрос: а зачем же открывать код, если можно держать его в приватном репозитории, даже если сам проект распространяется бесплатно? И тут можно перечислять причины очень долго, но пару из них я всё же упомяну:
- Как минимум потому что вам не стыдно за свой код? Да, все воспринимают критику по-разному, но без конструктивной критики невозможно создать хороший продукт.
- Для портфолио. Предположим, вы хотите вступить в команду какого-нибудь проекта. И попасть в хорошую команду станет в разы проще, если у вас будет это самое портфолио, для чего прекрасно подходят проекты с открытым исходным кодом.
- Совместная разработка. Дело в том, что сервисы типа GitHub это не просто файлопомойка для хранения кода, это своеобразная соцсеть, где любой пользователь может помочь другому. И если ваш проект настолько хорош что кого-то зацепит, то этот человек поставит вашему проекту "звёздочку", а при нахождении каких-то проблем может помочь с её решением через открытие Issue или отправкой Pull Request с готовым кодом.
- И в целом, почти все достойные проекты имеют открытый исходный код. Всеми любимые плагины (такие как WorldEdit, WorldGuard, EssentialsX, DeluxeMenus, DecentHolograms, PlaceholderAPI и так далее), ядро сервера (CraftBukkit, Spigot, Paper, Purpur, Bungeecord, Velocity, ...), программы, которые и и используются для разработки (Intellij Idea Community Edition, VS Code, GIT, ...), сама Java и Linux (на котором стоит заметное большинство ВСЕХ СЕРВЕРОВ В МИРЕ) имеют открытый исходный код. А чем вы хуже?
Чем же это важно для пользователя?
Если наличие открытого исходного кода (на GitHub, GitLab или любой аналогичной платформе) это не прямой показатель качества самого кода, то очень намекающий. Наличие открытого исходного кода это хоть и не полная, но вполне достаточная гарантия того, что автор хоть немного ПОНИМАЕТ что он написал, что в коде не будет вредоносного функционала (потому что его бы быстро нашли другие пользователи или разработчики), что автор не стыдится своего кода и что проект не умрёт если автор забросит его (конечно, если он достаточно хорош). А причины можно перечислять ещё очень долго...Если вы простой пользователь и далеки от сферы программирования, то настоятельно рекомендую отдавать приоритет проектам именно с открытым исходным кодом, ведь зачастую у таких проектов первостепенная задача - сделать хороший продукт.
Про популярные заблуждения
Часто слышу такое заблуждение что если нет открытого кода, то никто не сможет его украсть и написать "пасту". Что ж, хочу вас разочаровать. Байткод Java очень легко поддаётся реверс-инжинерингу (декомпиляции) - то есть получить Java код из скомпилированного JAR довольно просто. Существуют способы скрыть код - обфускация, но теоретически её также реально обойти. То есть, отсутствие исходного кода явно не поможет скрыть от таких людей, а скорее ещё навредит лично вам, ведь будет труднее кому-либо доказать что код принадлежит вам.К слову, если вы видите обфускацию у бесплатного проекта, то рекомендую трижды подумать о том, стоит ли его вообще использовать.
Еще есть такое скорее оправдание чем заблуждение, как "а я делаю проект для пользователей, а не для разработчиков" или банальное "не хочу". Как я уже упомянул ранее, у полностью бесплатного проекта нет смысла скрывать исходный код. А зачастую такие заявления от автора означают что он(-а) не умеет пользоваться системами контроля версий, что очень намекает на то, что лучше посматривать аналоги его проекту.
Что-то не знать или не уметь это вполне нормально. Надеюсь, кому-то будет полезно:
You must be registered for see medias