Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Проектирование библиотек. НАЧАЛО

Проектирование библиотек. НАЧАЛО

Знаете, что такое «двойное дно»? Это когда вы открываете коробку, находите в ней массу вещей, затем поднимаете дно и находите что-то еще. А представляете каким может быть «тройное дно»? Или «четверное»? Как много можно вытащить из одной коробки? Как много можно заложить в один фреймворк?

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

Alexander Blinov

November 24, 2017
Tweet

More Decks by Alexander Blinov

Other Decks in Programming

Transcript

  1. Александр Блинов [email protected] Руководитель группы Android разработки Участник подкастов Админ

    чата по архитектуре Android Соавтор Moxy Выступаю на конференциях
  2. О чем будем говорить О бщ ие понятия Сообщ ество

    П роектирование Д истрибуция С чего начать Слож ности П ланирование
  3. Internal Open source Доступ Команда Сообщество Bug report Команда Сообщество

    Bug fix Команда Сообщество Статьи и доклады NDA ;) Opensource?
  4. Установить цель - 1000 звезд на гитхабе - Не писать

    больше авторизацию - Утвердить в команде фреймворк для который победит жизненный цикл
  5. Сформировать видение ПРИЁМЫ - Как хотелось бы в идеале -

    Я не понимаю как что-то сделать / Я не понимаю что я не понимаю - Синхронизироваться с кем-либо - Top to bottom - Открытые вопросы
  6. Research - Актуальность • SoF • Чаты • На сколько

    нужно самому - Аналоги - Осуществимость
  7. API - Баланс между кастомизацией и удобством - Лаконичность -

    Недвусмысленность - Сокрытие реализации - Обратная совместимость / миграция
  8. Решение из коробки - Ожидаемое поведение (Стратегии в Moxy) -

    Настройки по умолчанию (Reflection в Toothpick)
  9. Поддержка - Обработка Issue на Github & SoF - Ответы

    на вопросе в чате и личные сообщения - Развитие библиотеки
  10. README - Image, screenshot or/and animation - Tags - Description

    - Installation - Usage - Authors - Roadmap - Contributing guidelines
  11. Чек лист - Заливка дистрибутива в Maven/Bintray - README +

    Wiki - Документация в исходном коде - Open Source License - Удалена предыдущая история commit’ов - Commit'ы на английском.
  12. Проблем при разработке - Текучка (решение: Приоритезация) - Не понятно

    как это делать и с чего начать (решение: Декомпозиция) - Пропадает энтузиазм (решение: План)
  13. С чего начать? - Смотреть на внутреннее устройство библиотек -

    Контрибьютить в opensource - Разработать внутренние библиотеки - Написать мааааленькую open source библиотеку
  14. Сontributing to open source ВЫБОР ПРОЕКТА - Библиотека с высокой

    популярностью, но низким Bus factor - Библиотека в стадии развития
  15. Сontributing to open source СТАДИЯ 1 (ЛЮБОЗНАТЕЛЬНАЯ) - Создавать issue/feature

    request на github - Посмотреть внутреннее устройство библиотеки - Подписаться на репозиторий - Найти сообщество разработчиков библиотеки(Telegram/Slack/ Gitter)
  16. Сontributing to open source СТАДИЯ 2 (ПОМОЩЬ С ОКРУЖЕНИЕМ) -

    Помочь с документацией - Написать тесты
  17. Сontributing to open source СТАДИЯ 3 ( ) - Фиксить

    issue - Создавать новый функционал! !!! ПЕРЕД СОЗДАНИЕМ ФУНКЦИОНАЛА У З Н А Й Т Е М Н Е Н И Е О Н Е М У ВЛАДЕЛЬЦА РЕПОЗИТОРИЯ ПРОЕКТА!!!
  18. Итоги - Разрабатывать библиотеки/фреймворки сложно - Все начинается с планирования,

    research и проектирования - Начните с contribution в чужие решения, это просто ;-)