طوال الوقت الذي أعمل فيه في Microsoft ، أقوم بإنشاء أدوات لمطوري Linux. بدأت العمل في أغسطس 2016 ، بعد تخرجي من جامعة فرجينيا ، حيث درست علوم الكمبيوتر وإدارته. خلال دراستي ، قمت ببرمجة بشكل أساسي في لغة C ++. نظام التشغيل الرئيسي هو نظام Linux.

قد يبدو أن تجربتي لا تتطابق تمامًا مع ما قد تحتاج إليه Microsoft ، ولكن في ذلك الوقت كانت الشركة تمر بتحول كبير ، من حيث التكنولوجيا ومن حيث الثقافة. كانت الشركة تنتقل إلى حالة جديدة كانت فيها جميع أنظمة التشغيل ، بما فيها Linux ، مهمة لها.
بدأ عملي في Microsoft في فريق Linux. كنت أفعل منتج SQL Server هناك. عُرض عليّ الانضمام إلى هذا الفريق ، على أمل أن أحمل تجربتي في Linux إليه. لقد تأثرت كثيرًا بحقيقة أنه على الرغم من أنني تركت الفريق للتو ، إلا أنني قد أكون ذات قيمة للفريق بسبب تجربتي.
قبل بضع سنوات ، كانت فكرة تطوير متغير من SQL Server لنظام Linux هي مزحة April Fool ، ولكن في عام 2016 ، كانت هذه الفكرة حقيقية تمامًا. انضممت إلى الفريق بعد فترة وجيزة من إطلاق الإصدار الأول من المنتج. بدأت في تحسين مجموعة أدوات SQL Server ، خاصةً للمسؤولين. تهدف مجموعة الأدوات هذه إلى إدارة خوادم وتطبيقات Linux. يتطلب استخدام SQL Server على Linux تقديم أدوات سطر الأوامر إلى الشكل الذي اعتاد مستخدمي Linux عليه.
بالإضافة إلى ذلك ، أتيحت لي الفرصة لتصميم الإصدار الأول من SQL Server GUI لنظام التشغيل Linux. لقد بدأت بشوكة Visual Studio Code ، والتي تسمى اليوم Azure Data Studio. هذا تطبيق قائم على الإلكترون ، وبغض النظر عن نظام التشغيل ، يمكنه العمل مع أي نوع من أنواع SQL Server.
لقد تعلمت الكثير من SQL Server لنظام Linux في سنتي الأولى في Microsoft. في هذه المعرفة ، يمكنني أيضًا تضمين تطوير نهج لإدارة تطوير ودعم المشروعات القائمة على مزيج من التكنولوجيا والتفكير التجاري.
فريق WSL ، Chocolatey ، و Boxstarter في Microsoft Build 2018في أغسطس 2017 ، انضممت إلى فريق WSL (نظام Windows الفرعي لنظام Linux ، ونظام Windows الفرعي لنظام Linux) كمدير للمشروع. سمعت لأول مرة عن WSL أثناء الإعلان في Microsoft Build 2016. فيديو مرتبط من القناة 9 ، "
Running Bash on Ubuntu على Windows! "، مباشرة بعد إطلاق سراح أصبح الفيروسية. من الواضح أنها تهم الجمهور أكثر من العديد من الإعلانات الأخرى التي صدرت في المؤتمر. تمت مناقشة تقنية WSL لفترة وجيزة ، حرفيًا في بضع دقائق ، وتمت مناقشتها في إطار تسجيل النقاط الرئيسية للمؤتمر. ومع ذلك ، فإن الجمهور من هذا جنون مباشرة ، ناهيك عن الصحفيين. كان هناك وقت خاف فيه فريق دعم Channel9 من أن المستوى المرتفع لاهتمام المستخدم بمقطع الفيديو هذا يرجع في الواقع إلى هجوم DDoS! قام المتحدث الرسمي باسم Microsoft بإطلاق Bash على Ubuntu ، والذي يعمل داخل Windows ... كان هذا الإجراء بمثابة ضربة فورية.
كان الفريق الأول الذي اكتشف احتياجات المستخدم من WSL هو الفريق الذي عمل على وحدة التحكم في Windows. أثناء التطوير ، سمعوا مرارًا وتكرارًا أن الأشخاص يريدون شيئًا مثل Linux Bash. ونتيجة لذلك ، توصل الفريق إلى الفكرة التالية: "لماذا تفعل شيئًا يشبه Bash ، إذا كان بإمكانك فقط تشغيل قذيفة Bash بشكل صحيح على Windows؟"
هذا لا يعني أنه كان من السهل القيام به. يتطلب إنشاء WSL مزيجًا من المعرفة المتعمقة لنظام التشغيل Windows ، والتي يمتلكها فريق التطوير في قلب النظام ، بالإضافة إلى تقنية تم تطويرها في Microsoft Research تسمى picoprocess. ومن المثير للاهتمام ، أن عمليات picoprocesses ، بالإضافة إلى ذلك ، هي التكنولوجيا التي تجعل SQL Server يعمل على نظام Linux.
كان من المفترض أن توفر picoprocess تطبيق Linux غير المعدل في وضع المستخدم. يقوم فريق Windows kernel بتطوير الحشوات المصممة لربط مكالمات نظام Linux بـ Windows. بمعنى آخر ، أتاحت WSL تشغيل التعليمات البرمجية المترجمة لنظام Linux على kernel Windows NT. ليست هناك حاجة لإعادة ترجمة الشفرة أو استخدام الأجهزة الافتراضية.
لم نخلق بعد ذلك توزيعة Linux الخاصة بنا فقط. والحقيقة هي أن هناك العديد من هذه التوزيعات. أول إصدار Linux متوفر في WSL كان Ubuntu. اتصلنا بمتخصصي Canonical لمعرفة ما إذا كانوا يرغبون في مساعدتنا في العمل على WSL. كانوا متحمسين لفكرتنا. هذا أدى إلى حقيقة أن أوبونتو ظهر في متجر Microsoft. بالمناسبة ، الجملة السابقة ، في حد ذاتها ، تبدو غير عادية للغاية. الآن في متجر Microsoft ، يمكنك حساب 6 توزيعات. أتساءل ما مخازن التطبيقات الأخرى المتوفرة على أنظمة تشغيل معينة لديها أنظمة تشغيل أخرى؟
يحتوي متجر Microsoft الآن على 6 توزيعات Linux يمكن استخدامها في WSLالرمز الذي كتبناه آنذاك هو استدعاءات نظام kernel المتوافقة مع Linux ، والتي كانت بمثابة واجهة بين عمليات Linux و Windows kernel. Linux لديه حوالي 340 مكالمة نظام. كان السؤال هو تحديد النظام الذي يدعو إلى تنفيذه أولاً. كما هو الحال مع أي نظام تشغيل ، تتم إضافة دعوات نظام Linux الجديدة عند إصدار إصدارات جديدة من نظام التشغيل ، ولكن لا يتم حذف المكالمات القديمة مطلقًا ، مما يضمن التوافق مع الإصدارات السابقة. في البداية ، تم تنفيذ معالجة مجموعة معينة من مكالمات النظام ، وتم لف كل شيء آخر في أحداث مثل "لم يتم تنفيذها بعد". سمح ذلك لفريق WSL بالبدء في تحليل النظام الذي يحتاجه مستخدمو Linux بالضبط.
تعني الإجابة على سؤال ما هي مكالمات النظام التي يجب تنفيذها في المقام الأول الحاجة إلى إقامة اتصال مع الأشخاص الذين يستخدمون WSL. كانت الرسالة حول هذه التقنية في مؤتمر Build تهدف إلى جعل الناس يبدأون في استخدام WSL وإبداء الرأي. من أجل الحصول على WSL ، يجب أن تكون عضوًا في برنامج Windows Insider. يمكن لأي شخص الاتصال بهذا البرنامج. قد تعتقد أن المشاركين في البرنامج هم فقط أولئك الذين كانوا مهتمين بـ Windows ، ولكن بعد ذلك ، من بين أكثر من عشرة ملايين مشترك ، كان هناك أشخاص لديهم مجموعة واسعة من الاهتمامات. لقد كانوا مهتمين ليس فقط بنظام Windows ، ولكن أيضًا بالألعاب والميزات الجديدة مثل Bluetooth و WSL.
كانت واحدة من مجموعات المستخدمين المهتمة بتشغيل Bash shell على Windows هي مطور الويب المشترك في إنشاء تطبيقات الويب التي تعمل على خوادم Linux. العملية الكاملة لتجميع تطبيقاتهم كانت غالبًا سلسلة من أوامر Bash. بالإضافة إلى ذلك ، إذا قرر شخص ما طلب المساعدة في تطوير تطبيقات الويب ، على سبيل المثال ، في Stack Overflow ، فإن معظم نماذج الشفرات التي يمكنه العثور عليها سيتم تصميمها لتعمل على Linux. هذا ليس جيدًا بشكل خاص لأولئك الذين يستخدمون Windows كجهاز الكمبيوتر الخاص بهم لتطوير الويب. غالبًا ما يكون من السهل على هؤلاء المطورين التبديل ببساطة إلى نظام Mac الأساسي. في نظام التشغيل MacOS ، تعمل أمثلة الرموز المشابهة دون أي مشاكل.
في الأسبوعين الأولين من وجود WSL على Windows ،
تمكن مستخدم واحد من المؤسسات
من تشغيل XEyes. تم تشغيل هذا البرنامج على نظام نوافذ X11 يعمل في WSL. XEyes هو برنامج بسيط. انها تعرض عيون الكرتون التي تتبع مؤشر الماوس. لكن هذه المظاهرة فجرت الشبكات الاجتماعية.
تعمل XEyes على Windows من خلال WSLلقد ناقشنا الكثير حول بالضبط كيف نريد جمع مراجعات المستخدمين حول WSL. كانت الأداة التقليدية المستخدمة لجمع التعليقات هي UserVoice. كان لدينا موقع UserVoice مصمم لخدمة WSL ، والذي جمع مئات الأفكار وآلاف الأصوات حول مختلف القضايا. طرح السؤال الحقيقي لنا عندما يتعلق الأمر بما إذا كان ينبغي لنا استخدام جيثب. نظرًا لأن مطوري الويب كانوا من أوائل مجموعات المستخدمين المهتمين بـ WSL ، فإن مسألة GitHub كانت مهمة جدًا. لكن WSL لم يكن مشروع مفتوح المصدر. يبدو وضع مثل هذا المشروع على جيثب غريبًا. قررنا تلبية متطلبات المطورين وأنشأنا صفحة على GitHub للإبلاغ عن المشكلات والتعليقات والمناقشات. منذ ذلك الحين ، تلقينا آلاف الرسائل المتعلقة بالعديد من المشكلات المتعلقة باستخدام Linux على Windows.
لقد ترك الآلاف من الأشخاص رسائل خطأ في
مستودع WSL
GitHub . تمت مراجعة كل هذه الرسائل ومناقشتها بواسطة فريق WSL ، وتم تقديم تعليقات على كل منها. بعد ذلك ، تم اتخاذ قرار بشأن المزيد من الإجراءات. إذا كان من أجل تحقيق فرصة معينة أو إصلاح نوع من الأخطاء ، كان من الضروري كتابة رمز جديد - تم إنشاء هذا الرمز وإضافته إلى مشروع WSL ، وبعد ذلك وقع في جميع تجميعات Windows الموزعة ضمن برنامج Windows Insider. الدورة بأكملها ، من تلقي رسالة خطأ إلى تصحيحها ، لم تستغرق الكثير من الوقت - حوالي أسبوعين.
نتيجة لذلك ، بفضل الاستجابة التشغيلية لفريق WSL لطلبات المستخدم ، كان من الممكن القول إن المجتمع كان مشاركًا في عملية إنشاء WSL. أبلغ الأشخاص عن مشاكل أو رغباتهم من خلال UserVoice أو GitHub ، راجع الفريق كل هذا وأجرى تغييرات على المشروع ، والذي ظهر بعد ذلك في تصميمات مشروع Windows Insider.
عندما انضممت إلى فريق WSL كمدير للمشروع ، ركزت على إخراج WSL من النسخة التجريبية. شكاوى المستخدمين المتعلقة أساسا بالتوافق والأداء. ولكن ، في رأيي ، إذا كان المستخدمون يشعرون بالقلق إزاء مثل هذه الأشياء ، فهذا يعني أنهم يستخدمون تطويرنا على محمل الجد. يتم الاهتمام بالأداء فقط من قبل أولئك الذين يقومون بحل بعض المشكلات الكبيرة بمساعدة نظام برمجيات معين. نتيجةً لذلك ، على الرغم من أنه لا يزال أمامنا الكثير مما ينبغي عمله ، إلا أننا لم نفعل ذلك بنفس الطريقة ، ولكن حتى يتمكن الأشخاص من حل المزيد من المشكلات باستخدام WSL ، وبالتالي يمكنهم حل مشكلاتهم بشكل أسرع.
نظرًا لتوسع قدرات WSL ، بذلنا جهودًا لتقريب WSL من المطورين ، وليس فقط للمستخدمين الذين يعملون تقليديًا باستخدام نظام Microsoft البيئي. كان من المثير للاهتمام للغاية حضور أحداث مثل PyCon و OSCON. فوجئ المطورون الذين كانوا حاضرين هناك بأن ممثلي Microsoft شاركوا أيضًا في هذه الأحداث. لم يكن المطورون يثقون بفكرة تشغيل Linux في بيئة Windows. في هذه الأحداث ، عرضت SQL Server و WSL و Visual Studio Code.
مظاهرة من WSL في المناسبات المختلفةلقد استجبت لتعليقاتهم المتشككة باقتراح بتجربة ما أظهرته لهم. عندما بدأ المتشككون في تنفيذ الأوامر الخاصة بهم والبرامج النصية الصغيرة والقصاصات ، التقيت دائمًا برد فعل عنيف على ما كان يحدث: "انتظر لحظة ، وهذا بالفعل نظام Linux. كيف فعلت هذا؟ لماذا لا أعرف عن هذا؟ " غالبًا ما توصلوا إلى استنتاج مفاده أننا أنشأنا شيئًا يلبي احتياجاتهم ، وهو شيء يبدو مثيراً للاهتمام.
أخذنا شكاوى المستخدمين فيما يتعلق بتوافق WSL والأداء ،
وأصدرنا بنية نظام جديدة -
WSL 2 . يوفر توافقًا تامًا من خلال تضمين Linux kernel في نظام التشغيل Windows ويوفر زيادة في السرعة تبلغ 20 ضعفًا. حصلت على تجربة مثيرة للاهتمام في إنشاء أساس WSL 2 ومشاهدة الإعلان عن هذه التكنولوجيا في مؤتمر Build الذي عقد في مايو 2019. اليوم ، تجاوز مشروع WSL إصدار بيتا بالفعل ووصل إلى الإصدار 2.
بالإضافة إلى ذلك ، عملت في Microsoft مع فرق أخرى ، في محاولة لضمان إمكانية استخدام WSL مع منتجاتها. أحد الأمثلة المهمة لهذا الاستخدام لـ WSL هو Visual Studio Code. هذه هي بيئة الأكواد الأكثر استخدامًا في تطوير مشاريع JavaScript و Node.js. أصبحت مهتمًا باستخدام Visual Studio Code عندما أدركت أن المطورين الذين يستخدمون هذا المحرر يمكنهم الحصول على فوائد كبيرة من WSL. في البداية ، لم يكن الأمر يتعلق بالحاجة إلى كتابة كميات هائلة من التعليمات البرمجية. الهدف الرئيسي هو تبسيط تصحيح برامج Node.js التي تعمل في بيئة WSL. سيتيح هذا للمطورين الفرصة لتطوير برامج مصممة لإصدار Linux من Node.js على كمبيوتر يعمل بنظام Windows باستخدام WSL. سيبدو تصحيح مثل هذه البرامج تمامًا مثل تصحيحها على نظام Linux.
أول محاولة لدمج Visual Studio Code مع WSL و Node.jsبعد أن أصبح هذا ممكنًا لجافا سكريبت و Node.js ، بدأنا في تلقي الكثير من الطلبات لشيء مشابه يتم تنفيذه للغات أخرى ، على سبيل المثال ، C ++ و Python. لقد سررت بهذا المثال عن تكامل WSL و VS Code ، وجدت أنني كنت مهتمًا جدًا بهذا الأمر. قادني هذا إلى دوري الجديد في بناء أدوات لمطوري Linux. الآن أركز على أدوات لمطوري C ++ في VS Code. في هذا العمل ، بالطبع ، أركز على نظام Linux. كان من الجيد رؤية عرض توضيحي لـ Visual Studio Code Remote Development في حدث PyCon هذا العام عندما تم إصدار ملحق WSL المقابل. في الوقت نفسه ، تم تقديم امتداد لـ C ++ ، والذي كان فريقي يعمل على تطويره.
على الرغم من أنني لم أقضي الكثير من الوقت في Microsoft ، إلا أنني سعيد لأنني تمكنت من المشاركة في إنشاء العديد من الأدوات لمطوري Linux. قاعدة البيانات هذه ودعم نظام التشغيل Linux على Windows ، وأدوات كتابة التعليمات البرمجية وتصحيح الأخطاء. أخطط لمواصلة العمل على نظام Linux وإنشاء أدوات سيستمتع بها مطورو البرامج حول العالم.
أعزائي القراء! هل تستخدم WSL؟
