Ein Überblick über das Ökosystem des Laravel-Pakets

Speziell für Studenten der Kurse "Backend-Entwickler in PHP" und "Framework Laravel" haben wir eine weitere nützliche Übersetzung vorbereitet.












In der Laravel- Welt   spielen Pakete eine wichtige Rolle. Wie wichtig ist diese Rolle und welche Pakete gibt es? Um dies herauszufinden, haben wir Daten aus der Packagist.org- API  entnommen und Laravel-Pakete herausgefiltert.



Wie haben wir Laravel-Pakete definiert? Verwenden einer Datei  composer.json. Wir behandeln Tasche Laravel Ökosystem, wenn die Felder name, description, keywords oder type eine Zeichenfolge enthalten laravel. Außerdem wurde ein Paket als Laravel-Paket definiert, wenn es laravel/framework eine Teilbaumkomponente  illuminate/*als Abhängigkeit enthielt . Schließlich war der Schlüssel  laravelauf diesem Gebiet extra auch ein Hinweis auf die Zugehörigkeit des Pakets zum Laravel-Framework-Ökosystem.



Diese Kriterien garantieren zwar nicht, dass es sich bei dem Paket ausschließlich um Laravel handelt, sie weisen jedoch darauf hin, dass das Paket unter Berücksichtigung von Laravel erstellt wurde.



Die beliebtesten Pakete



Wenn Sie sich die Liste der am häufigsten heruntergeladenen Pakete ansehen  , werden die Ergebnisse nicht gefallen: Dies sind Basispakete und Pakete mit einer Vielzahl von Verwendungsmöglichkeiten außerhalb von Laravel-Projekten.



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


Vielleicht kann eine interessantere Bewertung erhalten werden, indem diese „falsch positiven“ Ergebnisse eliminiert werden. Wir haben die 30 beliebtesten Pakete, die für Laravel-Projekte erstellt und gezielt installiert wurden, manuell gefiltert. Wir haben auch die Zielbereiche für diese Pakete beschrieben.



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


Erklärung der Zielgebiete:



  • auth - Authentifizierung und Autorisierung
  • dev - Entwicklungs- und Debugging-Tools
  • helper - Unterstützung und Vereinfachung der Arbeit
  • integ - Integration mit anderen Diensten
  • port - Import und / oder Export in verschiedenen Formaten


Den ersten Platz in dieser Liste belegen Entwicklungstools, gefolgt von Integration.







Wir haben erwartet, dass ganz oben weitere Spatie- Pakete zu sehen sind  , aber es stellte sich heraus, dass maatwebsite / excel und tools von  Barry vd. Heuvels  werden häufiger verwendet.



Lieferantenübersicht



Insgesamt haben wir 47.337 Laravel-Pakete von 23.167 verschiedenen Entwicklern identifiziert. Das Ergebnis ist eine ziemlich gleichmäßige Verteilung mit vielen kleinen Teilnehmern.



Die Hälfte der Pakete (23.668) wurde von 3927 Kernentwicklern erstellt. Dies ist deutlich mehr, als wenn hier das Preisgesetz in Kraft gewesen wäre  . 15.042 Entwickler haben jeweils nur ein Paket veröffentlicht.



Wenn Sie die Entwickler nach der Anzahl der Pakete sortieren, sehen Sie fast unbekannte Namen. Hier sind die leistungsstärksten Paketentwickler mit den kumulativen Downloads ihrer jeweiligen Pakete.



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


Es stellt sich heraus, dass es einige Entwickler gibt, die eine große Anzahl von Komponenten erstellen und diese ohne viel Werbung bereitstellen. Um bekanntere Namen zu sehen und die Nummern für sie zu vergleichen, sortieren wir die Liste nach der Gesamtzahl der Downloads.



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


Wenn Sie die Liste stattdessen nach monatlichen Downloads sortieren, unterscheidet sich das Ergebnis geringfügig.



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


Diese Verteilungen überwiegen deutlich die Spitze. Unabhängig davon, ob es sich um tägliche, monatliche oder vollständige Downloads handelt, stammt mehr als die Hälfte aller Downloads von den Top-6-Paketentwicklern. Zum Beispiel werden 2,85 Millionen von 5,65 Millionen täglichen Downloads von  LaravelIlluminateNesbotSpatieFideloper  und  Barryvdh geteilt .



Sie können so etwas wie  den Hirsch-Index verwenden  , um die Popularität von Entwicklern zu messen. Es gibt nur 317 Entwickler mit jeweils mindestens 317 Downloads pro Tag. 1.118 Anbieter haben 1.118 oder mehr Downloads pro Monat oder 3003 für die Gesamtzahl der Downloads.



Lizenzoptionen



Unsere Lizenzübersicht ist nicht besonders genau, da unterschiedliche Zeichenfolgen verwendet werden, um dieselbe Lizenz zu kennzeichnen. Zum Beispiel gpl-3.0gpl 3.0gpl3, gplv3, auch gnu general public license version 3, und viele andere Optionen weisen auf die gleiche Lizenz.



Glücklicherweise sind die wichtigsten Schlussfolgerungen klar, da die Zeile mitdie entsprechende Lizenz für 37.502 Laravel-Pakete angibt. 6304-Pakete sind nicht lizenziert, mehr als 500 Pakete werden unter Apache 2.0- und GPL 3.0-Lizenzen verteilt. Es gibt auch mehrere hundert Pakete mit BSD 2-, BSD 3- und GPL 2.0-Lizenzen.



79% der Laravel-Pakete sind MIT-lizenziert, 14% sind nicht lizenziert und jede der verbleibenden Lizenzen wird in 2% oder weniger Paketen verwendet. Vielleicht ist dies teilweise der Einfluss des Laravel-Frameworks selbst, das unter der MIT-Lizenz vertrieben wird. Wenn Sie sich alle Pakete ansehen, ist die Popularität der MIT-Lizenz deutlich geringer - 60%.











Jenseits von Laravel



Die Anzahl der Pakete für verschiedene Frameworks zeigt, dass die Community an der Entwicklung der Tools des Frameworks beteiligt ist und inwieweit sie bereit ist, ihren Code mit anderen Mitwirkenden zu teilen. Wir haben auch die Anzahl der abgelegten Pakete und ihren Prozentsatz gezählt, um festzustellen, welche Communities florieren und welche hinterherhinken.



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






Andererseits spiegelt die Gesamtzahl der Downloads die Bedeutung von Paketen für die Entwicklung von Standardprojekten wider.



Bitte beachten Sie, dass bei der Berechnung dieser Anzahl von Downloads alle mit dem Framework verbundenen Pakete berücksichtigt werden, nicht nur die grundlegenden (wie bei der Berechnung der Anzahl der oben genannten Pakete). Hier finden Sie die Kriterien für die Klassifizierung eines Pakets als zu einem bestimmten Framework gehörend  . Ein Paket kann zu Ökosystemen mehrerer Frameworks gehören.



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






Es ist zu beachten, dass die führende Position von Symfony nicht bedeutet, dass die meisten Pakete zur Verwendung in Projekten heruntergeladen werden, die auf diesem Framework basieren. Einige der wichtigsten Symfony-Pakete werden von Laravel verwendet, und viele andere Symfony-Pakete können auch in Laravel-Projekten verwendet werden.



Insbesondere haben Zend-Pakete fast so viele Downloads pro Monat wie Laravel, obwohl dieses Projekt nicht mehr unterstützt wird.



Schauen Sie sich zum Schluss die allgemeine Liste der am häufigsten heruntergeladenen PHP-Pakete an.



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


Die in diesem Artikel vorgestellten Daten wurden hauptsächlich von Gatis Šūpulnieks im April und Mai 2020 im Rahmen der Forschung „Entwicklung und Verwendung von Laravel-Paketen“ gesammelt.



Relevante Quellen:









:






All Articles