Русский
Русский
English
Статистика
Реклама

Перевод Обзор экосистемы пакетов Laravel

Специально для студентов курсов Backend-разработчик на PHP и Framework Laravel подготовили еще один полезный перевод.






В мире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

Узнать о курсах подробнее:


Источник: habr.com
К списку статей
Опубликовано: 30.10.2020 14:07:40
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании otus. онлайн-образование

Php

Laravel

Laravel-package-development

Packaged-software

Composer

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru