Заимствование кода и идей

zonzujiro

zonzujiro

Kottans Core Team

Иногда в процессе работы нам хочется срезать углы - взять уже готовый вариант и использовать его.

Обычно это называется списыванием и обычно, в учебных заведениях, считается, что это плохо.

Основная причина того, почему это плохо, это необходимость пропустить знания "через себя" - тогда информация лучше запомнится. Похожая история с практикой - вы можете бесконечно долго что-то изучать в теории, но до тех пор пока вы не примените знания в деле, не вытащите их из своей головы, не покрутите с той или иной стороны и не сообразите как их, собственно, применить, знания со временем просто осядут где-то на задворках сознания и забудутся.

В программировании может показаться, что ситуация прямо противоположная. Мы регулярно используем программы и модули написанные чужими людьми для достижения нужных нам результатов. В каком-то глобальном смысле, принцип Don't Repeat Yourself, можно применить на всю сферу - не надо переписывать то, что уже и так существует и работает. Без крайней на то необходимости. Ну или если сильно хочется. 🙂

Но это касается программ, модулей, пакетов в npm. А вот с исходным кодом история немного другая.

К примеру, один из плюсов существования OSS (Open Source Software) - это возможность, помимо наблюдения результата работы программы, открыть ее исходный код и посмотреть как она написана. Узнать что-то новое для себя, возможно улучшить чужой код, ну или применить подходы из чужой программы в своей. Но чужой код можно найти не только в репозиториях.

В программировании существует понятие StackOverflow Development. Это когда разработчик прямолинейно и бездумно копирует чужой код, часто из первой ссылки на StackOverflow из поисковой выдачи гугла, себе в программу. В итоге, программа построенная по такому принципу запутанна, а разработчик, который ее написал в ней не разбирается. Программа для него состоит из магии - что-то происходит и непонятно почему. И, я уверяю вас, это мгновенно становится понятно на собеседовании.

Вместо простого копирования кода, необходимо адаптировать идеи под свои нужды.

Ну и чтение кода других программ, в целом, уменьшает количество магии в вашем окружении как программиста, увеличивает ваш багаж знаний и указывает на то, что вам не все равно, что происходит в ваших инструментах и продуктах. Это делает вас лучше, как разработчика.

Но вернемся к копированию кода. В целом, в мире программирования заимствования из чужой программы часто невозможно отследить. Да и мало кто будет этим специально заниматься - у обычного программиста слишком много своих проблем, чтобы еще в интернете искать, кто украл его код.

Но если что-то подобное обнаруживается - это неприятно. 🙂

Как обезопасить себя от подобной ситуации в целом?

Код выложенный в репозитории на GitHub можно лицензировать и для выбора лицензии есть отдельный сайт - choosealicense.com. В этой части необходимо сделать акцент на том факте, что лицензирование вашего кода - ваше право, не обязанность. Но наличие лицензии облегчит вам и другим разработчикам жизнь. В случае нарушения лицензии, вы всегда можете обратиться к другому разработчику и указать на нарушение лицензии.

Теперь к ситуации в Коттанах.

Представьте себе, что вы в пионерском лагере. Все как обычно, вы все вместе в одном отряде. Вместе гуляете и вместе весело проводите время. И вот кто-то взял ваш сникерс из прикроватной тумбочки.

Очевидно, что код или дизайн - не сникерс. И даже если его забрать, от голода не умрешь и уровень шоколада в организме не упадет.

Но несмотря на то, что мы мотивируем наших студентов смотреть другие ПРы и искать для себя вдохновение в них, мы не приемлем пиратство. Ни в каком виде.

Если вас вдохновило чье-то решение, вы вольны взять его себе и сослаться на автора в своей работе. Но в любом случае, вы должны предварительно спросить автора, а не будет ли он против.

Если вы этого не сделаете, в каком-то глобальном смысле, ничего страшного, конечно, не произошло и никто не умер.

Просто вы без спроса взяли чужой сникерс из прикроватной тумбочки вашего одногруппника.

Как было указано выше, одним из принципов сообщества является неприятие пиратства и потому такой поступок будет замечен менторами, и будет считаться нарушением принципов сообщества.