HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Как и все программисты, каждый день мы пользуемся программным обеспечением с открытым исходным кодом. В этом уроке мы обсудим, что это такое. Вы узнаете, чем открытый код полезен программисту.</p>
1 <p>Как и все программисты, каждый день мы пользуемся программным обеспечением с открытым исходным кодом. В этом уроке мы обсудим, что это такое. Вы узнаете, чем открытый код полезен программисту.</p>
2 <p><strong>Проекты с открытым исходным кодом</strong>или<strong>OpenSource</strong>(<em>Open Source Software</em>,<em>OSS</em>) - это программное обеспечение с общедоступным кодом. Любой пользователь может увидеть код, а в большинстве случаев - даже повлиять на него.</p>
2 <p><strong>Проекты с открытым исходным кодом</strong>или<strong>OpenSource</strong>(<em>Open Source Software</em>,<em>OSS</em>) - это программное обеспечение с общедоступным кодом. Любой пользователь может увидеть код, а в большинстве случаев - даже повлиять на него.</p>
3 <p>К такому ПО относятся:</p>
3 <p>К такому ПО относятся:</p>
4 <ul><li>Прикладное ПО и сервисы, как VSCode или Git</li>
4 <ul><li>Прикладное ПО и сервисы, как VSCode или Git</li>
5 <li>Огромное число библиотек в нашем коде</li>
5 <li>Огромное число библиотек в нашем коде</li>
6 <li>Практически все современные языки программирования</li>
6 <li>Практически все современные языки программирования</li>
7 </ul><p>Современные проекты огромны:</p>
7 </ul><p>Современные проекты огромны:</p>
8 <ul><li>Linux (&gt; 12 000 000 строк кода)</li>
8 <ul><li>Linux (&gt; 12 000 000 строк кода)</li>
9 <li>Chromium (&gt; 16 000 000 строк кода)</li>
9 <li>Chromium (&gt; 16 000 000 строк кода)</li>
10 </ul><p>Та скорость, с которой разрабатываются такие крупные проекты, возможна благодаря программам и библиотекам с открытым исходным кодом.</p>
10 </ul><p>Та скорость, с которой разрабатываются такие крупные проекты, возможна благодаря программам и библиотекам с открытым исходным кодом.</p>
11 <p>Откуда вообще берутся опенсорс-проекты, и почему они так популярны? Почти всегда такой код появляется как побочный продукт разработки других проектов. Например, в процессе разработки Linux появилась необходимость в удобной программе для управления версиями - так появился Git.</p>
11 <p>Откуда вообще берутся опенсорс-проекты, и почему они так популярны? Почти всегда такой код появляется как побочный продукт разработки других проектов. Например, в процессе разработки Linux появилась необходимость в удобной программе для управления версиями - так появился Git.</p>
12 <p>Но почему его код был открыт? Ответ достаточно простой. Удачные проекты привлекают множество разработчиков, которые помогают им развиваться. Они пишут отчеты об ошибках, присылают исправления и даже становятся полноправными разработчиками. И все это бесплатно. Разработчики удовлетворяют свое эго и радуются тому, что создают нечто новое и вообще помогают этой Вселенной. Как побочный эффект, такие разработчики гораздо легче находят работу и имеют более прокачанные навыки кодирования, чем их коллеги, которые не работают с открытыми проектами.</p>
12 <p>Но почему его код был открыт? Ответ достаточно простой. Удачные проекты привлекают множество разработчиков, которые помогают им развиваться. Они пишут отчеты об ошибках, присылают исправления и даже становятся полноправными разработчиками. И все это бесплатно. Разработчики удовлетворяют свое эго и радуются тому, что создают нечто новое и вообще помогают этой Вселенной. Как побочный эффект, такие разработчики гораздо легче находят работу и имеют более прокачанные навыки кодирования, чем их коллеги, которые не работают с открытыми проектами.</p>
13 <p>Если вы вернетесь в прошлое и посмотрите, сколько людей раньше работало над опенсорс-проектами, то вы увидите огромный разрыв с современным положением дел.</p>
13 <p>Если вы вернетесь в прошлое и посмотрите, сколько людей раньше работало над опенсорс-проектами, то вы увидите огромный разрыв с современным положением дел.</p>
14 <p>Сложное включение в разработку, сложное принятие изменений - вот неполный перечень проблем, с которыми сталкивались участники опенсорс-движения. Раньше было нормой, что люди выступали с докладами на конференциях, где час описывали правила принятия людей и кода от них в проект.</p>
14 <p>Сложное включение в разработку, сложное принятие изменений - вот неполный перечень проблем, с которыми сталкивались участники опенсорс-движения. Раньше было нормой, что люди выступали с докладами на конференциях, где час описывали правила принятия людей и кода от них в проект.</p>
15 <p>Сейчас присоединиться к опенсорс-проекту можно за пару минут. Можно начать где-то участвовать, не нужно прилагать практически никаких усилий. Случилось это благодаря двум составляющим: Git и GitHub.</p>
15 <p>Сейчас присоединиться к опенсорс-проекту можно за пару минут. Можно начать где-то участвовать, не нужно прилагать практически никаких усилий. Случилось это благодаря двум составляющим: Git и GitHub.</p>
16 <p>Один из важнейших механизмов GitHub - запрос на включение изменений. Коротко его называют<strong>пулреквест</strong>(<em>pull request</em>). Именно этот механизм позволяет легко и непринужденно вливаться в разработку любых проектов.</p>
16 <p>Один из важнейших механизмов GitHub - запрос на включение изменений. Коротко его называют<strong>пулреквест</strong>(<em>pull request</em>). Именно этот механизм позволяет легко и непринужденно вливаться в разработку любых проектов.</p>
17 <p>Допустим, работая с определенной библиотекой, мы заметили ошибку в коде или документации. Пройдемся по шагам, которые необходимо выполнить для исправления этой ошибки. Наша конечная цель - чтобы разработчики библиотеки приняли код.</p>
17 <p>Допустим, работая с определенной библиотекой, мы заметили ошибку в коде или документации. Пройдемся по шагам, которые необходимо выполнить для исправления этой ошибки. Наша конечная цель - чтобы разработчики библиотеки приняли код.</p>
18 <h2>Клонирование</h2>
18 <h2>Клонирование</h2>
19 <p>Первым шагом создаем копию репозитория в своем аккаунте. Делается это буквально одной кнопкой<em>Fork</em>на странице репозитория:</p>
19 <p>Первым шагом создаем копию репозитория в своем аккаунте. Делается это буквально одной кнопкой<em>Fork</em>на странице репозитория:</p>
20 <p>После этого действия в вашем аккаунте окажется репозиторий с таким же именем. GitHub знает, что это копия оригинального репозитория, и помечает его особым образом.</p>
20 <p>После этого действия в вашем аккаунте окажется репозиторий с таким же именем. GitHub знает, что это копия оригинального репозитория, и помечает его особым образом.</p>
21 <p>Дальше все как обычно. Мы клонируем репозиторий на компьютер и производим необходимые изменения. Хорошей практикой считается делать изменения в отдельной ветке, созданной от ветки main.</p>
21 <p>Дальше все как обычно. Мы клонируем репозиторий на компьютер и производим необходимые изменения. Хорошей практикой считается делать изменения в отдельной ветке, созданной от ветки main.</p>
22 <h2>Запрос на включение изменений кода</h2>
22 <h2>Запрос на включение изменений кода</h2>
23 <p>После того как мы залили изменения на GitHub, в его интерфейсе произойдут изменения. На странице склонированного репозитория появится кнопка<em>Pull request</em>:</p>
23 <p>После того как мы залили изменения на GitHub, в его интерфейсе произойдут изменения. На странице склонированного репозитория появится кнопка<em>Pull request</em>:</p>
24 <p>Если ее нажать, то откроется страница, на которой можно указать название пулреквеста и его описание.</p>
24 <p>Если ее нажать, то откроется страница, на которой можно указать название пулреквеста и его описание.</p>
25 <p>После отправки пулреквеста в оригинальном репозитории на странице<em>Pull requests</em>отобразится ваш запрос. Теперь остается ждать, когда разработчики библиотеки рассмотрят пулреквест. В итоге они:</p>
25 <p>После отправки пулреквеста в оригинальном репозитории на странице<em>Pull requests</em>отобразится ваш запрос. Теперь остается ждать, когда разработчики библиотеки рассмотрят пулреквест. В итоге они:</p>
26 <ul><li>Либо примут реквест</li>
26 <ul><li>Либо примут реквест</li>
27 <li>Либо отклонят его</li>
27 <li>Либо отклонят его</li>
28 <li>Либо зададут уточняющие вопросы и предложат доработать реквест</li>
28 <li>Либо зададут уточняющие вопросы и предложат доработать реквест</li>
29 </ul><h2>Исправления прямо на GitHub</h2>
29 </ul><h2>Исправления прямо на GitHub</h2>
30 <p>В более простых ситуациях, когда достаточно исправить текст или опечатку, GitHub позволяет сделать пулреквест прямо из своего интерфейса.</p>
30 <p>В более простых ситуациях, когда достаточно исправить текст или опечатку, GitHub позволяет сделать пулреквест прямо из своего интерфейса.</p>
31 <p>Для этого достаточно открыть любой файл проекта и нажать на иконку редактирования. После завершения редактирования GitHub сам предложит создать пулреквест с этим изменением.</p>
31 <p>Для этого достаточно открыть любой файл проекта и нажать на иконку редактирования. После завершения редактирования GitHub сам предложит создать пулреквест с этим изменением.</p>