נדמה לי שחסידי הקוד הפתוח נופלים בתוך הפח של הדיאלקטיקה שלהם ושוכחים מהי המשמעות של המילה פתוח בתוך "קוד פתוח". למילה פתוח יש שלושה פירושים מקובלים בהקשר הטכנולוגיה/תיכנותי המיחסים לנגישותו של קוד המקור
- כותב התוכנה נותן לך אישור לעשות מה שבא לך עם התוכנה והקוד שלה. תוכנות מהסוג הזה מאופינות בשימוש ברשיונות מסוג BSD.
- כותב התוכנה נותן לך אישור לעשות מה שבא לך עם התוכנה והקוד שלה כל עוד תיתן את אותן זכויות לאנשים שאליהם תעביר את התוכנה, גם אם ביצעת בה שינויים. אלו רישיונות מסוג הGPL.
- קוד המקור מסופק ביחד עם התוכנה עם אישור לשנות אותו אבל בלי אישור (או אם אישור מגביל מאוד) להפיץ אותו הלאה.
כל זה טוב ויפה כאשר ההקשר הוא היכולת של הלקוח לבצע שינויים בקוד המקור שהוא מקבל. בהקשר הזה תוכנה שמופצת ללא קוד המקור שלה ודאי שאינה פתוחה. הבעיה היא שלפעמים מרוב חלוקת העולם לקוד פתוח ושאינו פתוח מאבדים את ההקשר ומשתמשים בחלוקה הזו גם במצבים שבהם אין שום דרישה לשנות את הקוד.
הדוגמא הטובה ביותר העולה בדעתי היא הויכוח האם משרדים ממשלה צריכים לתת עדיפות לשימוש בתוכנות קוד פתוח. הטיעון של הדורשים זאת לא מבוסס בהכרח על היכולת לשנות את הקוד, כי גם הם מבינים שאף מזכירה לא תתחיל לתקן באגים בתוכנת מאבד התמלילים שלה, אלא מסתמכים על כך שבגלל שהקוד נגיש יותר קל למצוא בו פרצות אבטחה.
אבל העובדה שקוד המקור אינו נגיש לא משפיעה כלל על היכולת של אדם לבדוק איך התוכנה עובדת והאם יש בה פרצות אבטחה. מעבר לעובדה שניתן לבדוק תוכנה כ"קופסא שחורה" פשוט על ידי הכנסת כל מיני סוגי קלטים ובדיקה שהפלט תקין ולא גורם לבעיות, ניתן גם לקרוא את הקוד, לא כפי שהוא נכתב במקור, אלא כפי שהוא נקרא על ידי המחשב.
לשפות מודרניות יחסית כמו JAVA וC# יש תוכנות מיוחדות המסוגלות להוציא קוד הדומה במידה מסוימת לקוד המקור מתוך הקובץ אותו המחשב יבצע בזמן הפעלת התוכנה. זה יותר קשה לביצוע בתוכנות שנכתבו במקור בשפת C, אבל לא בלתי אפשרי. למעשה ברגע שהצלחתי לקרוא את הקוד ואני מעונין לבצע בו שינוי, אני יכול בעזרת הכלים המתאימים לקוד שקיבלתי. במקרה הגרוע ביותר ניתן פשוט לשנות את הקבצים של התוכנה על ידי כל עורך שיודע להציג את הערכים הקיימים בקובץ ולא רק את הטקסט.
בעצם יכולתי לקצר ולכתוב – ודאי שכל קוד הוא פתוח. אם קוד שמופץ על ידי מיקרוסופט וחברות קניניות אחרות הוא באמת סגור, איך כל ה"פירטים" מצליחים להבין את הקוד בצורה מספיק טובה ליצירת מעקפים לכל מנגנוני ההגנה?