В миреLaravelпакеты играют важную роль. Насколько важна эта роль и какие пакеты существуют? Чтобы это узнать, мы взяли данные изAPIPackagist.org и отфильтровали пакеты Laravel.
Как мы определяли пакеты Laravel? С помощью файла
composer.json
. Мы относили пакет к экосистеме
Laravel, если поля name
, description
,
keywords
или type
содержали строку
laravel
. Также пакет определялся как пакетLaravel,если
он содержал laravel/framework
или любой компонент
поддерева illuminate/*
в качестве зависимости. И
наконец, ключlaravel
в поле extra
также
являлся указателем на принадлежность пакета к экосистеме фреймворка
Laravel.Хотя эти критерии не гарантируют, что пакет относится исключительно к Laravel, они показывают, что пакет был создан с расчетом на использование с Laravel.
Наиболее популярные пакеты
Если бесхитростно взглянуть насписок самых загружаемых пакетов, результаты не порадуют: это базовые пакеты и пакеты с большим числом использований вне проектов Laravel.
| Package | Monthly downloads | |-------------------------|-------------------| | nesbot/carbon | 4084214 | | laravel/framework | 2987907 | | laravel/tinker | 2455355 | | fideloper/proxy | 2376631 | | nunomaduro/collision | 1510258 | | intervention/image | 1099989 | | facade/ignition | 966800 | | facade/flare-client-php | 934651 | | composer/installers | 803222 | | illuminate/support | 756189 |
Возможно, более интересный рейтинг можно получить, исключив эти ложноположительные результаты. Мы вручную отфильтровали 30 наиболее популярных пакетов, которые были созданы для проектов Laravel и целенаправленно устанавливаются. Также мы в общих чертах систематизировали области назначения этих пакетов.
| | Package | Monthly | Total | Purpose | |----|------------------------------------|---------|----------|---------| | 1 | maatwebsite/excel | 680466 | 17769696 | port | | 2 | laravelcollective/html | 678048 | 21785383 | helper | | 3 | barryvdh/laravel-ide-helper | 644297 | 18918427 | dev | | 4 | barryvdh/laravel-debugbar | 625080 | 19404288 | dev | | 5 | laravel/passport | 552633 | 10099903 | auth | | 6 | beyondcode/laravel-dump-server | 530901 | 11035024 | dev | | 7 | sentry/sentry-laravel | 455879 | 8440070 | integ | | 8 | laravel/ui | 433850 | 1599042 | auth | | 9 | barryvdh/laravel-cors | 400920 | 10823255 | helper | | 10 | laravel/socialite | 394471 | 10166784 | auth | | 11 | laravel/slack-notification-channel | 385921 | 7172937 | integ | | 12 | tymon/jwt-auth | 359693 | 9107092 | auth | | 13 | barryvdh/laravel-dompdf | 349572 | 8006731 | port | | 14 | laravel/helpers | 337956 | 1692185 | helper | | 15 | spatie/laravel-permission | 308453 | 5224001 | auth | | 16 | laravel/horizon | 304864 | 4599598 | integ | | 17 | laravel/dusk | 256261 | 4542482 | dev | | 18 | laravel/nexmo-notification-channel | 238192 | 6080124 | integ | | 19 | laravel/telescope | 227966 | 2289576 | dev | | 20 | bugsnag/bugsnag-laravel | 223167 | 6544766 | dev | | 21 | yajra/laravel-datatables-oracle | 212985 | 5644721 | integ | | 22 | aws/aws-sdk-php-laravel | 212260 | 7070121 | integ | | 23 | orchestra/testbench-core | 199780 | 1864659 | dev | | 24 | orchestra/testbench | 195269 | 2279889 | dev | | 25 | symplify/package-builder | 193661 | 1484783 | dev | | 26 | laravel/scout | 177270 | 3391042 | integ | | 27 | barryvdh/laravel-snappy | 156741 | 3651684 | port | | 28 | webpatser/laravel-uuid | 153883 | 4774711 | helper | | 29 | spatie/laravel-medialibrary | 149290 | 2293823 | helper | | 30 | spatie/laravel-activitylog | 148932 | 2387978 | dev |
Пояснение областей назначения:
-
auth
аутентификация и авторизация -
dev
инструменты для разработки и отладки -
helper
поддержка и упрощение работы -
integ
интеграция с другими сервисами -
port
импорт и/или экспорт в различных форматах
Первое место в этом списке занимают инструменты для разработки, затем идет интеграция.
Мы ожидали увидеть на самом верху больше пакетовSpatie, но выяснилось, что maatwebsite/excel и инструменты отBarry vd. Heuvelиспользуются более часто.
Обзор поставщиков
Всего мы выявили 47337 пакетов Laravel от 23167 различных разработчиков. Получилось достаточно равномерное распределение со множеством небольших участников.
Половина пакетов (23668) были созданы основными 3927 разработчиками. Это значительно больше, чем в том случае, если бы здесь действовалзакон Прайса. 15042 разработчика опубликовали всего по одному пакету.
Если отсортировать разработчиков по числу пакетов, можно увидеть почти неизвестные имена. Вот наиболее продуктивные разработчики пакетов с суммарным количеством загрузок соответствующих пакетов.
| | Developer | Count | Daily | Monthly | Total | |----|-------------------------------|-------|-------|---------|----------| |1| socialiteproviders |159|10645|256409|5826725| |2| bantenprov |132|0|5|3160| |3| spatie |124|89124|2746665|43095685| |4| railken |119|0|11082|313129| |5| laravel-enso |95|1519|29456|879635| |6| amethyst |92|1232|8118|100819| |7| faustbrian |85|152|2639|52698| |8| artisanry |78|129|1190|11938| |9| sukohi |75|58|1773|53805| |10| anomaly |59|198|6095|974489| |11| sanatorium |59|0|0|20| |12| laravel-notification-channels |54|3107|99536|1621420| |13| hnhdigital-os |54|38|1571|20304| |14| arcanedev |53|3875|127702|3293360| |15| inetstudio |53|241|3870|77009| |16| larakit |49|1|410|18540| |17| orchestra |48|21569|544696|7606461| |18| abuseio |45|1|951|78289| |19| genealabs |43|3219|87234|1215349| |20| smorken |41|36|985|14277|
Оказывается, есть немало разработчиков, которые создают большое количество компонентов и размещают их без особой рекламы. Чтобы увидеть больше известных имен и сравнить цифры для них, отсортируем список по общему числу загрузок.
| | Developer | Count | Daily | Monthly | Total | |----|-------------------|-------|--------|---------|-----------| |1| laravel |39|364375|9832728|225867755| |2| illuminate |33|244509|7210832|197044965| |3| nesbot |1|179106|4084214|112631927| |4| barryvdh |19|82289|2246578|63115434| |5| spatie |124|89124|2746665|43095685| |6| fideloper |3|100748|2376631|41313378| |7| intervention |7|46259|1260102|33891504| |8| composer |1|10603|803222|26065561| |9| league |7|18996|731742|24433630| |10| nunomaduro |19|68333|1734552|23394056| |11| laravelcollective |6|32460|710099|23285426| |12| maatwebsite |6|27955|717140|18258360| |13| cocur |1|19246|491761|16609476| |14| jenssegers |15|24263|544700|16468485| |15| beyondcode |29|14221|677724|12648233| |16| laracasts |11|10352|317232|12119703| |17| graham-campbell |36|11092|291114|10184667| |18| facade |5|67794|1915933|9860242| |19| yajra |19|17794|446360|9792222| |20| tymon |2|11437|359693|9107116|
Если вместо этого отсортировать список по числу загрузок в месяц, результат будет слегка отличаться.
| | Developer | Count | Daily | Monthly | Total | |----|-------------------|-------|--------|---------|-----------| |1| laravel |39|364375|9832728|225867755| |2| illuminate |33|244509|7210832|197044965| |3| nesbot |1|179106|4084214|112631927| |4| spatie |124|89124|2746665|43095685| |5| fideloper |3|100748|2376631|41313378| |6| barryvdh |19|82289|2246578|63115434| |7| facade |5|67794|1915933|9860242| |8| nunomaduro |19|68333|1734552|23394056| |9| intervention |7|46259|1260102|33891504| |10| composer |1|10603|803222|26065561|
Эти распределения явно перевешивают в верхней части. Независимо от того, рассматриваем ли мы число загрузок в день, в месяц или общее количество, более половины всех загрузок приходится на 6 основных разработчиков пакетов. Например, 2,85млн из 5,65млн загрузок в день делят между собойlaravel,illuminate,nesbot,spatie,fideloperиbarryvdh.
Можно использовать что-то вродеиндекса Хиршадля оценки популярности разработчиков. Существует всего 317 разработчиков, на каждого из которых приходится не менее 317 загрузок в день. 1118 поставщиков имеют по 1118 или более загрузок в месяц, а в случае общего количества загрузок это число равно 3003.
Варианты лицензирования
Наш обзор лицензирования не особо точен, так как для обозначения одной и той же лицензии используются различные строки. Например,
gpl-3.0
,gpl 3.0
,gpl3
,
gplv3
, даже gnu general public license version
3
и множество других вариантов указывают на одну и ту же
лицензию.К счастью, основные выводы являются четкими, так как строка
mit
обозначает соответствующую лицензию для 37502
пакетов Laravel. 6304 пакета не лицензированы, более 500 пакетов
распространяются по лицензиям Apache2.0 и GPL3.0. Также есть
несколько сотен пакетов с лицензиями BSD2, BSD3 и GPL2.0.79% пакетов Laravel имеют лицензию MIT, 14% не лицензированы, а каждая из остальных лицензий используется в 2% или менее пакетов. Возможно, отчасти это влияние самого фреймворка Laravel, который распространяется по лицензии MIT. Если посмотреть на все пакеты, то популярность лицензии MIT существенно ниже 60%.
За рамками Laravel
Количество пакетов для различных фреймворков демонстрирует вовлеченность сообщества в разработку инструментальных средств фреймворка и степень его готовности делиться своим кодом с другими участниками. Мы также подсчитали число заброшенных пакетов и их процент, чтобы увидеть, какие сообщества процветают, а какие отстают.
| | Framework | Packages | Abandoned | Aband. % | |----|---------------|----------|-----------|----------| |1| Laravel |47337|2618|5,5% | |2| Symfony |39428|3362|8,5% | |3| Yii |15354|552|3,6% | |4| ZendFramework |7459|790|10,6% | |5| WordPress |6446|480|7,4% | |6| Nette |3460|342|9,9% | |7| CakePHP |2607|173|6,6% | |8| Slim |1411|64|4,5% | |9| Laminas |811|17|2,0% | |10| Phalcon |726|40|5,5% | |11| Codeigniter |663|91|13,7% | |12| Aura |450|32|7,1% | |13| Kohana |341|43|12,6% | |14| FuelPHP |148|12|8,1% | |15| PHPixie |73|1|1,4% |
С другой стороны, общее количество загрузок отражает важность пакетов для разработки стандартных проектов.
Обратите внимание, что при подсчете этого количества загрузок учтены все пакеты, связанные с фреймворком, а не только базовые (как и при подсчете количества пакетов выше). Критерии классификации пакета как принадлежащего определенному фреймворку см.здесь. Один пакет может принадлежать экосистемам нескольких фреймворков.
| | Framework | Monthly | Total | |----|---------------|-----------|------------| |1| Symfony |366029776|8945189030| |2| Laravel |56523199|1315681505| |3| ZendFramework |50789083|1460984224| |4| Nette |14137793|295710951| |5| Laminas |9540512|134960483| |6| Yii |5662063|200378585| |7| CakePHP |4067892|112091915| |8| WordPress |3871828|96962490| |9| Slim |2123558|46196613| |10| FuelPHP |930846|32043126| |11| Codeigniter |919926|30474042| |12| Kohana |912106|31918403| |13| Aura |467771|18063339| |14| Phalcon |137762|4322810| |15| PHPixie |5353|572100|
Следует отметить, что лидирующее положение Symfony не означает, что большинство пакетов загружаются для использования в проектах на основе этого фреймворка. Некоторые базовые пакеты Symfony используются Laravel, и множество других пакетов Symfony также могут использоваться в проектах Laravel.
Кроме того, примечательно то, что пакеты Zend имеют почти столько же загрузок в месяц, как Laravel, хотя этот проект больше не поддерживается.
И напоследок взгляните на общий список самых загружаемых пакетов PHP.
| | Package | Monthly | Total | |----|-----------------------------------|---------|-----------| |1| symfony/polyfill-mbstring |7943600|210645235| |2| psr/log |7768451|238663129| |3| symfony/polyfill-ctype |7284741|110601284| |4| psr/container |6847606|119345271| |5| symfony/console|6713344|199367074| |6| guzzlehttp/guzzle |6607580|168514253| |7| symfony/finder |6486878|176261290| |8| psr/http-message |6384401|164860087| |9| guzzlehttp/promises |6372505|149984782| |10| guzzlehttp/psr7 |6350221|161806561| |11| doctrine/instantiator |6199120|180684872| |12| symfony/process |6167368|169254030| |13| phpdocumentor/reflection-docblock |6140913|165150240| |14| monolog/monolog |6109702|196673732| |15| symfony/event-dispatcher |6098870|190433052| |16| webmozart/assert |5905460|144395517| |17| doctrine/lexer |5895066|157678399| |18| ralouphie/getallheaders |5861396|66293788| |19| doctrine/inflector |5743593|171588858| |20| phpdocumentor/type-resolver |5706391|136101740|
Данные, представленные в этой статье, в основном были собраны Гатисом Шупулниексом (Gatis pulnieks) в апреле и мае 2020г. в рамках исследования Разработка и использование пакетов Laravel.
Соответствующие источники:
- Исходные данные:https://github.com/Larzs/packagist-packages-data
- Статья по теме от Jason McCreary:https://jasonmccreary.me/articles/laravel-numbers/
- Автор этой статьи:Juris Evertovskis
- Данные собрал:Gatis pulnieks
- Пакет, который создал Гатис:https://github.com/GlaivePro/Invytr
- Наш последний микропакет:https://github.com/crudly/encrypted
- Наш самый простой и популярный пакет:https://github.com/GlaivePro/Hidevara
Ранее опубликовано на страницеhttps://medium.com/@juris_9772/laravel-package-ecosystem-4afd53fad192