في آي

نظرة عامة

التسمية (في آي vi) مستمدة من أقصر اختصار غير مبهم للأمر visual والذي يعني بالعربية (مرئي) وهو جزء من مجموعة الأوامر التي كان ينفذها المحرر إكس ويقوم هذا الأمر بوضع المحرر إكس على الوضعية أو النمط المرئي.
و تجدر الإشارة إلى أنه بالإضافة إلى التطبيقات المتعددة والغير حرة الموزعة تحت رخصة الملكية الفكرية ليونكس (المقصود بالتطبيقات هنا هي التطبيقات المحاكية ل في آي) هناك العديد من التطبيقات التي تقابلها في عالم البرمجيات الحرة والبرمجيات المفتوحة المصدر مثل فيم، وفي عام 2009 قام قراء مجلة لينكس جورنال بالتصويت ل في آي باعتباره الأكثر استخداماً بين محررات النصوص بما فيها محرر النصوص المشهور جي إديت (حيث تغلب في آي بنسبة 36% على جي أديت الذي حاز نسبة 19% من قراء المجلة).

البداية

يعزى تطوير في آي إلى سلسلة من محررات يونكس التي تعتمد سطر الأوامر كمنصة للعمل عليها وأول هذه المحررات كان المحرر إد (ed) الذي تم تطويره واستخدامه في شركة "إي تي أند تي" (AT&T) وقد أبدا المطورون في ذلك الوقت ارتياحهم لاستعمال المحرر إد البدائي وذلك بشهادة جورج كولوريس الذي قال:
لسنوات طويلة لم يملكوا (أي الموظفون في AT&T) وحدات تحكم مناسبة (suitable terminals) وتابعوا استخدامهم لأوامر تي تي واي "TTY" (و هي مجموعة من الأوامر التي تقوم بطباعة البيانات على شكل مخرجات جهاز العرض) وأوامر طباعة أخرى لمدة طويلة وعندما قامت الشركة بشراء شاشات "تيكترونيكس 4014" (Tektronix 4014) "و هي عبارة عن نسخة خاصة من شاشات العرض الأحادية اللون تعتمد تقنية أنبوب الأشعة المهبطية أو CRT لإظهار مخرجات العرض" ولم يكن بالإمكان استخدام محرر نصوص على هذه الشاشات لأن مخرجات العرض لا يمكن تحديثها وبالتالي كان لابد ان يقع حمل تطوير محرر نصوص يعمل على شاشة العرض ليونكس على عاتق أحد وكنا قد قررنا أخذ هذه المسؤولية على اكتافنا وعملنا عليها لسنوات عديدة.
اعتبر جورج كولوريس -متهكما- الأوامر الخفية التي يقوم المحرر إد بتنفيذها بعيدا عن أعين مستخدميه مناسبة "للخالدين فقط" ولذلك قرر أن يقوم بتطوير المحرر إد بالاعتماد على الشيفرة المصدرية التي قام كين ثومبسون بكتابتها واعتبارها نقطة البداية لإيجاد محرر نصوص مخصص ل "غير الخالدين" وكان ذلك في شهر فبراير من العام 1976 حيث كان يعمل في ذلك الوقت في كلية الملكة ماري، بجامعة لندن وقد سمي المحرر الجديد باسم إم (em) وهي الأحرف الأولى من الكلمات (Editor for Mortals) وتعني بالعربية "محرر نصوص لغير الخالدين".
تم تصميم المحرر إم للعمل على شاشات العرض وكان يتصرف كمحرر مرئي لمعالجة النصوص وكان هذا المحرر يقوم بمعالجة النصوص سطر واحد في نفس الوقت واعتبر إم واحدا من أوائل التطبيقات في يونكس التي اعتمدت على "نمط ادخال وحدة التحكم المجردة" (raw terminal input mode) حيث يقوم البرنامج الفعال بمعالجة ضغطات المفاتيح (المفاتيح التي يقوم المستخدمون بالضغط عليها في لوحة المفاتيح) بدلاً من قيام برنامج التعريف المخصص في وحدة التحكم من القيام بذلك.
و عندما قام جورج كولوريس بزيارة لجامعة كاليفورنيا، بركلي في عام 1976 قام باحضار شريط مغناطيسي مخصص لتخزين البيانات يسمى ديكتيب (DECtape) ويحوي هذا الشريط في طياته المحرر إم وعرضه على العديد من الناس وقد حاز هذا المحرر على انتباه أناس كثيرين من بينهم بيل جوي.
قام بيل جوي وتشك هالي بأخذ الشيفرة المصدرية للمحرر إم وقاما بتطويره ليطلقوا بعد ذلك المحرر إن (en) وبعد ذلك قاما بتطوير إن ليقوموا بإطلاق النسخة 0.1 من إكس وكل ذلك حدث عندما كانا في مرحلة التخرج من جامعة كاليفورنيا، بركلي وبعد ذلك انسحب تشك هالي من المشروع.
ثم شجع بروس إنجلر بيل جوي على المضي قدماً في اعادة تصميم المحرر وهذا بالفعل ما قام به جوي ما بين شهري يناير وأكتوبر من سنة 1977 حيث قام بتطوير نافذة مرئية كاملة للمحرر إكس والتي عرفت فيما بعد بالاسم في آي، الكثير من الأفكار في المحرر الجديد تم استنباطها من تطبيقات كانت موجودة آنذاك ووفق جوي نفسه فقد كان هناك الكثير من الأفكار التي تم اخذها من المحرر "براڤو" (Bravo) الذي عرف عنه بأنه أول محرر نصوص يطبق نمط ما تراه هو ما تحصل عليه وفي مقابلة تمت مع بيل جوي عن بدايات في آي أسهب جوي قائلاً:
الكثير من الأفكار في المحرر في آي كانت قد "سرقت" من دليل الاستخدام للمحرر براڤو حيث قمت بالنظر خلسةً إلى دليل المستخدم ونسخته، فمثلاً أمر النقطة (.) يمثل الهروب الإزدواجي (double-escape) في براڤو وكذلك الحال في أمر استرجاع الحالة (redo)، معظم هذه الأوامر قد تمت سرقتها، وبعض الأوامر تمت سرقتها من إد حيث كنا قد حصلنا على نسخة تورونتو من دليل الاستخدام والتي أظن أن روب بيك له علاقة بسرقتها حيث أخذنا امتدادات بعض التعابير النمطية من هناك.
قام جوي باستخدام طرفية حاسوب (أو وحدة تحكم) من نوع لير سيجلر (Lear Siegler) التي تحمل الاسم (ADM3A) حيث كان مكان زر الهروب Esc في نفس المكان المخصص حاليا لزر الإزاحة Tab ⇆ على ألواح المفاتيح من نوع (IBM PC) المعروفة، وكان ذلك مناسباً لوضع وظيفة تبديل الأوضاع على ذلك الزر (زر الهروب) "و تجدر الإشارة هنا إلى أن هناك وضعين للتعامل مع محرر النصوص في آي وهما وضع الأدخال ووضع الأوامر"، بالإضافة إلى استخدام أزرار الحروف (h,j,k,l) لتنفيذ أكثر من وظيفة ففي وضع الإدخال تتصرف هذه الأزرار عند الضغط عليها كبقية أزرار لوحة المفاتيح حيث تقوم بطباعة الحرف المسند إليها وفي وضع الأوامر تتصرف بنفس وظيفة الأسهم حيث يقوم زر الحرف h بتحريك المؤشر إلى اليسار ويقوم زر الحرف j بتحريك المؤشر إلى الأسفل ويقوم زر الحرف k بتحريك المؤشر إلى الإعلى وأخيراً يقوم زر الحرف l بتحريك المؤشر إلى اليمين، ولم تكن لوحة ADM3A تحوي على المزيد من أزرار المؤشر سوى المذكورة سابقاً.
و قد فسر جوي أن نتيجة الاقتضاب وأوامر الحروف الأحادية وقدرة الكتابة بشكل مباشر في حال فتح شاشة التحرير تعود إلى البطء في تحويل إشارات أزرار المفاتيح التي يتم الضغط عليها إلى أحرف مطبوعة على جهاز الإخراج وأنه أراد أن يستغل وقت اظهار الكلمات على الشاشة التي تظهر النصوص المطبوعة بسرعة أبطأ من سرعة الطباعة لدى المستخدم في طباعة المزيد من النصوص.

التوزيع

كان جوي مسؤولاً عن إطلاق الإصدارة الأولى من بي أس دي يونكس، وكان ذلك في شهر مارس من عام 1978 وكانت الإصدارة تحوي المحرر إكس بنسخة 1.1 (التي تم إطلاقها بتاريخ 1 فبراير من العام 1978) مما أتاح له المجال لإيصال المحرر الذي قام بتطويره إلى شريحة عريضة من المستخدمين تتجاوز مستخدمي جامعة كاليفورنيا ومن هذا التاريخ أصبحت كل إصدارة لنظام تشغيل بي أس دي يونكس تحوي فقط على محررين رئيسيين للنصوص وهما إد وإكس وفي مقابلة أجراها في العام 1984 أرجع جوي نجاح في آي إلى حقيقة أن المحرر كان متاحاً بشكل حر ومجاني بينما كانت المحررات الأخرى مثل إيماكس تكلف مئات الدولارات.
و من الملاحظ أن معظم مستخدمي إكس كانوا يمضون معظم أوقاتهم في تحرير النصوص مع النمط المرئي للمحرر  ولذلك وفي الإصدارة 2.0 (التي تم إطلاقها مع النسخة الثانية من توزيعات برمجيات بيركلي في مايو من العام 1979) قام جوي بجعل في آي يعمل كمؤشر متصل مع إكس بمعنى أنه في حال استدعاء في آي على سطر الأوامر فإن إكس سيتم استدعاؤه بشكل تلقائي ليعمل بالنمط المرئي وبالتالي لم يكن في آي مفصولاً عن إكس وانما كان هو نفسه إكس. وقد وصف جوي الإصدارة 2.0 من إكس بأنها برنامج كبير وبالكاد تستطيع الذاكرة الرئيسية لجهاز الحاسوب من نوع (PDP-11/70) أن تسعه. وعلى الرغم من اعتبار في آي برنامج صغير وخفيف في الوقت الحالي إلا انه لم يكن يعتبر كذلك في بداياته ومع إطلاق الإصدارة 3.1 التي كانت محوية في النسخة الثالثة من بي أس دي (تم إطلاق هذه النسخة من بي أس دي في شهر ديسمير من العام 1979) لم تستطع الذاكرة الرئيسية لجهاز (PDP-11) أن تسع المحرر في آي كاملاً.
بقي جوي يقود عملية التطوير في "في آي" حتى إطلاق الإصدارة 2.7 في شهر يونيو من العام 1979 ومن ثم أصبحت مساهماته متباعدة ومتفرقة حتى إطلاق الإصدارة 3.5 في شهر أغسطس من العام 1980 وفي حديث مع جوي حول تاريخ في آي علق جوي عن سبب توقفه في المشاركة بتطوير في آي قائلاً:
كنت أتمنى لو أننا لم نستخدم جميع الأزرار في لوحة المفاتيح، أعتقد أن أحد الأشياء المثيرة للإهتمام في "في آي" هي أنه محرر يعتمد على تبادل الأوضاع -في إشارة إلى وضع الإدخال ووضع الأوامر- واعتقد انه من الجيد أن تمضي محررات النصوص التي تعتمد على تبادل الأوضاع قدما، أحد الأشياء الجيدة في إيماكس هي نموذجيته وقدرته على التطويع والتطور وهاتان الفكرتان لم ينتاباني من قبل. ولم أكن جيدا في تحسين الشيفرة المصدرية عندما قمت بكتابة في آي وأظن أن إضافة إعادة عرض النصوص كانت من العند بمكان حيث أنها كانت جد جيدة فيما كانت تقوم به ولكن ذلك يكون عندما تقوم بكتابة البرامج وأنت تتعلم ولهذا السبب فقد توقفت عن العمل بها.ما حدث فعلياً هو أنني كنت أعمل لتطبيق إضافة النوافذ المتعددة في "في آي" عندما قمنا بتنصيب مجموعة التعليمات الخاصة بنا (our VAX) وكان ذلك في شهر ديسيمبر من العام 78، لم يكن لدينا أي نسخ احتياطية وقد تعطل شريط تخزين البيانات لدينا ومع ذلك كنت قد مضيت قدماً بالعمل مع علمي بعدم قدرتي على التخزين احتياطياً وحدثت أسوأ الاحتمالات فقد فقدت جزءاً من الشيفرة المصدرية وقد اضطررت لإعادة كتابة جزء كبير من الشيفرة المصدرية للإضافة المخصصة لإعادة عرض النصوص في النوافذ وكانت تلك هي اللحظة التي قررت فيها التوقف عن العمل بهذه الإضافة.بعد ذلك قررت العودة إلى الشيفرة المصدرية الخاصة بالنسخة السابقة من في آي حيث قمت بتوثيق الشيفرة المصدرية وأنهيت دليل الاستخدام وأقفلته، إن لم تحدث تلك الواقعة التي أضاعت الجزء الأكبر من شيفرة النوافذ المتعددة لكان في آي يحوي دعمه الخاص للنوافذ المتعددة وربما كنت قد استطعت أيضاً ان أضيف جزء من الواجهة البرمجية ولكني لست متأكداً من ذلك، المشكلة الرئيسية في "في آي" هي دعمه لفأرة الحاسوب (Mouse) ولهذا السبب تجد هذا الكم من الأوامر، وأعتقد ان مستويات متعددة من القدرة على ارجاع حالة التحرير "undo" ستكون رائعة أيضاً، ولكن وبشكل أساسي يبقى في آي هو نفسه إد من الداخل ولا يستطيع أحد العبث بهذا الواقع حيث يشبه ذلك كرة الحلويات الصغيرة "المصاصة" المغلفة بغشاء حافظ يحيط بها من كل جانب، أعتقد أنه ان كنت استطيع الرجوع إلى الوراء لما رجعت بل سأبدأ من جديد مرة أخرى
في عام 1979 قام مارك هورتون بأخذ مسؤولية تطوير في آي وقد قام هورتون بإضافة الدعم لأزرار الأسهم وأزرار الوظائف والماكروات وقد قام أيضاً بتحسين أداء المحرر حيث قام بإزالة مكتبات "تيرم كاب" (و هي عبارة عن مكتبات برمجية وقواعد بيانات خاصة بالأنظمة الشبيهة بيونكس) واستبدالها بمكتبات "تيرم إنفو" (و هي شبيهة بمكتبات تيرم كاب من حيث الوصف ولكنها تختلف عنها في أنها تحقق نمطية device-independent) وتجدر الإشارة هنا إلى أن مارك هورتون هو أول من قام بتطبيق "تيرم إنفو" وكان ذلك بين العامين 1981 و 1982.

المستنسخات والمحاكيات

وصولا للإصدارة 3.7 من في آي والتي تم إطلاقها في أوكتوبر من العام 1981 كانت جامعة كاليفورنيا هي البيت الحاضن لتطوير "في آي" ولكن مع انسحاب بيل جوي من المشروع في أوائل عام 1982 وانضمامه لشركة صن ميكروسيستمز ومن ثم تبني شركة إي تي أند تي (AT&T) في نظامها نظام يونكس الخامس (UNIX System V) لتطوير في آي وكان ذلك في شهر يناير من العام 1983، حصلت بعض التغييرات على الشيفرة المصدرية في "في آي" ولكن هذه التغييرات كانت بطيئة وتحدث بشكل عشوائي، وكانت هذه التغييرات تحصل أيضا في جامعة كاليفورنيا ولكن رقم الإصدارة لم يتم أبداً تحديثه ولم يتجاوز 3.7، وقد حصلت الشركات التجارية التي اعتمدت يونكس في أعمالها على نسخة من الشيفرة المصدرية ل"في آي" مثل شركة صن ميكروسيستمز (Sun Microsystems) وأتش بي (HP) ودي إي سي (DEC) وآي بي أم (IBM) وقد دعمت أنظمة تشغيل هذه الشركات نسخ "في آي‌" الجديدة والتي تأتي بعد الإصدارة 3.7 وكان ذلك على شكل إضافات وظيفية مثل دعم تعديل تعيين أزرار لوحة المفاتيح والتشفير بالإضافة إلى دعم الحروف الواسعة النطاق (و هي الحروف التي تحتاج إلى حجم أكبر من 8 بت لتخزينها ومعالجتها).
و بينما هذه الشركات كانت تعمل على الشيفرة المصدرية التي قام بيل جوي بكتابتها (و استمرت بالعمل عليها ليومنا هذا) حرم كثير من الناس من القيام بذلك ويعود السبب في ذلك أن جوي بدأ العمل في "في آي" على الشيفرة المصدرية التي قام كين ثومبسون بكتابتها للمحرر إد وبالتالي فإن المحررين إكس و"في آي" لم يكن من الممكن التعديل والتحكم بشيفراتهم المصدرية الا عن طريق رخصة إي تي أند تي (AT&T)، وقد بحث المستخدمون عن محرر نصوص حر شبيه بمحررات يونكس لسد هذه الفجوة وفي عام 1985 ظهرت نسخة من محرر إيماكس وكانت تسمى (ميكرو إيماكس) وكانت مخصصة لعدد من المنصات ولم تصح هذه الحقيقة ل "في آي" حتى شهر يونيو من العام 1987 حيث ظهر المحرر ستيفي (Stevie) وهو محرر محاكي لحد ما ل "في آي" وفي بدايات شهر يناير من العام 1990 قام ستيف كيركيندال بالإعلان عن مستنسخ اَخر ل "في آي" سمي باسم "إلفيس" (Elvis) في مجموعة يوزنت الإخبارية المسمى (comp.os.minix) وكان يهدف بهذا الوصول إلى محرر يحاكي "في آي" بشكل أفضل من ستيفي وعلى الفور جذب هذا الإعلان انتباه عدد من المطورين المهتمين بالموضوع، وبعد ذلك قام أندرو تانينباوم بطرح استفتاء لتقرير المحرر الأفضل في محاكاة "في آي" من المحررين ستيفي وإلفيس ليكون محرر النصوص المحاكي ل"في آي" في نظام مينيكس وقد تم اختيار إلفيس وبقي إلفيس محرر النصوص المحاكي ل "في آي" في نظام مينيكس حتى يومنا هذا.
في عام 1989 بدأ الزوجان لين ووليام جوليتز بتطويع بي أس دي يونكس للعمل على معالجات إنتل من فئة 386 ولكن من أجل إيجاد توزيعة حرة كان يجب عليهم تجنب أي شيفرة مصدرية توجب حق الملكية لشركة إي تي أند تي (AT&T) ويتضمن ذلك الشيفرة المصدرية ل"في آي" ولسد هذا الفراغ قاما في عام 1992 باستخدام المحرر إلفيس بديلاً عن في آي وقد جاءت أحفاد بي أس دي 386 (386BSD) مثل فري بي أس دي (FreeBSD) ونِت بي أس دي (NetBSD) على نفس النسق لاعتماد محررات النصوص.
و في جامعة كاليفورنيا أراد كيث بوستيك بديلاً مطابقاً ل"في آي" من أجل تنصيبه في بي أس دي 4.4 لايت، وباستخدام الإصدارة 1.8 من المحرر إلفيس قرر أن تكون هذه هي نقطة البداية لتطوير محرره الخاص المطابق ل"في آي" فوجد المحرر "أن في آي" (NVI) وقد تم إطلاقه في ربيع عام 1994 وعندما قامت التوزيعتان فري بي أس دي ونِت بي أس دي بإعادة تحديث قواعد الشيفرات المصدرية لنظاميهما قررا حينها التخلي عن المحرر إلفيس وتبنيا المحرر الجديد أن في آي ومن الجدير بالذكر أن هذه الأنظمة وإلى يومنا هذا تستخدم أن في آي كمحرر النصوص الرئيسي.
و على الرغم من وجود مستنسخات ل"في آي" تحوي العديد من الترقيات والوظائف المحسنة فقد استطاع جونر ريتر تطويع الشيفرة المصدرية التي قام جوي بكتابتها على أنظمة التشغيل الشبيهة بيونكس مثل لينكس وفري بي أس دي، وفي بداية الأمر لم يكن عمله من الناحية القانونية سليماً لأن أي توزيع لشيفرة مصدرية تنتمي لتي أند تي بدون وجود رخصة استخدام لها يعد خرقاً للقانون ولكن في شهر يناير من العام 2002 تم تخفيف حدة هذه الرخص وأصبحت على علاقة أطيب مع التطبيقات المفتوحة المصدر مما أتاح المجال أمام ريتر بالاستمرار في تطوير الشيفرة المصدرية ل"في آي" بما في ذلك التغييرات التي تطلبتها الإصدارة 2 من معايير بوسيكس وعمله هذا بقي موجودا تحت اسم "في آي" ويعمل على عدد كبير من منصات الأنظمة.
و على الرغم من اتاحة الشيفرة المصدرية الخاصة بجوي مرة أخرى لأنظمة بي أس دي يونكس إلا أنها جاءت متأخرة حيث قامت توزيعات بي أس دي بالاعتماد على "أن في آي" وتطويره وتحسينه وقد وصلت في ذلك إلى مراحل أصبح من الصعب بعدها الاعتماد على "في آي" بديلا عن "أن في آي".

التأثير

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

بيزي بوكس (BusyBox)

و هي مجموعة من مرافق لينكس المعيارية تم تجميعها في ملف تنفيذي واحد ويحوي هذا الملف محاكي صغير ل"في آي"

فايل (Vile)

في بدايته اعتمد فايل على نسخة ابتدائية من ميكرو إيماكس في محاولة لجلب ميزة إيماكس المختصة في النوافذ "المتعددة والعوازل المتعددة" (multi-window/multi-buffer) إلى مستخدمي في آي