SDKMAN - ميت ، يعيش SDKMAN


TL ؛ DR: سيتم إعادة كتابة SDKMAN CLI في Golang

لقد مرت ست سنوات منذ إصدار الإصدار الأول من SDKMAN. في الإصدارات السابقة ، كان يعرف باسم GVM وكان يستخدم لإدارة Groovy والأدوات ذات الصلة. سرعان ما أصبح واضحًا أنه لا ينبغي أن يقتصر على النظام البيئي Groovy ، ويمكن أيضًا تطبيقه على حزم JVM SDK الأخرى. عند هذه النقطة ، تم تغيير اسم GVM إلى SDKMAN. على الرغم من أن الاسم قد تغير ، تظل التكنولوجيا الأساسية كما هي.

تمامًا كما تفوقت GVM على اسمها ، تفوقت SDKMAN على التكنولوجيا التي بنيت عليها. على الرغم من حقيقة أن خدمات الواجهة الخلفية تم استبدالها ببدائل أفضل ، فقد ظل عميل CLI كما هو وأصبح أكبر مصدر لخيبة الأمل لدينا.

في البداية ، اخترنا Bash لإنشاء GVM لأنه غطى جميع المتطلبات. كان متاحًا على جميع أنظمة * nix ، وعمل بشكل سريع وزودنا ببيئة وقت تشغيل دون أي تبعيات إضافية أو نفقات عامة. هذا يعني أن تنزيل تثبيت جديد كان عمليًا بدون أي جهد تقريبًا على أي نظام.

على الرغم من الفوائد التي قدمها لنا باش ، إلا أننا وجدنا مع مرور الوقت العديد من المشكلات في هذا الاختيار:

  • يجب على مستخدمي Windows القفز من خلال الأطواق عن طريق تثبيت Cygwin / Git Bash
  • لا يعمل برنامجنا دائمًا بشكل جيد مع الأصداف البديلة مثل قشرة السمك
  • يجب دعم الاختراق الخاص للتوافق مع ZSH
  • عدم التوافق بين الإصدارات الرئيسية من Bash (ورفض Apple العنيد لشحن OSX مع إصدار حديث من Bash بسبب مشكلات الترخيص السخيفة)
  • مشاكل في الشبكة بسبب استخدام curl كعميل http الرئيسي
  • صعوبات في اختبار رمز باش الفعال

كل هذا يخبرنا أن الوقت قد حان لإنهاء Bash لصالح شيء آخر ، لذلك في الأشهر الأخيرة بدأت في دراسة Go كبديل قابل للتطبيق. بعد تقييم الاحتمالات ، يمكن تلخيص إيجابيات تنفيذ CLI على Go على النحو التالي:

  • لغة مترجمة بشكل ثابت للكشف عن الأخطاء أثناء التطوير
  • سريع بشكل لا يصدق
  • لم يعد مدمنًا على باش التربة المهتزة تحت الأرض
  • يُنشئ ثنائيات مُصنَّفة أصلاً لجميع البنى ، ويزيل الآثار الجانبية غير المتوقعة المتعلقة بالنظام الأساسي
  • دعم أسهل لاختبار القبول من خلال Godog (نسخة الخيار مكتوبة في Go)
  • يسمح لك بإعادة التفكير في بعض سلوك تطبيق SDKMAN الحالي (المزيد عن هذا لاحقًا)
  • يعزز التعاون ومدخلات المجتمع
  • بسيط ويتيح لنا القيام بهذه المهمة اللعينة (Get Shit Done)

بفهم كل هذا ، قررت إنشاء أول نسخة عمل من واجهة SDKMAN CLI الجديدة. بعد الانتهاء من هذا العمل ، سيصبح الإصدار الجديد هو الإصدار القياسي من SDKMAN. بالطبع ، سيسمح لنا هذا أيضًا بإعادة النظر في كيفية عملها حاليًا. بعد ست سنوات ، علمنا أنها تعمل ولا تعمل ، ويمكننا أن نضع هذه المعرفة في الاعتبار في نسختنا الجديدة الرائعة.

هنا نشجع مجتمعنا على الانضمام وأن يصبح جزءًا من التواصل. نريد أن نعرف الميزات التي ترغب في رؤيتها (أو لا تريدها). للقيام بذلك ، نفتح غرفة جديدة في Gitter . ندعوك للانضمام والمشاركة من خلال تقديم ملاحظات حول CLI الجديد. ما زلنا نستخدم الخيار لوصف السلوك بلغة مفهومة بنفس الطريقة كما في إصدار Bash ، ونطلب من الجميع المشاركة في تنفيذ كل وظيفة. كما كان من قبل ، نريد أن تشكل هذه الوظائف وثائق مباشرة.

لهذا السبب دعوت هذا المنشور على هذا النحو. لقد أحببنا تطوير النسخة الأصلية من SDKMAN ، لكننا أدركنا أن لديها مشاكل. الآن لدينا الفرصة لجعلها أكثر موثوقية وتحسينها للجميع. سنكون سعداء لأي مساعدة في الطريق إلى تنفيذ CLI الجديد!

من مترجم: SDKMAN هو أحد مديري الحزم المفضلين لدي ، فهو يبدأ في تثبيت JVM و Gradle و Kotlin على جهاز جديد. لهذا السبب ، بدأنا مؤخرًا في منصة CUBA بنشر أداة CUBA CLI في SDKMAN. لقد قمت بهذه الترجمة لأنني سعيد لرؤية تطوير SDKMAN وأتطلع إلى نسخته الجديدة.

Source: https://habr.com/ru/post/ar424157/


All Articles