Говорим о новом

Small open source tips

Автор: Давыденков Михаил

Содержание


  • Мотивация
  • Поиск проекта
  • Issues tips
  • Pull requests tips
  • Цели

Мотивация

  • open source коммиты - лицо разработчика в сети (успех и фэйлы в открытую)
  • умение читать и писать библиотечный код повышает уровень просветлённости разработчика и углубляет уровень знания языка
  • если вы новичок в языке, то ментейнер станет для вас бесплатным ментором
  • наличие open source проектов добавляет вес как отдельному разработчику, так и компании
  • повод попрактиковаться в английском
  • сколько угодно интересных задач

Worldwide opensource

Поиск проекта

Большой соблазн сразу стать контрибьютером в ядро 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 как можно чаще)
  • Совершенствуйте свои навыки работы с гитом. Сквош коммитов для удобства ревью и тд.

Помните о своих целях

arch1

Помните о своих целях

Несмотря на то что большинство современных языков - 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

Для чего нужны экзотические языки

Вопросы ?