Действительно ли Yii умирает?

[Это вольный перевод ответа Павла Климова, одного из разработчиков ядра Yii, на вопрос "Действительно ли Yii умирает?", заданного в официальной группе YiiFramework в фейсбуке. Это обсуждение проходило почти полгода назад, но все равно будет полезно ознакомится с альтернативным мнением.]

Грустно осознавать, но Yii действительно умирает. Это никак не связано ни с малым количеством коммитов в последнее время, ни с уходом из проекта Qiang Xue. Подобное время от времени случается с полностью некоммерческими open source проектами.

Настоящая проблема в том, что Yii - это очень устаревшая технология. Он не поспевает за современными тенденциями и трендами. Команда разработки отказывается признавать, что требования к разработке веб-приложений сильно изменились за последние годы. После выпуска версии 2.0, они слишком сильно боялись сломать обратную совместимость. Из-за этого фреймворк был лишен многих современных фич и подходов. Смешно поддерживать PHP 5.4, в то время как мертва даже версия 5.5. Все все вменяемые разработчики перешли на PHP >=7.0 из-за улучшенной производительности. Команда заявляет, что поддерживать PHP 5.4 важно из-за существующих приложений, написанных на Yii. Но какой в этом смысл, если даже установить PHP 5.4 из обычного репозитория уже нельзя?

Сегодня вполне обычным требованием для веб-проекта является предоставление одностраничного приложения, работающего на современном JS-фреймворке (ReactJS, EmberJS, VueJS и т.д.). Yii же продолжает использовать JQuery, подталкивая к его применению и требуя его установки.

Я потратил много сил, пытаясь убедить команду, начать двигаться вперед и выпустить новый крупный релиз. Я добавил поддержку стандартов PSR-3 "Logger", PSR-16 "Simple Cache" и PSR-7 "HTTP Message". Я предоставил решение, как избавить от зависимостей от JQuery, вынеся его в отдельное расширение. Полный список изменений можно посмотреть в changelog.

Я приложил много усилий, чтобы новая мажорная версия увидела свет. Но они были напрасны. В начале этого года, во время обсуждения в Slack, вся команда согласилась прекратить поддержку ветки 2.0 и переключиться на выпуск ветки 2.1 (теперь это 3.0). Последней версией в ветке 2.0 должна была стать 2.0.14. Однако это соглашение было проигнорировано и команда отказалась сменить курс разработки. Как видите, вместо этого были выпущены еще две минорные версии: 2.0.15 и 2.0.16. При этом в ветке 2.1 (3.0) не наблюдалось никакого прогресса.

Я доработал код основного репозитория так, чтобы обеспечить ранний доступ к новой мажорной версии. Я писал об этом в блоге.

Эта работа была закончена 3 марта. И я был уверен, что мы сможем выпустить хотя бы бета версию в конце мая. Но команда начала холивары на тему спецификации DI и реализации PSR-11. Можно посмотреть обсуждение на github.

Таким образом, все усилия, затраченные на разработку yiisoft/di, были напрасны. Последние "заметки о разработке Yii" утверждают, что они не будут приняты в версии 3.0.

Даже если Yii 3.0 будет выпущен, из-за подхода к реализации DI и PSR-11, который выбрала команда, придется отказаться от базового принципа Yii - использования массива в качестве универсальной конфигурации объектов. Вместо него будет использоваться подход PSR-11 DI, который требует создания фабричных классов. А это в корне отличается от подхода, используемого в Yii1 и Yii2. И когда придет время выпускать Yii 4.0, он не будет иметь ничего общего с архитектурой Yii2. И любому разработчику, использующему Yii, придется полностью переписать свое приложение, чтобы перейти на новую версию фреймворка.

Если коротко, то основной причиной сложившейся ситуации является то, что большинство членов команды разработчиков ядра не заинтересованы в разработке Yii. Например, Александр Макаров (он же samdark) уже несколько лет не использует Yii в своих коммерческих разработках. У Карстена Брандта (он же cebe) есть своя компания, которая использует различные технологии. Но лишь немногие из ее проектов используют Yii. Boudewijn Vahrmeijer (он же dynasource) полностью занят своим коммерческим проектом и не имеет времени на разработку Yii. И т.д. Только два члена команды разработки ядра используют Yii в коммерческих проектах: это я (klimov-paul) и Дмитрий Науменко (aka Silverfire).

Это печальная, но вполне нормальная ситуация. Yii - это некоммерческий проект. Каждый член команды ничего не зарабатывает, разрабатывая Yii. Поэтому, никто не вправе требовать от них чего-то. Вы не можете заставить людей тратить свое свободное время, ничего не платя взамен. Лично я держусь за этот проект из-за того, что использую его в своей коммерческой деятельности. Поэтому я получаю косвенную выгоду от его разработки. Но так дела обстоят не со всеми членами команды.

Команда разработки ядра возлагает надежды на сообщество, думая, что его члены сами решат эту проблему. Хотя активное сообщество разработчиков является огромным преимуществом, оно, к сожалению, не может самостоятельно осуществить релиз мажорной версии. Вряд ли отдельный участник сообщества потратит огромное количество времени, которое необходимо для подготовки мажорного релиза, рискуя потерять его впустую, если команда ядра не примет его pull request. Команда ядра должна наметить курс для мажорного релиза, создать скелет, чтобы сообщество могло "нарастить на него мясо". Но не стоит ждать, что сообщество создаст этот скелет самостоятельно.

Возможно вы будете удивлены, услышав такое от одного из участников YiiSoft, но не рекомендуется начинать новый проект на Yii2. Так же не стоит переносить проект на Yii2 с другого фреймворка. Будет надежнее использовать Laravel. Он относительно близок к Yii по своей архитектуре и подходам. Но еще у него есть коммерческий бэкграунд и поддержка, которые делают его надежней.

Но окончательный выбор естественно остается за вами.

Коментарии

Используйте Markdown

Спасибо за коментарий!
Ваше сообщение будет доступно после проверки.

#7 MAR

А чем помочь ?

#6 Haru Atari

Евгений, ну вот у Yii с обратной совместимостью не все так хорошо. Есть несколько крупных проектов на нем. Так при каждом втором апдейте что-нибудь ломается и приходится править в разных местах. Не сказать, что много, но и чувства, что обратная совместимость соблюдается, тоже нет.

#5 Евгений

интересная точка зрения.

php тоже давно хоронят. Но на yii многие сидят из-за обратной совместимости как раз, то чо не страшно обновления ставить и не нужно проект переписывать при обновлении.

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

#4 Гость

This is sad, but mostly true, I guess

Quiang was the one who truly set the direction of future development and had the vision. Samdark is doing his best but is limited to time resources and is trying to copy too much of requirements from the community, even if required by a few people or PSR's. The community is dispersed amongst too many places (forum at yii - poorly active, slack, stackoverflow, different repos for Yii1, Yii2, now Yii3 ..). Yii3 concept has acquired quite a lot of antipathy due to over-engineering some features rather than simplified.

I dont like symfony because it has some core features which I dont like, e.g. using twig (redundant rendering layer) or extern ORM. Both Laravel and Symfony have poorer performance. Yii has a lot of goodies, but perhaps since it is not built on commercial model it is slowly dying in time. Now let's talk to Quiang ..

#3 Прохожий

Самобытный Yii превращается в ещё один DI/PSR/... фреймворк. ¯_(ツ)_/¯

#2 Игорь

Не хочу никого обидеть, но все к этому шло, Laravel действительно очень похож на Yii, но при этом в Laravel многое из Symfony, да простят меня хейтеры Symfony и любители Yii, но рождение Laravel с возможностями Symfony это своего рода гвоздь сами понимаете куда, и если Yii не повзрослеет, а по-поему субъективному мнению, этого не будет, конец будет не очень

#1 AJ

Alexander Makarov, вы бы хоть прокомментировали немного так ли всё на самом деле и что ждать от Yii.

#0 Alexander Makarov

Если что, вот тут можно познакомиться с разработкой Yii 3.0: https://forum.yiiframework.com/c/yii-3-0