حدود الكود المفتوح
تَلوت قصة حول كيفية عمل التنظيم، وعن قابلية الإنترنت للتنظيم بصورة متزايدة، وهو ما يجب أن نتوقعه. تعتبر هذه أشكالًا من التغيير — كما ذكرت — في معمار الشبكة بما يسمح للحكومة بتحقيق السيطرة بصورة أفضل، من خلال تسهيل عملية مراقبة السلوك، أو على الأقل جعله أكثر قابلية للتتبُّع. ستظهر هذه التغييرات حتى لو لم تقم الحكومة بأي شيء. تعتبر هذه التغيرات في واقع الأمر منتجًا ثانويًّا للتغييرات التي تُجرى لصالح أنشطة التجارة الإلكترونية. في المقابل، سوف تترسخ هذه التغييرات إذا (أو متى) أدركت الحكومة كيف تجعل الشبكة أداتها للتنظيم.
تم مناقشة ذلك في الجزء الأول. في هذا الجزء، أركِّز على نوع مختلف من القابلية للتنظيم، نوع من التنظيم يتم تطبيقه من خلال معماريات الفضاء الذي يعيش فيه المرء. ومثلما ذهبت في الفصل الخامس، لا يوجد شيء جديد فيما يتعلق بهذا النمط من التنظيم؛ حيث استخدمت الحكومات معماريات تنظيم السلوك منذ الأزل. يتمثل الأمر الجديد في هذا السياق في نطاق هذا التنظيم. مع انتقال الحياة إلى الشبكة بصورة متزايدة، سيتم تنظيم جوانب أكثر من الحياة من خلال تصميم مقصود للفضاء الذي توجد فيه الحياة. لا يعتبر هذا شيئًا سيئًا بالضرورة. إذا كانت هناك طريقة تعتمد على الكود للتخلص من ظاهرة السائقين المخمورين، فسأدعمها بكل ما أملك. في المقابل، لا يعتبر هذا الشكل التنظيمي الشامل القائم على الكود لطيفًا. بالنظر إلى طريقة عمل هذا الشكل التنظيمي، قد يتداخل التنظيم عن طريق الكود مع العملية الديمقراطية العادية التي بموجبها يقع المنظمون في دائرة المحاسبة.
يتمثل الانتقاد الأساسي حتى الآن فيما يتعلق بالتنظيم من خلال الكود في الشفافية. يؤدي التنظيم من خلال الكود — خاصة بالنسبة إلى هؤلاء ممن لا يمتلكون خبرات تكنولوجية — إلى المخاطرة بالوقوع في شرك التنظيم غير المباشر. تُفرَض أساليب السيطرة المختلفة لأسباب تتعلق بسياسات محددة. في المقابل، ينظر الجميع إلى أساليب السيطرة هذه باعتبارها أشياء طبيعية؛ وهو ما قد يؤدي، كما أرى، إلى إضعاف العزم الديمقراطي.
في المقابل، إذا نحَّينا جانبًا شكوكنا حول الديمقراطية لبرهة، وركَّزنا على سمات الإنترنت والفضاء الإلكتروني التي نتفق جميعًا على أنها مهمة بصورة أساسية، أعتقد أننا سندرك جميعًا نقطة معينة، ومتى أدركناها تبدُ بديهية؛ ألا وهي: إذا كان الكود يقوم بعملية التنظيم، يصبح نوع الكود المنظِّم في غاية الأهمية، على الأقل في بعض السياقات المهمة.
أعني بلفظة «نوع» التفرقة بين نوعين من الكود؛ ألا وهما: الكود المفتوح والكود المغلق. أعني «بالكود المفتوح» كود (برمجيات وآلات على حد سواء) تعتبر وظائفه معروفة على الأقل بالنسبة إلى من هم على دراية بتكنولوجيا الشفرات. أعني «بالكود المغلق» كود (برمجيات وآلات على حد سواء) تعتبر وظائفه غير معروفة تمامًا. ربما يمكن تخمين وظائف الكود المغلق، ومع توافُر فرصة كافية للاختبار، يمكن للمرء أن يفكك هذا الكود ويعكسه. في المقابل، بالنظر إلى تكنولوجيا الكود المغلق في حد ذاتها، لا توجد طريقة منطقية يمكن من خلالها التوصل إلى معرفة وظائفه بصورة كاملة.
يوحي التعبيران كود «مفتوح» و«مغلق» للكثيرين بوجود جدل مهم حول الطريقة التي يجب بها تطوير البرمجيات. يشير (على الأقل من وجهة نظري) ما يطلق عليه الكثيرون «حركة برمجيات المصدر المفتوح»، وهو ما أُطلق عليه، متبعًا في ذلك تسمية ريتشارد ستلمان، «حركة البرمجيات الحرة»، التي تشير إلى وجود قيم أساسية للحرية تتطلب تطوير البرمجيات في صورة برمجيات حرة. تعتبر البرمجيات الخاصة، بهذا المعنى، هي مقابل البرمجيات الحرة؛ حيث يقوم المطوِّر بإخفاء وظائف البرمجيات الخاصة عن طريق نشر مكونات رقمية لا تنبئ عن التصميم الفعلي للبرمجيات.
سأتناول هذه النقطة بمزيد من التفصيل فيما يلي من هذا الفصل. يجب الإشارة هنا في المقابل إلى أن ما أطرحه حول الكود «المفتوح» في مقابل الكود «المغلق» يختلف عما أطرحه فيما يتعلق بطريقة ابتكار الكود. أيًّا كان الجانب الذي تتخذه في النقاش حول «البرمجيات الحرة في مقابل البرمجيات الخاصة» بصورة عامة، على الأقل في السياقات التي سأحددها هنا لاحقًا، يجب أن تتفق معي أولًا؛ في أن الكود المفتوح يمثِّل قيدًا على سلطة الدولة، وثانيًا؛ أن الكود، على الأقل في بعض حالات بعينها، يجب أن يكون «مفتوحًا».
لتمهيد أرضية هذا النقاش، أريد أولًا أن أتناول سياقين أرى فيهما أننا يجب أن نتفق على أهمية نوع الكود المستخدم. يُفرد الجزء المتبقي من هذا الفصل المساحة للنقاش حول هذا الموضوع.
(١) وحدات بيانات تتشمَّم
تحدثتُ في الفصل الثاني عن تكنولوجيا كانت في وقتها ضربًا من الخيال العلمي. خلال خمس سنوات من ظهور هذه التكنولوجيا، أصبح الجانب الخيالي فيها أقل خيالية؛ ففي عام ١٩٩٧، أعلنت الحكومة عن مشروع أطلقت عليه اسم كَرنيفور (آكل اللحوم). كان كَرنيفور عبارة عن تكنولوجيا تبحث في حسابات البريد الإلكتروني، وتجمع تلك الرسائل التي كُتبت أو أُرسلت عن طريق أسماء محددة. كان مكتب التحقيقات الفيدرالية يهدف من وراء استخدام هذه التكنولوجيا، بعد الحصول على إذن قضائي، إلى جمع المعلومات أثناء التحقيق في الجرائم.
مبدئيًّا، هناك أشياء كثيرة تُمتدح في نموذج تصميم تكنولوجيا كَرنيفور. تطلبت الإجراءات الحصول على موافقة قاضٍ على إجراء عملية مراقبة. هدفت هذه التكنولوجيا إلى جمع بيانات عن المستهدفين من عمليات التحقيق فقط. لم يقع أي ضرر على أي شخص من خلال استخدام هذه التكنولوجيا، ولم تكن ثمة حاجة إلى اختراق خصوصية أحد.
هذه هي النقطة البديهية في المسألة. سريعًا ما أدركت الحكومة في محاولتها ترويج تكنولوجيا كَرنيفور حقيقة أن الإبقاء على سرية الكود مسألة مكلفة. كرَّست الحكومة جُلَّ جهودها في محاولة بناء الثقة حول ادِّعائها بأن تكنولوجيا كَرنيفور تنفِّذ ما تم الإعلان عنه. في المقابل، لا يصدق أحد مقولة: «أنتمي إلى الحكومة؛ لذا يجب أن تثق بي.» وهكذا أُحبطت جهود الحكومة في نشر هذه التكنولوجيا، على الرغم من أهمية هذه التكنولوجيا لو صحَّ أنها تقوم بالفعل بما تزعم القيام به.
لا يستطيع أي كود آخر سوى «الكود المفتوح» تنفيذ ذلك. تتمثل النقطة التي لا أكف عن التأكيد عليها هنا في أنه بينما تعتبر شفافية أفعال الحكومة مسألة مهمة، يجب أن يتمتع الكود الذي تستخدمه الحكومة بالشفافية أيضًا. بطبيعة الحال لا أدعي هنا أن تصبح جميع الشفرات التي تستخدمها الحكومة علنية، لكني أعتقد بوجود مجالات محددة يمكن أن تعمل الحكومة في إطارها بصورة سرية؛ أي — بصورة أكثر تحديدًا — متى تعارضت الشفافية مع وظيفة الكود نفسه، تكون الغلبة للوظيفة على حساب الشفافية. في المقابل، لا تتوافر وسائل كثيرة يستطيع من خلالها أحد المشتبه بهم جنائيًّا تفادي مراقبة كَرنيفور فقط لأن شفرتها علنية. مرة أخرى، يجب أن يكون الكود المفتوح، من وجهة نظري، هو الأصل في التشفير.
(٢) ماكينات العَد الفعَّالة
قبل السابع من نوفمبر من عام ٢٠٠٠، لم يلتفت صانعو السياسات كثيرًا إلى تكنولوجيا ماكينات التصويت. بدا موضوع تكنولوجيا التصويت بالنسبة للكثيرين (وأنا منهم) موضوعًا تافهًا. بطبيعة الحال، ربما كانت هناك تكنولوجيات أسرع في عدِّ الأصوات، وربما كانت هناك تكنولوجيات أفضل في فحص أخطاء التصويت. في المقابل، لم تكن فكرة أن شيئًا ذا بال قد يعتمد على مثل هذه التفصيلات التكنولوجية الصغيرة بالفكرة التي يمكن أن تتصدر الصفحة الأولى لصحيفة نيويورك تايمز.
صارت الأمور أسوأ في انتخابات عام ٢٠٠٤. بعد كارثة فلوريدا، سعى عدد قليل من الشركات إلى نشر ماكينات التصويت الإلكترونية الجديدة. في المقابل، أدت ماكينات التصويت هذه إلى إثارة قلق الناخبين أكثر مما طمأنتهم. بينما لا يتمتع معظم الناخبين بمهارات تكنولوجية خاصة، كان الجميع يشعرون بعدم الراحة حيال إعلان النتيجة من خلال ماكينات تصويت إلكترونية. يقف الناخب أمام إحدى نقاط التصويت ثم يضغط عددًا من الأزرار للإدلاء بصوته. تؤكد الماكينة تلقي صوت الناخب، ثم تظهر عبارة تشير إلى تسجيله، لكن كيف يمكن التأكد من ذلك؟ كيف يمكن أن يتأكد أي إنسان من ذلك؟ وحتى لو لم يكن الناخب ممن يؤمنون بنظرية المؤامرة بصورة تجعله يشك في التلاعب بجميع الماكينات، كيف يستطيع أي إنسان التأكد من أن الخادم المركزي يسجِّل الأصوات بصورة دقيقة، وذلك عندما تتصل ماكينات التصويت في مراكز الاقتراع بالخادم الرئيس؟ ماذا يضمن عدم تسجيل الأصوات بصورة دقيقة؟
يتجسد المثال الأكثر تطرفًا على قلق الناخبين في الشركة الرائدة في التصويت الإلكتروني، شركة دايبولد. في عام ٢٠٠٣، تم اكتشاف تلاعب شركة دايبولد بالأرقام المصاحبة للاختبارات التي كانت تجريها على تكنولوجياتها للتصويت. أظهرت الرسائل التي تم تسريبها إلى العامة علم إدارة الشركة بالعيوب في ماكيناتها، وأنها عملت عن عمد على إخفاء هذه الحقيقة (قامت الشركة لاحقًا بمقاضاة الطلاب الذي قاموا بنشر هذه الرسائل بتهمة مخالفة حقوق التأليف والنشر. جاء الحكم لصالح الطلاب في قضية أقاموها ضد الشركة).
يتضح الآن مدى الصعوبة البالغة في معرفة طريقة تصميم ماكينات التصويت الإلكترونية. في واحدة من أكثر لحظات عدم الفطنة منذ بلوغي ٢١ عامًا، أخبرت زميلًا لي بعدم ضرورة إقامة مؤتمر حول التصويت الإلكتروني؛ حيث إن جميع الموضوعات المتعلقة بماكينات التصويت الإلكترونية تبدو «بديهية للغاية». ليس كل شيء بديهيًّا للغاية. في واقع الأمر، هذه موضوعات شديدة الصعوبة. تبدو ماكينات التصويت الإلكترونية بالنسبة للبعض، مثل ماكينة الصرف الآلي، ماكينة يصدر عنها ورقة مطبوعة، لكن إذا كان الأمر يقتصر على إصدار ورقة مطبوعة، فسيصبح سهلًا على الناخبين أن يبيعوا أصواتهم. بالإضافة إلى ذلك، ربما لا تعبِّر هذه الورقة المطبوعة عمَّا تم عدُّه، وربما لا تعبِّر هذه الورقة المطبوعة بالضرورة عما تم نقله إلى أي جهة مركزية لجدولة الأصوات. من هنا تتضح عدم بديهية مسألة أفضل الطرق لتصميم هذه الماكينات. بعد أن عبَّرت بما لا قيمة له على الإطلاق عن هذه النقطة من قبلُ، لن أناقش هنا أفضل طرق تصميم هذه الماكينات.
لكن كيفما كانت طريقة تصميم أحد النظم، فهناك مسألة مستقلة في هذا السياق عن مدى انفتاح الكود الذي يشكِّل النظام. مرة أخرى، يجب أن تكون الإجراءات التي تتم من خلالها عملية جدولة الأصوات شفَّافة. كانت هذه الإجراءات في العالم غير الرقمي بديهية. أما في العالم الرقمي، مهما كانت طريقة تصميم الماكينات، فيجب ضمان قيام الماكينات بالوظائف التي يتم الإعلان عن قيامها بها. تتمثل إحدى الطرق البسيطة للقيام بذلك في جعل كود الماكينات مفتوحًا، أو، على الأقل، اشتراط اعتماد الكود من قِبل محققين مستقلين. سيفضل كثيرون الحل الأخير عن الحل الأول؛ نظرًا لأن تحقيق الشفافية هنا سيزيد من فرص تغيير الكود. يُنبئني حدسي بشيء مختلف. على أي حال، سواء أكان الكود مفتوحًا بصورة كاملة أم لا، تعتبر اشتراطات الاعتماد بديهية، وحتى يتم القيام بعملية الاعتماد يجب أن يكون كود التكنولوجيا مفتوحًا، على الأقل بصورة محدودة.
•••
يؤكد هذان المثالان على مسألة مشابهة، لكنها مسألة لا تتسم بالعمومية. هناك أوقات يجب أن يكون فيها الكود مفتوحًا، حتى إن لم يكن ذلك ضروريًّا في أوقات أخرى. لا أتحدث عن جميع أنواع الشفرات المستخدمة لتحقيق مختلف أنواع الأغراض. لا أظن وول مارت يجب أن تكشف عن الكود الخاص بحساب النقدية عند طاولات دفع النقدية. لا أعتقد أيضًا أن ياهوو يجب أن تكشف عن كود خدمة المحادثة الفورية. في المقابل، أعتقد أننا جميعًا يجب أن نفكر في ضرورة اشتراط تحقيق الشفافية في ابتكار الكود المفتوح، على الأقل في سياقات محددة.
يظل السؤال الصعب هو ما إذا كان يمكن الادعاء بما هو أكثر من بناء الثقة في الكود. هذا هو السؤال المطروح فيما تبقى من هذا الفصل: كيف يؤثر الكود المفتوح على القابلية للتنظيم؟
(٣) الكود على الشبكة
قضيتُ وقتًا طويلًا أتحدث عن «الكود». حان الوقت الآن أن أكون أكثر تحديدًا فيما يتعلق بماهية «الكود» في سياق الإنترنت، وكيف نعتبر هذا الكود «مفتوحًا»؟ وفي أي السياقات يصبح انفتاح الكود مسألة مهمة؟
تمثِّل ثلاث طبقات شبكة المواسير الرئيسة في الإنترنت، وهي مخبَّأة في جدران الشبكة (تعمل الصنابير في الطبقة التالية. لا تتعجَّل). في أقصى القاع أعلى الطبقة المادية للإنترنت — في طبقة وصلات البيانات — يعمل عدد قليل للغاية من البروتوكولات؛ حيث تتولى هذه البروتوكولات تفاعلات الشبكات المحلية بصورة حصرية. يوجد عدد أكبر من البروتوكولات في الطبقة التالية إلى أعلى — طبقة الشبكة — حيث يسود بروتوكول آي بي (بروتوكولات الإنترنت). يتولى هذا البروتوكول نقل البيانات بين المضيفين وعبر وصلات الشبكات، محددًا بذلك المسارات التي تتخذها البيانات. في الطبقة التالية إلى أعلى — طبقة النقل — يهيمن بروتوكولان مختلفان؛ ألا وهما: بروتوكول تي سي بي، وبروتوكول يو دي بي. يتولى هذان البروتوكولان تنظيم تدفق البيانات بين مضيفي شبكتين (يتمثل الفارق بين البروتوكولين في توفير ضمانات للانتقال؛ حيث لا يوفِّر بروتوكول يو دي بي أي ضمانة لانتقال البيانات).
تعمل البروتوكولات معًا كنوع عجيب من خدمة الطرود. تنتقل البيانات من التطبيق المستخدم إلى طبقة النقل. توضع البيانات في طبقة النقل في صندوق (افتراضي) وتُلصق شارة (افتراضية) عليه. تربط هذه الشارة بين محتويات الصندوق وعمليات محددة. (يقوم بذلك بروتوكول تي سي بي أو بروتوكول يو دي بي.) ينتقل الصندوق بعد ذلك إلى طبقة الشبكة؛ حيث يضع بروتوكول آي بي اللفافة داخل لفافة أخرى عليها شارة خاصة بها. تحتوي هذه الشارة على عنواني جهتي الإرسال والاستقبال. قد يتم إحاطة الصندوق بلفافة أخرى في طبقة وصلات البيانات، وهو ما يعتمد على مواصفات الشبكة المحلية (أي ما إذا كانت على سبيل المثال شبكة إيثرنت).
تعتبر العملية بأسرها إذن بمنزلة لعبة تغليف عجيبة؛ حيث يتم إضافة صندوق جديد عند كل طبقة مع وضع شارة جديدة على كل صندوق تحتوي على طبيعة العملية في كل طبقة. على الجانب الآخر، تجري العملية في الاتجاه المعاكس. يتم فتح كل لفافة عند الطبقة المناسبة — مثل الدمية الروسية — حتى يسترجع جهاز الكمبيوتر في النهاية على الطرف الآخر بيانات التطبيق الأصلية.
تمثل هذه الطبقات الأربع «الإنترنت». بالاعتماد على وحدات بنائية بسيطة، يسمح النظام بإجراء تفاعلات كثيرة للغاية من خلاله. ربما لا يكون النظام مدهشًا بقدر الطبيعة — فكِّر مثلًا في الدي إن إيه — لكنه يقوم على نفس المبدأ الذي يتمثل في بقاء العناصر المُكوِّنة له بسيطة، بحيث تُكوِّن في مجموعها مركبات شديدة التعقيد.
(٤) تاريخ قصير للكود على الشبكة
وهكذا استخدم البعض البروتوكولين ببطء في البداية، ثم بمعدل سريع للغاية فيما بعدُ. بدأ المستخدمون في بناء صفحات على الإنترنت وربطها بصفحات أخرى. صار بروتوكول لغة تمييز النص الفائق أحد أسرع لغات البرمجة نموًّا في تاريخ الحوسبة.
لماذا؟ كان أحد الأسباب المهمة وراء ذلك هو أن لغة تمييز النص الفائق كانت دومًا لغة «مفتوحة». في معظم تطبيقات تصفُّح الإنترنت المتوافرة حاليًّا، يستطيع المستخدمون الكشف عن «مصدر» صفحة إنترنت ومعرفة طريقة عملها. يظل المصدر مفتوحًا؛ حيث يستطيع المستخدمون تنزيله ونسخه وتحسينه كما يشاءون. ربما يحمي قانون حقوق التأليف والنشر كود المصدر لإحدى الصفحات، لكن في واقع الأمر لا تعد حماية هذا القانون حماية يُعتدُّ بها. صارت لغة تمييز النص الفائق منتشرة للغاية؛ نظرًا لسهولة نسخها بصورة أساسية. كان باستطاعة أي مستخدم في أي وقت الاطلاع على ملف لغة تمييز النص الفائق، وتعلُّم طريقة كتابة مؤلفه له.
تولَّد عن الانفتاح — الناتج عن غياب حقوق أو عقود الملكية، ووجود الكود المجاني والإتاحة — النمو الهائل الذي تمخَّض عن ولادة الإنترنت الذي نعرفه حاليًّا. لفت هذا النمو الهائل نظر الشركات التجارية. رأت الشركات التجارية فرصة أكيدة لجني الأموال في ضوء هذا النشاط المحموم على الإنترنت.
بحلول النصف الثاني من تسعينيات القرن العشرين — وهي الفترة التي يميزها ابتكار شركة مايكروسوفت نظام تشغيل ويندوز ٩٥، الذي كان نظامًا متجاوبًا في تطبيقاته مع الإنترنت أكثر من نظم أخرى في ذلك الوقت — بدأت الشركات التجارية في ابتكار كود «فضاء التطبيقات». كان هذا الكود يرتبط بصورة متزايدة بالإنترنت؛ حيث صار مع الوقت كودًا «على» الإنترنت. في المقابل، ظل الكود في معظم الأحوال مغلقًا.
بدأ ذلك في التغيُّر مع بداية القرن الجديد. بدأت تكنولوجيات «مفتوحة» تتسوَّد المشهد، خاصة في سياق خدمات نقل البيانات بين أجهزة الكمبيوتر. كانت البروتوكولات التي تعتمد عليها هذه التكنولوجيات غير خاضعة للتنظيم. على سبيل المثال، كان البروتوكول الذي استخدمته شركة جروكستر لخدمات نقل الملفات بين أجهزة الكمبيوتر لتبادل المحتوى على الإنترنت بروتوكولًا مفتوحًا يستطيع أي مستخدم استخدامه. حاولت شركات تجارية عديدة استخدام بروتوكول جروكستر، على الأقل حتى صدور قرار المحكمة الدستورية العليا في قضية «إم جي إم ستوديوز المحدودة ضد جروكستر» (بحل الشركة). في المقابل، حتى إذا أدى هذا القرار إلى استغناء جميع الكيانات التجارية عن شبكة ستريم كاست، فسيظل هناك تطبيقات غير تجارية للبروتوكول الذي استخدمته الشركة.
يتوافَر المزيج نفسه بين الكود المفتوح والمغلق في برامج تصفُّح الإنترنت وتطبيقات التدوين. يعتبر متصفِّح فايرفوكس هو أكثر التطبيقات شعبية لتكنولوجيا موزيلا، وهي التكنولوجيا التي كانت تحرِّك متصفح نتسكيب. يتنافس متصفح فايرفوكس مع متصفح شركة مايكروسوفت إنترنت إكسبلورر وعدد من برامج التصفح التجارية الأخرى. بالمثل، يتنافس تطبيق ورد برس — وهو أحد تطبيقات التدوين مفتوحة المصدر — مع عدد من تطبيقات التدوين التجارية الأخرى.
يستند النمو الأخير في الكود المفتوح إلى تاريخ طويل. يرجع جزء من دوافع استخدام الكود المفتوح إلى أسباب أيديولوجية أو أسباب تستند إلى القيم. يمثل ريتشارد ستُلمان نموذجًا مُلْهمًا في هذا السياق. في عام ١٩٨٤، أنشأ ستُلمان مؤسسة البرمجيات الحرة بهدف دفع نمو البرمجيات الحرة. كرَّس ستُلمان — الزميل السابق في برنامج ماك آرثر الذي تخلَّى عن وظيفته من أجل تكريس نفسه للقضية — السنوات العشرين الأخيرة من حياته لنشر البرمجيات الحرة. بدأ عمل ستُلمان من خلال مشروع جي إن يو الذي كان يهدف إلى تطوير نظام تشغيل حر. بحلول عام ١٩٩١، حاز مشروع جي إن يو كل ما يحتاج إليه لتطوير نظام تشغيل حر فيما عدا نواة نظام التشغيل. تمكَّن أحد الطلاب في جامعة هلسنكي فيما بعدُ من إنجاز النواة. في ذلك العام، قام لينوس تورفالدس بنشر كود نواة النظام الجديد على الإنترنت؛ حيث دعا تورفالدس الجميع لنشره بدورهم واختباره.
بدأ المستخدمون في نشر واختبار النواة الجديدة، وتدريجيًّا — خلال النصف الأول من تسعينيات القرن العشرين — قام المستخدمون ببناء نظام تشغيل، أُطلق عليه اسم جي إن يو/لينُكس، مزاوجين في ذلك بين مكونات مشروع جي إن يو ونواة تورفالدس. بحلول عام ١٩٩٨، بدا للجميع أن نظام جي إن يو/لينُكس سيصبح منافسًا خطيرًا لنظام تشغيل شركة مايكروسوفت. ربما تصوَّرت مايكروسوفت في عام ١٩٩٥ أنه بحلول عام ٢٠٠٠ لن يكون هناك أي نظام تشغيل خوادم في السوق بخلاف نظام ويندوز إن تي، لكن بحلول عام ٢٠٠٠، كان هناك نظام جي إن يو/لينُكس، نظام مثَّل تهديدًا لمايكروسوفت في سوق الخوادم. حاليًّا، في عام ٢٠٠٧، تواصل خوادم لينُكس زيادة حصتها السوقية على حساب أنظمة مايكروسوفت.
يعتبر التزام مطوري نظام التشغيل بالإعلان عن شفرته الرئيسة — أي بفتح غطاء محرك السيارة — هو ما يجعل أي نظام تشغيل نظامًا مفتوحًا. ليس هذا الالتزام من باب الأمنيات؛ حيث قام ستُلمان بتضمين شرط إتاحة البرمجيات للجميع من خلال رخصة تحدد الشروط الحاكمة لاستخدام معظم البرمجيات الحرة مستقبلًا. أُطلق على هذه الرخصة اسم رخصة جي إن يو العامة، وهي رخصة تشترط الإعلان عن مصدر أي كود يرخص (مثلما هو الحال مع نظام جي إن يو/لينُكس) من خلال هذه الرخصة. قامت مجموعة استثنائية من القراصنة المبدعين حول العالم بتطوير نظام جي إن يو/لينُكس؛ فقط لأن الكود كان متاحًا للجميع لتطويره.
نجح نظام جي إن يو/لينُكس نجاحًا باهرًا أكثر مما تخيَّل أحد. في عام ١٩٩٢، لم يكن يتصور معظم الناس إمكانية بناء نظام تشغيل حر عن طريق متطوعين من حول العالم. في عام ٢٠٠٢، لا أحد يشك في ذلك. في المقابل، إذا كان بالإمكان أن يصير المستحيل ممكنًا، لا يوجد ما يمنع أن يصير الممكن مستحيلًا مرة أخرى. تشير بعض الاتجاهات في تكنولوجيا الحوسبة إلى احتمال وقوع مثل هذا التهديد.
مثال على ذلك الطريقة التي يعمل بها كود آكتيف سرفر بيدجز (صفحات الخادم النشطة) على الشبكة. عندما تزور صفحة من صفحات الخادم النشطة على الإنترنت يقوم الخادم بتشغيل برنامج نص يُمكِّنك من الاطلاع على قاعدة بيانات مثلًا، أو برنامج لإظهار بيانات ترغب في الإطلاع عليها. تعتبر صفحات الخادم النشطة وسيلة شائعة لزيادة فعالية وظائف برامج محددة؛ حيث يمكنك استخدامها طوال وقت تواجدك على الإنترنت.
في المقابل، لا يعتبر الكود الذي يحرِّك صفحات الخادم النشطة من الناحية التكنولوجية «متاحًا» للجميع. وهكذا حتى لو ابتُكر كود ورُخِّص من خلال رخصة جي إن يو العامة، لا يوجد أي التزام في شروط الرخصة لإتاحة الكود للجميع. وبالتالي كلما صارت صفحات الخادم النشطة تتحكَّم في البنية التحتية للحياة على الشبكة أكثر فأكثر، تقلص عدد التطبيقات التي تصير حرة بموجب الرخصة الحرة.
من ناحية المبدأ، إذا كانت تكلفة اعتماد أحد البرامج ضئيلة، فلن توجد مشكلة في الاستناد إلى هذا القيد. في المقابل، أخشى ما يخشاه المستخدمون هو أن يمتد هذا القيد بحيث يحجب تطبيقات الكود المفتوح. لا تستطيع جهةُ اعتمادٍ مسئولةٍ أن تعرف على وجه الدقة ما يقوم به البرنامج، وهو ما يعني أن جهات الاعتماد لن تحرص على اعتماد برامج لا تثق بها، وهو ما سيؤدي بدوره إلى التمييز ضد تطبيقات الكود المفتوح.
(٥) تنظيم الكود المفتوح
تشترك تطبيقات الكود المفتوح — سواء أكانت برمجيات حرة أو تطبيقات برمجيات مصدر مفتوح — في خاصية إتاحة المعرفة الضرورية لنسخ التطبيق للآخرين. لا يوجد أي جهد، سواء من خلال القانون أو التكنولوجيا، من جانب مطوري تطبيقات الكود المفتوح لجعل عملية التطوير حصرية. والأهم من ذلك أن القدرة على نسخ أي مشروع أو إعادة توجيهه بحيث يكون على أكثر صوره فعالية تكون محفوظة على الدوام.
كيف تؤثِّر هذه الحقيقة على قابلية الكود للتنظيم؟
في الفصل الخامس، قدمت أمثلة على شفرات تستخدمها الحكومة للتنظيم. أعد التفكير مجددًا في هذه الأمثلة، كيف يعمل مثل هذا الشكل التنظيمي؟
خذ هذين المثالين. تأمر الحكومة شركات الهواتف بشيء يتعلق بطريقة تصميم شبكاتها، كما تأمر الحكومة مُصنِّعي أجهزة التليفزيون بنوع الشرائح التي يجب استخدامها كجزء من مكونات الأجهزة. لماذا تنجح هذه الأشكال التنظيمية؟
الإجابة بديهية في كلتا الحالتين. يصبح الكود قابلًا للتنظيم بسبب قدرة الحكومة على السيطرة على كاتبي الشفرات. إذا أمرت الحكومة شركات الهواتف بشيء، فمن غير المحتمل أن تعترض الشركات على ذلك. يؤدي الاعتراض إلى توقيع عقوبات، والعقوبات مكلفة، مثل جميع الشركات الأخرى، تريد شركات الهواتف تقليص تكلفة القيام بأعمالها. إذا كان تنظيم الدولة يتسم بالعقلانية (أي فعَّال)، ستضع الدولة تكلفة عدم الالتزام بأوامرها بحيث تكون أعلى من أي فائدة أخرى. إذا كان المستهدف من عملية التنظيم لاعبًا عاقلًا يقع تحت سيطرة الدولة، فسيحقق التنظيم أثره المرجو. يعتبر مثال قانون مساعدة شركات الاتصالات في إنفاذ القانون في تنظيم معمار شبكات الهواتف مثالًا واضحًا على ذلك (انظر الفصل الخامس).
يُمثِّل الهدف غير المتحرك وغير القابل للتغيير، إذن، بداية جيدة في اتجاه القابلية للتنظيم. هناك عبارة مقابلة لهذه العبارة: الكود القابل للتنظيم هو الكود المغلق. فكِّر مرة أخرى في شبكات الهواتف. عندما تدفع الحكومة شركات الهواتف لتغيير برمجيات شبكاتها، لا يمتلك المستخدمون خيارًا بشأن قبول هذا التغيير أو لا؛ حيث يلتقط المستخدمون السماعة ويسمعون نغمة رنين الهاتف التي خصصتها شركة الهاتف لهم. لا أعرف أحدًا يقوم باختراق كود شركات الهواتف لبناء شبكة مختلفة. ينطبق الأمر نفسه على «الشريحة في». لا أظن أن هناك أناسًا كثيرين سيخاطرون بتدمير تليفزيوناتهم لنزع الشريحة، كما أعتقد أن لا أحد سيقوم بإعادة حرق الشريحة لبناء تكنولوجيا تصفية محتوى مختلفة.
ينجح التنظيم الحكومي في كلتا الحالتين؛ لأنه عندما يلتزم الطرف المستَهدف من عملية التنظيم به لا يكون أمام العملاء سوى القبول بالأمر الواقع.
في عام ١٩٩٦، أصدرت نتسكيب بروتوكولًا (إس إس إل النسخة الثالثة) لتيسير عمليات التجارة الإلكترونية على الشبكة. يتمثل جوهر وظيفة هذا البروتوكول في السماح بإجراء عمليات تبادلية آمنة بين تطبيق تصفح للشبكة وأحد الخوادم. لم يسعد ذلك الفرنسيين؛ حيث أرادوا النفاذ إلى المعاملات التي تتم من خلال البروتوكول؛ لذا طلب الفرنسيون من نتسكيب تغيير كود البروتوكول لتمكينهم من التلصص على المعاملات الجارية.
هناك قيود كثيرة على قدرة نتسكيب على تغيير كود البروتوكول، يتمثل إحداها على الأقل في إتاحة نتسكيب البروتوكول للجميع في صورة معيار عام. في المقابل، هَبْ لوهلة أن نتسكيب لم تفعل ذلك. هَبْ أن نتسكيب تسيطر على معايير صياغة كود بروتوكول إس إس إل؛ حيث تستطيع من الناحية النظرية تغيير الكود بحيث تُمكِّن الفرنسيين من التلصص. هل يعني ذلك التزام نتسكيب بالطلب الفرنسي؟
لا. من الناحية الفنية، تستطيع نتسكيب الالتزام بالطلب الفرنسي عن طريق تغيير كود متصفح الإنترنت نتسكيب كومينيكيتور، ثم وضع نموذج جديد يُمكِّن أي حكومة من اختراقه. في المقابل؛ نظرًا لأن نتسكيب (أو بصورة عامة، مشروع موزيلا) هو تطبيق مفتوح المصدر، يستطيع أي مستخدم بناء نموذج منافس يحل محل نموذج إس إس إل المخترق من جانب الحكومة الفرنسية. ينافس هذا النموذج بدوره النماذج الأخرى. سيكون النموذج الرابح هو النموذج الذي اختاره المستخدمون. ولا يرغب المستخدمون عادةً في نماذج تسمح للحكومات باختراقها.
النقطة محل النقاش هنا بسيطة، لكن تداعياتها عميقة. تُقيَّد سلطة الحكومة بقدر ما يكون الكود مفتوحًا. تستطيع الحكومات أن تطلب، وتستطيع الحكومات أن تتوعَّد، لكن عندما يصبح هدف عملية التنظيم متحركًا؛ لا تستطيع الحكومة أن تثق في بقاء الهدف حيث تريد.
هَبْ أنك مسئول دعائي سوفييتي، وهَبْ أنك تريد أن يقرأ الناس الكثير من المعلومات عن بابا ستالين. تقول للناس إن كل كتاب منشور في الاتحاد السوفييتي يجب أن يتضمن فصلًا يتحدث عن ستالين. كيف يمكن أن تؤثر مثل هذه الكتب على ما يقرأ الناس؟
تعتبر الكتب أكوادًا مفتوحة. لا تخفي الكتب شيئًا؛ فهي تكشف عن مصدرها، بل هي نفسها مصدر! يستطيع أي قارئ أو آخذ عن الكتاب أن يقرأ الفصول التي يريد قراءتها فقط. إذا كان الكتاب عن الإلكترونيات، يستطيع القارئ بكل تأكيد أن يختار ألا يقرأ الفصل الخاص بستالين. لا تملك الحكومة فعل الكثير لتغيير سلطة القارئ في هذا السياق.
يعمل الكود المغلق بصورة مختلفة. لا يستطيع المستخدمون في الكود المغلق تغيير عناصر السيطرة التي تأتي من خلال الكود. ربما يستطيع القراصنة والمبرمجون فائقو المهارة أن يقوموا بذلك، لكن لا يستطيع معظم المستخدمين معرفة أي أجزاء ضرورية في الكود، وأيها غير ضروري. بصورة أخرى أكثر دقة، لن يستطيع المستخدمون اكتشاف الأجزاء الضرورية والأجزاء غير الضرورية؛ نظرًا لأن كود المصدر لا يأتي حاملًا علامة تشير إلى ذلك. يعتبر الكود المغلق أفضل استراتيجيات المسئول الدعائي؛ حيث لا يوجد فصل مستقل يستطيع المستخدمون تجاهله، بل توجد سيطرة متغلغلة وغير مُدركة توجِّه الاستخدام كيفما أراد المسئول الدعائي.
حتى الآن استخدمت فكرة «المستخدم» على نحو فضفاض. بينما يستطيع بعض «مستخدمي» متصفح فايرفوكس تغيير الكود الخاص به إذا لم تعجبهم طريقة عمله، لا يستطيع الغالبية العظمى من المستخدمين ذلك. بالنسبة لمعظمنا، يسهُل تغيير طريقة عمل برنامج مايكروسوفت وورد عن تغيير طريقة عمل نظام جي إن يو/لينُكس.
لكن الفارق هنا هو أن هناك — بصورة قانونية — مجتمعًا من المطورين الذين يغيرون من الكود المفتوح، لكن لا يوجد — أو لا يوجد بصورة قانونية — مجتمعٌ من المطورين يغيرون الكود المغلق، إلا إذا حصل هؤلاء على تصريح من مالكه. تعتبر ثقافة المطورين هذه هي الآلية الرئيسة التي تخلق مناخ الاستقلال في عالم الكود المفتوح. دون هذه الثقافة، سيكون هناك فرق ضئيل بين قابلية الكود المفتوح في مقابل الكود المغلق للتنظيم.
يتضمن هذا الفارق بدوره نوعًا مختلفًا من القيود على قابلية الكود للتنظيم. من المحتمل أن تسمح مجتمعات المطورين ببعض أنماط الانحراف عن القواعد التي تفرضها الحكومات. على سبيل المثال، من المحتمل أن يقاوم المطورون هذا الشكل التنظيمي للحكومة الفرنسية الذي يهدف إلى السماح باختراق نظم السلامة المالية. في المقابل، من غير المحتمل أن يعرقل المطورون عمل برامج الحماية ضد الفيروسات أو تطبيقات تصفية رسائل البريد الإلكتروني المزعج.
(٦) إلى أين يُفضي ذلك؟
اتخذ حديثي حتى الآن مسارًا بسيطًا. في إجابتي على هؤلاء الذين يقولون إن الشبكة لا يمكن تنظيمها، ذهبت إلى أن ذلك يعتمد على المعمار الخاص بها. بعض المعماريات قابلة للتنظيم وبعضها ليس كذلك. ثم انتقلت إلى مناقشة إمكانية لعب الحكومة دورًا في اتخاذ قرار بما إذا كان من الضروري جعل المعمار قابلًا للتنظيم أم لا. تستطيع الحكومة اتخاذ خطوات لتحويل المعمار من معمار غير قابل للتنظيم إلى معمار قابل للتنظيم بصورة غير مباشرة (من خلال جعل السلوك أكثر قابلية للتتبع)، وبصورة مباشرة (من خلال استخدام الكود مباشرة لتنفيذ السيطرة التي تريدها الحكومة).
تتمثل الخطوة النهائية في هذه السلسلة من القابلية للتنظيم في قيد تزداد أهميته الآن تحديدًا. تعتمد سلطة الحكومة في تنظيم الكود — في أن تجعل السلوك في إطار هذا الكود قابلًا للتنظيم — جزئيًّا على طبيعة الكود. يعتبر الكود المفتوح أقل قابلية للتنظيم من الكود المغلق. وبقدر ما يكون الكود مفتوحًا تتقلص سلطة الحكومة في التنظيم.
خذ على سبيل المثال الخلاف الأكثر بروزًا في مجال حقوق التأليف والنشر؛ تبادل الملفات من خلال أجهزة الكمبيوتر. كما ذكرت، تعتبر شبكات تبادل الملفات مثل ستريم كاست بروتوكولاتٍ تقوم تطبيقاتُ تبادل الملفات بتشغيلها. جميع هذه البروتوكولات مفتوحة يستطيع أي مستخدم أن يبني عليها. ونظرًا لأن تكنولوجيا بناء هذه التطبيقات متاحة بصورة واسعة، لا تؤثر مساهمة شركة محددة في بناء هذه التطبيقات من عدمها على ما إذا كان ممكنًا المشاركة في بنائها بعد ذلك أو لا، لكن الطلب هو ما يؤثر على ذلك.
تخيَّل إذن لبرهة نجاح صُنَّاع التسجيلات في التخلص من جميع الشركات التي تدعم ابتكار تطبيقات تبادل الملفات. لن تنجح الصناعة في إقصاء تطبيقات تبادل الملفات تمامًا عن السوق. يرجع ذلك إلى أن الكود المفتوح يسمح للمطورين غير التجاريين بترسيخ البنية التحتية لتطبيقات تبادل الملفات، دون الحاجة إلى البنية التحتية التجارية.
في المقابل، عند القيام بتصميم معمار للفضاء الإلكتروني، تصبح الهوامش مهمة. لا تتمثل قيم أي فضاء بعينه في قيم حرية التعبير، أو الاستقلال، أو سهولة الحصول على المعلومات، أو الخصوصية فحسب، بل تشمل أيضًا قيم السيطرة المحدودة. تعتبر هذه القيم قيمَ عَوَارٍ محددٍ في الكود تمت برمجتها في معمارية الشبكة، على حد قول جون باري بارلو؛ عَوَار في الكود يحد من سلطة الحكومة في السيطرة على الشبكة بصورة كاملة، حتى لو لم يتمكن هذا العَوار من تقييد تلك السلطة تمامًا.
يتمثل الهدف بالنسبة للبعض في بناء كود يُقيِّد جميع أشكال السيطرة الحكومية، لكن هذا ليس هدفي. أُومِن بالتأكيد بضرورة تقييد سلطة الحكومة، وأؤيد القيود التي يفرضها الكود المفتوح، لكنني لا أهدف إلى تقييد سلطة الحكومة بصورة كاملة. كما ذكرت توًّا، وكما يبين الجزء التالي، لا تتحقق بعض القيم إلا من خلال التدخل الحكومي. تلعب الحكومة دورًا حتى لو لم يكن دورًا كبيرًا مثلما تريد. يجب أن نفهم هذا الدور فضلًا عن فهم كيفية ترسيخ قيمنا في سياق الشبكة.
يتضح في هذا السياق طبيعة أحد أشكال القيود. وكما أشير بتفصيل أكثر لاحقًا، حتى لو لم يتمكن الكود المفتوح من تقييد سلطة الحكومة في التنظيم بصورة كاملة، لا شك في أن الكود المفتوح يُغيِّر من هذه السلطة. على الهامش، يقلل الكود المفتوح من العوائد الناتجة عن مواراة التنظيم في الفضاءات الخفية للكود. يقوم الكود المفتوح بوظيفة تشبه قانونًا لحرية تداول المعلومات يختص بتنظيم الشبكة. يشترط الكود المفتوح — مثل القانون العادي — أن تكون عملية إصدار التشريعات علنية، ومن ثم تصبح هذه العملية شفافة. يعتبر الكود المفتوح، بمعنًى من المفترض أن جورج سوروس يدركه، أساسًا لمجتمع مفتوح.
حتى هذا يعتبر وسيلة مهمة — يرى البعض أنها ضرورية — لتقييد سلطة الحكومة. أهدف حتى الآن، سواء أكنت مناصرًا للشفافية أم لا بصورة عامة، إلى بيان الصلات. تعتمد القابلية للتنظيم على طبيعة الكود. والكود المفتوح يغير من طبيعة التنظيم. وهذا يعد قيدًا على سلطة الحكومة للتنظيم، لا من خلال تقييد سلطة الحكومة للتنظيم تمامًا بالضرورة، ولكن من خلال تغيير هذه السلطة.