Это здорово написать снова на этой неделе. В этом сообщении в блоге я расскажу о ключевых вещах, которые я изучил, чтобы внести успешный вклад в открытый исходный код. Первое, что я сделал, это проанализировал статью под названием «Содействие открытому исходному коду на Github». Я нашел эту статью увлекательной, поэтому я хотел бы поделиться своими основными докладами по этой статье на тот случай, если вы захотите просмотреть эту информацию, но просматривая это резюме.

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

  1. Изучайте новые навыки.
  2. Расширяйте свою сеть, знакомясь с новыми людьми.
  3. Узнайте о реальных приложениях.
  4. Создайте привычку к сотрудничеству, помощи и обучению.

Беллоу, я представляю свои записи.

Зачем вносить свой вклад в открытый исходный код?

  • Улучшайте программное обеспечение, на которое вы полагаетесь.
  • Совершенствуйте имеющиеся навыки.
  • Познакомьтесь с людьми, которые интересуются подобными вещами.
  • Найдите наставников и учите других.

Создавайте общедоступные артефакты, которые помогут вам повысить репутацию и построить карьеру

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

Что значит внести свой вклад?

  • Вам не нужно вносить код (на этом этапе академической программы мы должны вносить код).
  • Вам нравится планировать мероприятия?
  • Нравится ли вам дизайн?
  • Вам нравится писать?
  • Вам нравится организовывать?

Вы любите программировать?

  • Спросите, можете ли вы помочь написать новую функцию.
  • Автоматизируйте настройку проекта.
  • Улучшить инструменты и тестирование.

Нравится ли вам помогать людям?

  • Отвечайте на вопросы о проекте на Stack Overflow или других платформах.
  • Отвечайте на вопросы людей по открытым вопросам.
  • Помогите модерировать доски обсуждений или каналы общения.
  • Вам нравится помогать другим программировать?

Ориентация на новый проект

Анатомия проекта с открытым исходным кодом

  • Автор: Кто создал проект.
  • Владелец: у кого есть административная собственность.
  • Сопровождающие: участники, которые управляют организацией.
  • Участники: все, кто внес свой вклад.
  • Члены сообщества: Люди, которые используют проект.

Документация

  • Лицензия: Должна быть лицензия с открытым исходным кодом.
  • Readme: руководство по эксплуатации, чем полезен проект и с чего начать.
  • Содействие: этот документ помогает людям вносить свой вклад и объясняет процесс.
  • Кодекс поведения: Основные правила для участников.
  • Другая документация: учебные пособия, пошаговые руководства или политики управления.

Инструменты для организации обсуждения

  • Трекер проблем: место, где люди обсуждают проблемы.
  • Запросы на вытягивание: когда люди обсуждают и анализируют текущие изменения.
  • Дискуссионные форумы или списки рассылки: для тем для разговоров.
  • Канал синхронного чата: непринужденная беседа, совместная работа и быстрый обмен мнениями.

Поиск проекта, в который можно внести свой вклад

Контрольный список перед тем, как внести свой вклад

  • Соответствует определению открытого исходного кода: Лицензия.
  • Активно принимает взносы: фиксация активности основной ветки.
  • Последний коммит.
  • Сколько участников?
  • Как часто люди совершают сделки?

Проблемы проекта

  • Сколько открытых вопросов?
  • Сопровождающие быстро реагируют на проблемы?
  • Активное обсуждение вопросов?
  • проблемы недавние?
  • вопросы закрываются?

Запросы проекта

  • Сколько существует открытых запросов на включение?
  • Быстро ли отвечают мейнтейнеры на запросы пула?
  • Есть активное обсуждение?
  • Являются ли запросы на вытягивание последними?
  • Как давно были объединены запросы на вытягивание?

Проект приглашает

  • Сопровождающие отвечают услужливо на вопросы в проблемах.
  • Люди дружелюбны?
  • Проверяются ли запросы на вытягивание?
  • Благодарит ли сопровождающий людей за их вклад?

Как внести вклад

Эффективное общение

  • Дайте контекст: объясните свою проблему, как ее воспроизвести. Если вы предлагаете идею, объясните, как эта идея может быть полезна для проекта.
  • Сделайте домашнее задание заранее: покажите, что вы пытались, прежде чем просить о помощи.
  • Делайте запросы короткими и прямыми: будьте лаконичны.
  • Держите все сообщения в открытом доступе.
  • Можно задавать вопросы, но будьте терпеливы.
  • Уважайте решения сообщества.
  • Прежде всего, держите его стильным.

Сбор контекста

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

Открытие вопроса

  • Сообщить об ошибках.
  • Обсудите тему высокого уровня.
  • Предложите новую функцию или идею проекта.

Открытие пул-реквеста

  • Отправить тривиальные исправления.
  • Начните работать над вкладом, о котором уже просили.
  • Вы можете заранее отправить запрос на включение и добавить WIP (работа в процессе), чтобы люди могли видеть ваш прогресс.
  • Создайте ветку для ваших правок.
  • Ссылка на соответствующие вопросы.
  • Включите скриншоты до и после.
  • Проверьте свои изменения!
  • Внесите свой вклад в стиль проекта: комментарии, синтаксис и т. д.

Что происходит после отправки вклада

  • Вы не получаете ответ: проверьте проект на наличие признаков активности.
  • Кто-то просит внести изменения в ваш вклад.
  • Ваш вклад не принимается.
  • Ваш вклад принят.

Мое изучение концепций CS

Я хотел бы добавить этот раздел, чтобы представить некоторые вещи, которые я изучил, чтобы подготовиться к будущим возможностям, я надеюсь, что вы найдете это полезным:

Абстрактные типы данных (ADT) — это спецификация группы операций, которые имеют смысл для данного типа данных. Описывает, как работают переменные данного типа данных.

Примеры: Стек, Очередь, Приоритетная очередь, Список, Отсортированный список, Отсортированный список, Карта, Набор.

Структуры данных:

Опишите, как данные должны быть организованы и доступны в памяти компьютера. Существуют разные способы реализации АТД, поскольку существуют разные структуры данных.

  • Выбор реализации ADT, которая использует наилучшую структуру данных в соответствии с вашими потребностями, имеет важное значение для создания эффективных компьютерных программ.

Массив

  • Массив — это самый простой способ хранить множество элементов в памяти компьютера.
  • Состоит из выделения последовательного пространства в памяти компьютера и последовательной записи ваших элементов в этом пространстве, помечая конец специальным токеном NULL.
  • Каждый объект в массиве занимает одинаковое количество места в памяти.
  • Массив полезен для реализации стека, но его также можно использовать для реализации списков и очередей.

Преимущество:

  • Мгновенное время доступа.

Недостатки:

  • При выделении больших объемов последовательного пространства в памяти. Рядом может не хватить свободного места.
  • Удаление элемента посередине проблематично.
  • Добавление элемента приводит к перемещению всех последующих элементов на один шаг вперед.

Связанный список

  • В связанном списке элементы хранятся в цепочке ячеек, которые не обязательно должны располагаться по последовательным адресам памяти. Память для каждой ячейки выделяется по мере необходимости.
  • Каждая ячейка имеет указатель, указывающий адрес следующей ячейки в цепочке. Ячейка с пустым указателем отмечает конец цепочки.
  • Может использоваться для реализации стеков, списков и очередей.

Преимущество перед массивом:

  • Нет проблем с увеличением списка, поскольку каждая ячейка может храниться в любой части памяти.
  • Мы можем создавать списки размером с объем свободной памяти.
  • Легко вставлять элементы в середину или удалять любой элемент, изменяя указатели ячеек.

Недостатки:

  • Мы не можем мгновенно получить n-й элемент. Мы должны начать поиск с первой ячейки, использовать ее для получения адреса второй ячейки, затем перейти ко второй ячейке, использовать ее указатель на следующую ячейку и так далее.
  • Если нам дан только адрес одной ячейки, удалить его или вернуться назад будет непросто. Без другой информации мы не можем знать адрес предыдущей ячейки.

Двойной связанный список

  • Двойной связанный список — это связанный список, но с дополнительными ячейками теперь есть 2 указателя: один на ячейку, которая была до него, а другой — на ячейку, которая идет после.

Те же преимущества, что и у связанного списка:

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

Недостатки:

  • Невозможно мгновенно получить доступ к n-му элементу.
  • Хранение 2 указателей приводит к большей сложности кода и большему объему необходимой памяти для хранения наших данных.

Массивы и связанные списки

Связанные списки предпочтительнее массивов, когда:

  • Вам нужно, чтобы вставки и удаления были очень быстрыми.
  • Вам не нужен случайный, неупорядоченный доступ к данным.
  • Вы вставляете или удаляете элементы в середине списка.
  • Вы не можете оценить точный размер списка (он должен увеличиваться или уменьшаться в процессе выполнения).
  • Это возможно благодаря тому, что выделение памяти не обязательно должно быть последовательным.

Массивы предпочтительнее связанных списков, когда:

  • Вам часто требуется случайный, неупорядоченный доступ к данным.
  • Вам нужна максимальная производительность для доступа к элементам.
  • Количество элементов не меняется при выполнении, поэтому вы можете выделить непрерывное пространство памяти.

Спасибо за чтение!