في عالم Laravel ، تلعب الحزم دورًا مهمًا. ما مدى أهمية هذا الدور وما هي الحزم الموجودة؟ لمعرفة الجواب ، أخذنا البيانات من Packagist.org API وقمنا بتصفية حزم Laravel.
كيف عرفنا حزم Laravel؟ باستخدام ملف
composer.json. تعاملنا مع حقيبة للارافل النظام الإيكولوجي، إذا كانت الحقول 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. يتم استخدام الكعب بشكل متكرر.
نظرة عامة على المورد
في المجموع ، حددنا 47337 حزمة Laravel من 23167 مطورًا مختلفًا. والنتيجة هي توزيع عادل إلى حد ما مع العديد من المشاركين الصغار.
تم إنشاء نصف الحزم (23668) بواسطة 3927 مطورًا أساسيًا. هذا أكثر بكثير مما لو كان قانون برايس ساري المفعول هنا . قام 15،042 مطورًا بنشر حزمة واحدة فقط لكل منهم.
إذا قمت بفرز المطورين حسب عدد الحزم ، يمكنك رؤية أسماء غير معروفة تقريبًا. فيما يلي أفضل مطوري الحزم أداءً مع التنزيلات التراكمية للحزم الخاصة بهم.
| | 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 مطوري للحزم. على سبيل المثال، يتم تقاسم 2850000 من 5650000 التنزيلات اليومية لارافل ، تضيء ، 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 حزمة بموجب تراخيص Apache 2.0 و GPL 3.0. هناك أيضًا عدة مئات من الحزم مع تراخيص BSD 2 و BSD 3 و GPL 2.0.
79٪ من حزم Laravel مرخصة من قبل معهد ماساتشوستس للتكنولوجيا ، و 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 الرائدة لا تعني أن معظم الحزم يتم تنزيلها للاستخدام في المشاريع القائمة على إطار العمل هذا. يستخدم Laravel بعض حزم Symfony الأساسية ، ويمكن أيضًا استخدام العديد من حزم 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 thispulnieks في أبريل ومايو 2020 كجزء من البحث "تطوير واستخدام حزم Laravel".
المصادر ذات الصلة:
- البيانات الأولية
- مقالة ذات صلة بقلم جيسون ماكريري
- مؤلف هذا المقال: جوريس إيفرتوفسكيس
- : Gatis Šūpulnieks
- ,