Какой у вас опыт работы с Open-source?

Ответ

Да, я активно участвую в Open-source сообществе. Мой опыт включает:

  1. Контрибьюции в существующие проекты: Я нахожу и исправляю баги, улучшаю документацию и предлагаю новые функции через Pull Request'ы. Например, я вносил изменения в такие популярные библиотеки, как gin-gonic (улучшение middleware) и testify (добавление новых ассертов).
  2. Изучение кода: Регулярно изучаю исходный код ведущих Go-проектов (например, Kubernetes, Docker), чтобы понимать лучшие практики и архитектурные подходы.
  3. Ведение собственных проектов: У меня есть несколько личных проектов на GitHub, где я экспериментирую с новыми технологиями. Например, CLI-утилита для автоматизации рутинных задач.

Пример гипотетического PR, который я мог бы сделать — исправление гонки данных в счетчике:

// Было: небезопасно для конкурентного использования
type Counter struct {
    value int
}

func (c *Counter) Inc() {
    c.value++
}

// Стало: исправленная версия с использованием атомарных операций
import "sync/atomic"

type Counter struct {
    value int64
}

func (c *Counter) Inc() {
    atomic.AddInt64(&c.value, 1)
}

Этот опыт помогает мне не только развивать свои навыки, но и вносить вклад в развитие экосистемы Go.

Ответ 18+ 🔞

Да ты посмотри, какой у нас тут активист-энтузиаст подъехал! Ну, про open-source, значит, рассказывать. Давай, разложу по полочкам, как есть, без прикрас.

Во-первых, я в эти чужие проекты лезу, как последний распиздяй, когда баги ловлю. Сидишь, читаешь чужой код, а там, блядь, такая логика, что волосы дыбом — и думаешь: «Ну кто так пишет-то, ёпта?». Находишь эту хитрую жопу, исправляешь, документацию, которая иногда написана так, будто её мартышлюшка на клавиатуре танцевала, — причёсываешь. Запихиваешь им Pull Request, а сам сидишь и гадаешь: «Примут или пошлют нахуй с такими предложениями?». В gin-gonic middleware подкручивал, в testify ассерты новые впихивал — в общем, мелкий ремонт в чужой квартире делаю.

А ещё, блядь, я как маньяк, изучаю код этих монстров — Kubernetes, Docker. Сидишь, ворочаешься в этих тоннах кода, и иногда такое архитектурное решение увидишь — просто охуеваешь. То ли от гениальности, то ли от того, как всё запутано. Но учишься, блядь, как на передовой.

Ну и свои, конечно, поделки веду. Выкладываю на GitHub какую-нибудь CLI-утилиту, которая мне лично жизнь облегчает. Может, ещё кому-то пригодится — а если нет, так хоть потешу своё ЧСВ, что не зря время просрал.

Вот, смотри, пример того, как я могу в чужом коде накосячить найти. Допустим, нарыл где-то вот такой «шедевр» с гонками:

// Было: небезопасно для конкурентного использования
type Counter struct {
    value int
}

func (c *Counter) Inc() {
    c.value++
}

// Стало: исправленная версия с использованием атомарных операций
import "sync/atomic"

type Counter struct {
    value int64
}

func (c *Counter) Inc() {
    atomic.AddInt64(&c.value, 1)
}

Видишь? В первой версии этот счётчик в конкурентной среде развалится, как карточный домик. А я пришёл, ебать мои старые костыли, и впихнул туда атомики. Теперь он хоть в аду будет считать без сбоев.

Вот так и живу — с одной стороны, экосистему Go подпитываю, с другой — сам навыки прокачиваю. А то сидеть и только своё говно писать — это ж, блядь, скучно до одури. Надо же иногда в чужом побыть, посмотреть, как люди живут.