Содержание
- Мотивация
- Поиск проекта
- Issues tips
- Pull requests tips
- Цели
Мотивация
- open source коммиты - лицо разработчика в сети (успех и фэйлы в открытую)
- умение читать и писать библиотечный код повышает уровень просветлённости разработчика и углубляет уровень знания языка
- если вы новичок в языке, то ментейнер станет для вас бесплатным ментором
- наличие open source проектов добавляет вес как отдельному разработчику, так и компании
- повод попрактиковаться в английском
- сколько угодно интересных задач
Поиск проекта
Большой соблазн сразу стать контрибьютером в ядро Linux, но лучше начинать с небольших проектов
- обязательно ищите проект с тестами, CI и вменяемой документацией
- живой issue tracker тоже обязательно (смотрим issue тэги)
- метрики активности проекта (pulse, graphs, issues, closed PR)
Ссылочки:
Issues tips
- Не стесняйтесь спрашивать перед тем как что-то делать
- Существующие issues. Ищем или создаём
- Используйте plain english рекомендации, помогает более доходчиво излагать свои мысли
- Линкуйте демки, приводите релевантную информацию о системе, стектрейсы в Gist, код в ```
- Часто просят написать test кейсы воспроизводящие issue
Pull requests tips
- Приведите changelog и прокомментируйте какие-то свои решения (экономим время других людей)
- Протестируйте свой код на разных версиях языка (если Travis CI нет для репозитория, его очень быстро настроить для своего форка)
- Удобно создать upstream репозиторий, указывающий на remote origin branch (синхронизуйте свою ветку с upstream как можно чаще)
- Совершенствуйте свои навыки работы с гитом. Сквош коммитов для удобства ревью и тд.
Помните о своих целях
Помните о своих целях
Несмотря на то что большинство современных языков - General Purpose Languages, большинство из них занимает определённую нишу.
- WebDev - Ruby, Python, Java/Scala, JavaScript, PHP, Elixir, Clojure, Go, etc. ...
- GameDev - C++, C#, Erlang/Elixir, JavaScript
- Mobile - Java, C#, Objective C, Swift, JavaScript, Ruby (?)
- Distributed systems - Erlang/Elixir, Java/Scala, Clojure, Go, C++
- BigData solutions & ML - Java/Scala, C++
- Messaging - Erlang/Elixir, Java/Scala
- Cluster management / deploy management - Go, Ruby (?), Python (?)
- Data-processing languagues - Clojure, Erlang/Elixir, R (?)
- System programming / Embedded - C, Rust, C++
- Prototype programming - Scripting languages, Elixir
- Scientific programming - Python, Scala, clojure
Для чего нужны экзотические языки