composer++

23 октября, 14:00
Смотреть Трансляцию

Key ideas

Composer is a modern development tool. It has been used in lots of projects for the last 10 years and continues to develop. But...

  • What if you have long wanted to use composer not only as a dependency manager?
  • What if you have at least a couple of serious harsh complaints about this tool?

My presentation comes from the experience of the web development department at ITMO University.

Let’s see how a feature goes from getting set in the tracker to its release; what the composer’s role in this process is and if anything can be improved.

Our main problems while using composer:

  • setting up the environment for running commands in composer;
  • configuring the command output;
  • failure to start background processes;
  • absence of multimodular functions, meaning no way to describe several packages in one enabling access to separate packages locally or through a repository;
  • commands re-run only from the very beginning, and not before the moment something went wrong.

It will be a detailed explanation about the operation of composer and some of its specific components, such as commands and the plugin mechanism. I’ll tell you how we used this information to solve the above mentioned problems and created in our private repository a set of tools for adding features both to projects and in CI\CD.


Тезисы

Composer — инструмент современной разработки. Уже примерно 10 лет он используется огромным количеством проектов и он продолжает активно развиваться. Но...

  • Что если composer давно уже хочется использовать не только как менеджер зависимостей?
  • Что если у вас есть хотя бы пару серьезных неприятных вопросов к этому инструменту?

Мой рассказ основан на опыте который накоплен отделом веб-разработки в университете ИТМО.

Давайте рассмотрим путь фичи от самого начала, от постановки задачи по этой фиче в трекере и до её релиза. Рассмотрим как там задействован composer и можно ли что-то улучшить.

Какие у нас есть проблемы в работе с composer:

  • Настрайка окружение для запуска команд в композере;
  • Настройка вывода результатов выполнения команды;
  • нет возможности запускать фоновые процессы;
  • нет мультимодульности, то есть в одном пакете нельзя описать несколько так чтобы они были доступны как отдельные пакеты локально или через репозиторий;
  • нельзя повторно запускать команду не с самого начала а перед этапом когда что-то отвалилось.

Я собираюсь рассказать достаточно подробно как работает сам composer и некоторые его специфические компоненты такие как его команды и механизм плагинов и как мы у себя в работе используем эти знания, чтобы решить описанные выше проблемы. В результате решения этих проблем мы создали у себя в приватном репозитории набор инструментов, которые используются как для добавления фич в проекты так и в CI\CD.

Университет ИТМО

Руслан Ханов

I’ve been intermittently coding in PHP and trying other languages for about 20 years. For the last ten years I’ve got a more conscious approach to PHP. I use Docker if possible and worked with it before it has gone mainstream. Sometimes I write in bash for my own pleasure. I don’t use magic tools without a clear understanding of how they operate. I prefer reading manuals and source code instead of examining books or video presentations about technologies. I respect Kotlin and Rust. I love Composer and Symfony.


Пишу на PHP около 20 лет с перерывами и совмещением с другими языками. Более или менее вдумчиво — лет десять. Предпочитаю использовать Docker там где это возможно, работал с ним еще до того как это стало мейнстримом. В качестве хобби иногда пишу что-то для себя на bash-е. Стараюсь избегать использования магических инструментов без знания как устроена их магия. Предпочитаю читать маны и исходный код, а не книги или смотреть видеопрезентации технологий. Уважаю Котлин и Раст. Люблю Composer и Symfony.

I’ve been intermittently coding in PHP and trying other languages for about 20 years. For the last ten years I’ve got a more conscious approach to PHP. I use Docker if possible and worked with it before it has gone mainstream. Sometimes I write in bash for my own pleasure. I don’t use magic tools without a clear understanding of how they operate. I prefer reading manuals and source code instead of examining books or video presentations about technologies. I respect Kotlin and Rust. I love Composer and Symfony.


Пишу на PHP около 20 лет с перерывами и совмещением с другими языками. Более или менее вдумчиво — лет десять. Предпочитаю использовать Docker там где это возможно, работал с ним еще до того как это стало мейнстримом. В качестве хобби иногда пишу что-то для себя на bash-е. Стараюсь избегать использования магических инструментов без знания как устроена их магия. Предпочитаю читать маны и исходный код, а не книги или смотреть видеопрезентации технологий. Уважаю Котлин и Раст. Люблю Composer и Symfony.

Другие спикеры: