Un aperçu de l'écosystème des packages Laravel

Surtout pour les étudiants des cours "Backend-developer in PHP" et "Framework Laravel", nous avons préparé une autre traduction utile.












Dans le monde de Laravel , les   packages jouent un rôle important. Quelle est l'importance de ce rôle et quels sont les packages? Pour le savoir, nous avons pris les données de l'API  Packagist.org et filtré les packages Laravel.



Comment avons-nous défini les packages Laravel? Utilisation d'un fichier  composer.json. Nous traitons le sac à l' écosystème Laravel, si les champs name, description, keywords ou type contiennent une chaîne laravel. De plus, un package était défini comme un package Laravel s'il contenait laravel/framework ou un composant de sous-arborescence en  illuminate/*tant que dépendance. Enfin, la clé  laravelsur le terrain était extra également un pointeur vers l'appartenance du package à l'écosystème du framework Laravel.



Bien que ces critères ne garantissent pas que le package est exclusivement Laravel, cela indique que le package a été construit avec Laravel à l'esprit.



Forfaits les plus populaires



Si vous regardez simplement la  liste des packages les plus téléchargés , les résultats ne vous plairont pas: ce sont des packages de base et des packages avec un grand nombre d'utilisations en dehors des projets 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 |


Une note peut-être plus intéressante peut être obtenue en éliminant ces résultats «faux positifs». Nous avons filtré manuellement les 30 packages les plus populaires créés pour les projets Laravel et installés à dessein. Nous avons également décrit les zones de destination de ces forfaits.



| | 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 |


Explication des zones de destination:



  • auth - Authentification et autorisation
  • dev - outils de développement et de débogage
  • helper - accompagnement et simplification du travail
  • integ - intégration avec d'autres services
  • port - importer et / ou exporter dans divers formats


La première place de cette liste est occupée par les outils de développement, suivis de l'intégration.







Nous nous attendions à voir plus de packages Spatie tout en haut  , mais il s'est avéré que maatwebsite / excel et les outils de  Barry vd. Les Heuvels  sont utilisés plus fréquemment.



Aperçu des fournisseurs



Au total, nous avons identifié 47 337 packages Laravel provenant de 23 167 développeurs différents. Le résultat est une distribution assez uniforme avec de nombreux petits participants.



La moitié des packages (23 668) ont été créés par 3927 développeurs principaux. C'est beaucoup plus que si la loi de Price avait été en vigueur ici  . 15 042 développeurs ont publié un seul package chacun.



Si vous triez les développeurs par nombre de packages, vous pouvez voir des noms presque inconnus. Voici les constructeurs de packages les plus performants avec les téléchargements cumulatifs de leurs packages respectifs.



| | 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 |


Il s'avère qu'il y a pas mal de développeurs qui créent un grand nombre de composants et les déploient sans trop de publicité. Pour voir des noms plus connus et comparer les chiffres pour eux, trions la liste par nombre total de téléchargements.



| | 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 |


Si vous triez plutôt la liste par téléchargements mensuels, le résultat sera légèrement différent.



| | 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 |


Ces distributions l'emportent clairement sur le sommet. Qu'il s'agisse de téléchargements quotidiens, mensuels ou totaux, plus de la moitié de tous les téléchargements proviennent des 6 meilleurs développeurs de packages. Par exemple, 2,85 millions sur 5,65 millions de téléchargements quotidiens sont partagés par  laravelilluminatenesbotspatiefideloper  et  barryvdh .



Vous pouvez utiliser quelque chose comme  l'indice Hirsch  pour mesurer la popularité des développeurs. Il n'y a que 317 développeurs, chacun avec au moins 317 téléchargements par jour. 1 118 fournisseurs ont 1 118 téléchargements ou plus par mois, ou 3003 pour le total des téléchargements.



Options de licence



Notre aperçu des licences n'est pas particulièrement précis car différentes chaînes sont utilisées pour désigner la même licence. Par exemple, gpl-3.0gpl 3.0gpl3, gplv3, même gnu general public license version 3, et beaucoup d' autres options indiquent la même licence.



Heureusement, les principales conclusions sont claires, car la ligne mitindique la licence correspondante pour 37 502 packages Laravel. 6304 packages ne sont pas sous licence, plus de 500 packages sont distribués sous les licences Apache 2.0 et GPL 3.0. Il existe également plusieurs centaines de packages avec les licences BSD 2, BSD 3 et GPL 2.0.



79% des packages Laravel sont sous licence MIT, 14% sont sans licence et chacune des autres licences est utilisée dans 2% ou moins de packages. C'est peut-être en partie l'influence du framework Laravel lui-même, qui est distribué sous la licence MIT. Si vous regardez tous les packages, la popularité de la licence MIT est nettement inférieure - 60%.











Au-delà de Laravel



Le nombre de packages pour différents frameworks démontre l'implication de la communauté dans le développement des outils du framework et la mesure dans laquelle elle est prête à partager son code avec d'autres contributeurs. Nous avons également compté le nombre de colis abandonnés et leur pourcentage pour voir quelles communautés prospèrent et lesquelles sont à la traîne.



| | 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% |






D'autre part, le nombre total de téléchargements reflète l'importance des packages pour le développement de projets standards.



Veuillez noter que lors du calcul de ce nombre de téléchargements, tous les packages associés au framework sont pris en compte, pas seulement les packages de base (comme pour le calcul du nombre de packages ci-dessus). Voir ici pour les critères de classification d'un package comme appartenant à un framework spécifique  . Un package peut appartenir à des écosystèmes de plusieurs frameworks.



| | 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 |






Il convient de noter que la position de leader de Symfony ne signifie pas que la plupart des packages sont téléchargés pour être utilisés dans des projets basés sur ce framework. Plusieurs des packages Symfony de base sont utilisés par Laravel, et de nombreux autres packages Symfony peuvent également être utilisés dans les projets Laravel.



De plus, notamment, les packages Zend ont presque autant de téléchargements par mois que Laravel, bien que ce projet ne soit plus pris en charge.



Enfin, jetez un œil à la liste générale des packages PHP les plus téléchargés.



| | 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 |


Les données présentées dans cet article ont été principalement collectées par Gatis Šūpulnieks en avril et mai 2020 dans le cadre de la recherche «Développement et utilisation de packages Laravel».



Sources pertinentes:









:






All Articles