למה מיקרוסופט לא יכולה לנהל מאגר התקנות מרכזי

אחת התכונות הכי משובחות של רוב הפצות הלינוקס הגדולות היא ניהול חבילות מרכזי.
בדביאן למשל, יש כמות אדירה של חבילות תוכנה, כ19000 נכון להיום.
לא כל החבילות הן תוכנות במובן הרגיל, יש חבילות תיעוד, חבילות דרייברים, חבילות קודקים, חבילות ספריית (DLLים) וכו', אבל עדיין יש אלפי תוכנות שזמינות לחיפוש, התקנה, הסרה ושדרוג בצורה מרכזית ופשוטה במיוחד, באמצעות מגוון כלים, גם גרפיים, סינפטיק למשל, וגם מבוססי שורת פקודה, כמו apt-get ודומיו.

סינפטיק

Synaptic package manager

לחלונות יש את Add/Remove programs, אבל הוא לוקה בחסר:
קרה לכם פעם שסרקתם את רשימת התוכנות המותקנות של חלונות בAdd/Remove programs ומצאתם את מה שרציתם בקלות?
קרה לכם פעם שהשתמשתם בAdd/Remove programs כדי להתקין תוכנה שלא מהווה חלק מחלונות?
קרה לכם פעם שעדכנתם תוכנה דרך Add/Remove programs?

המצב הזה הביא לכך שהיום כל חברה שניה מפתחת מנגנן כללי לעדכוני תוכנה שלא משתף פעולה עם אף אחד אחר – גפ אנרגיה מבוזבזת וגם מעיק על משאבי המחשב, כי כמובן שכל תוכנה כזו רוצה להריץ את מנהל העדכונים שלה כל הזמן.
מבחינה טכנית, וגם מבחינת חווית המשתמש, אין ספק שניהול חבילות מרכזי הוא עדיף על המצב שיש היום בחלונות – שהוא שהדרך הטבעית להתקין תוכנה היא להוריד אותה ידנית ולהפעיל את תוכנת ההתקנה.
לדעתי מייקרופוסט היו רוצים מאוד לאפשר ניהול חבילות מרכזי, אבל יש להם מספר בעיות:

קשיים טכניים

* מה קורה אם שתי תוכנות שמותקנות צריכות שתי גרסאות שונות של אותו DLL?
* איך מטפלים בDL HELL? למשל, אם שתי תוכנות משתמשות באותו DLL, וגרסא חדשה של אחת מהן צריכה לשדרג אותו, איך אפשר לעדכן את התוכנה הראשונה בלי לשבור את השניה?
* מערכות הקבצים של מייקרוסופט לא מאפשרות עדכון של קובץ שנמצא בשימוש, מה שיקשה על עדכון המערכת.

קשיים פוליטיים/משפטיים

* נניח שגוגל רוצה לשחרר את גוגל טולבר במערכת, ונניח שמייקרוסופט מסכימה, ורק נניח שנוצרים חילוקי דעות טכניים מסביב למשהו. הדבר הזה יכול בקלות רבה להתפתח לעימות חזיתי בין שתי החברות שיגיע לבית משפט (לא שמייקרוסופט חוששת מבתי משפט).
* סביר שמייקרוסופט ירצו בצדק כסף מחברות שמעוניינות להפיץ את התוכנה דרכם, אם הסכום נמוך מדי מייקרוסופט יפסידו על העניין (ניהול של הפצת תוכנה זה יקר), אם הסכום גבוה מדי הוא יהוה חסם לחברות קטנות, מה שיגרום להאשמת מייקרוסופט במונופוליסטיות, ושוב עלול לעלות בהרבה כסף לחברה.
* מייקרוסופט הופכת למפיצה ואינטגרטורית של תוכנות שלא היא מפתחת, זה אומר שבעלי התוכנות יצטרכו לשנות בהרבה מקרים את תנאי הרשיון שלהם כדי לאפשר את זה.

הבעיות האלו הן רק קצה הקרחון.

לסיכום, מהבחינה הטכנית, דרוש עיצוב מחדש של מערכת ההפעלה כדי לאפשר את זה, ומהבחינה המשפטית דרוש ניקוי של הרקורד הנוכחי של מייקרוסופט.
במילים אחרות, זה לא יקרה בעשר השנים הקרובות.

מאיפה באות בעיות אבטחה בתוכנה?

זו תגובה לZull, שטען שמספר בעיות האבטחה שמתגלות הוא נגזר ממספר המשתמשים בקוד, לאחר שהשוותי בעיות אבטחה בפרוייקטי קוד פתוח מול מוצרי מייקרוסופט מקבילים.
בחרתי להגיב כאן כי פה מותר לי להכניס יותר מ1000 תווים (אהם).

בוודאי שכמות בעיות האבטחה שמתגלות קשורה לכמות השימוש בקוד, אבל זה לא הגורם המרכזי. באיזו שהיא רמה, זה כבר לא משנה אם משתמשים בקוד 10 מיליון אנשים 100 מיליון.
מה שיותר משפיע זה:
1. היציבות של הקוד: בעית אבטחה = באג, לקוד שלא משתנה לא נכנסים באגים חדשים, לכן כמות בעיות האבטחה (הקיימות, בלי קשר אם התגלו או לא) יורדת.
2. התכנון של המערכת:
במערכת עם תכנון לקוי, יש לך יותר בעיות אבטחה מפונקציות.
3. האיכות של הקוד.
4. כמות הביקורת שהקוד מקבל.

אם לתת דוגמאות:
חלונות XP בת 6, ועדיין מתגלות בה בעיות אבטחה.
הבעיות נובעות מאיכות קוד נמוכה ומבעיות תכנון, והן ממשיכות להתגלות למרות היציבות של המערכת (רובם המכריע של השינויים הם תיקוני באגים, לא תכונות חדשות).

בסיס הקוד של הקרנל של לינוקס מאוד מאוד לא יציב, שינויים מאסיביים ומהפכות קורות כל הזמן, ולמרות זאת כמות בעיות האבטחה שמתגלות בו נמוכה.
הסיבה היא שאיכות הקוד גבוהה, ויותר חשוב, התכנון טוב.

לגבי אפאצ'י, אתה יכול לראות שמספר בעיות האבטחה החדשות שמתגלות הוא קטן מאוד.
אפשר לומר שרובן נמצאו ותוקנו.
פה זה עניין של תכנון נכון, ושל יציבות של בסיס הקוד.
IIS לעומת זאת יציב לא פחות, וובכל זאת מתגלות בו בעיות אבטחה על ימין ועל שמאל.
הקוד של מוצרים סגורים מקבל מעט מאוד ביקורת.
של מוצרים פתוחים מקבל הרבה, אפילו ההאקרים שמנסים למצוא בו חורים עושים לו שרות.
זה לא אומר שאי אפשר לכתוב קוד פתוח רע, אפשר גם אפשר, אבל ההתכנסות שלו לכיוון קוד טוב ונקי היא הרבה יותר מהירה מאשר במוצרי קוד סגור, ולו בגלל שהמוטיבציות של המפתחים שונות לגמרי:
קוד סגור: "אני רוצה לסיים את הפיצ'ר המזויין, שלא היה בתוכנית המקורית ולכן ישתלב כמו פיל בחנות חרסינה בקוד שלי, שפעם היה יפה"
קוד פתוח: "מה? הפיצ'ר הזה לא היה בתכנון, אני לא עושה אותו. אם אתם נורא רוצים תפצלו את הפרוייקט ותעשו את זה בעצמכם, בהצלחה, ואל תבואו אלי בוכים אחר כך".

קוד פתוח

החברה הקודמת בה עבדתי, סטארטפ קטן בשם Content Objects, נסגרה לפני כחודש.
אין פה חדש, סטרטאפים נסגרים, ככה זה, ובכל מקרה אני כבר לא הייתי שם כשזה קרה.
כשעבדתי שם, נזקקנו ליכולת לקבל ארועים על שנויים במערכת הקבצים של חלונות, לינוקס ואולי עוד מערכות הפעלה, מכיוון שלא מצאתי אף פרוייקט שמאפשר את היכולות האלו לישומי ג'אווה, שינסתי את הקומפיילר והתחלתי לכתוב, לא לפני שקיבלתי אישור מהמנכ"ל של החברה להשתמש בפרוייקט, שנקרא JNotify, כניסוי קטן:
החלטנו שהפרוייקט יהיה פרוייקט קוד פתוח, מהסיבות האלו:

  1. השתמשנו בהרבה קוד פתוח כבסיס למוצר, ורצינו להחזיר קצת.
  2. בהחלט שקלנו לשחרר את המוצר המלא תחת רשיון קוד פתוח, ורצינו להשתפשף קצת בניהול של פרוייקט קוד פתוח, בלי להסתכן מדי.
  3. ידענו שאם תתפתח קהילה של משתמשים, נקבל פידבק על בעיות, מה שיגרום לקוד להיות יותר איכותי.

רצה הגורל, והחברה נסגרה, אבל הפרוייקט כמובן, נשאר בSourceForge, מה שאומר שמכל הקוד שפותח בחברה, רק הוא המשיך להיות שימושי.
למעשה, כבר שני משתמשים של הפרוייקט יצרו איתי קשר: סטודנט מארגנטינה, שביקש וקיבל פיצ'ר קטן, ומפתח מגרמניה שדיווח היום על שני באגים, שתיקנתי כבר.

כיף לקבל אימיילים מאנשים שמשתמשים בקוד שלי, גם אם אני בעצמי לא משתמש בו.

אסטריסק: או איך לחרפן את האוייב

באוגוסט פינגווין אתמול, היתה הרצאה מעניינת על אסטריסק, שהעביר גלעד בן יוסף.
אסטריסק היא פלטפורמה גמישה מאוד לטלפוניה, שמשוחררת כמובן ברשיון קוד פתוח (GPL).
היא יכולה לשמש כמערכת ל:

* מענה קולי (הגעתם לתא של..)
* מרכזית טלפונים
* נתב שיחות (לחץ 101 כדי להגיע אל)
* שרת SMS, כלומר להוציא ולקבל הודעות sms, על קוי בזק (כמו בטלפונים הקויים החדשים)

    ועוד ועוד.
    להמשיך לקרוא אסטריסק: או איך לחרפן את האוייב

    אוגוסט פנגווין – 11.8.06

    שחר שמש ביקש שנזכיר לאנשים שיש אוגוסט פנגווין ביום שישי הבא (11.8).

    אני יודע שדי הרבה לינוקסאים קוראים פה, אז זו תזכורת ידידותית.
    תגיעו, הפעם זה ביום שישי, אז אין תירוץ לא לבוא.

    עדכון:
    אני לא מתכוון בשום אופן שרק לינוקסאים מוזמנים.
    כל מי שמעוניין ללמוד קצת על קוד פתוח, על טכנולוגיה או סתם להשתעשע, מוזמן לבוא.

    מנהרות, חפירות וקירות אש.

    נניח ויש לכם חבר, שנמצא מאחורי NAT (או Firewall), שצריך עזרה עם הלינוקס החדש שלו.
    הוא ניובי אמיתי, ובטלפון כל דבר לוקח הרבה זמן, אז אידיאלית, היה אפשר להתחבר עם SSH, ולסדר את הכל. אבל למרבה הצער, אין לו אפשרות לפתוח פורט בNAT, כי הוא לא בשליטתו. (בדרך כלל קורה אם הוא נמצא בארגון).
    אז מה עושים?

    להמשיך לקרוא מנהרות, חפירות וקירות אש.

    בוס, כשאתה עובר בסופר, תביא עוד הרדיסק, חסר לי מקום

    גנוקי (גנו-נוקיה), הוא שרת קטן שמאפשר לחבר מכשיר סלולארי למחשב, ולשלוח איתו הודעות SMS.
    הוא מאפשר התחברות דרך חיבור סריאלי, USB ובלו-טות' במגוון פרוטוקולים, ככה שהוא תומך בהרבה מאוד מכשירים.
    ההתקנה מורכבת יחסית, ולא מתאימה למתחילים.

    נשמע חמוד, אני אנסה להשמיש את ה3510 הישן שלי לטובת העניין.
    יכול להיות נחמד לקבל הודעות SMS מהשרת.

    דרך דביאן אדמין

    htop

    כל משתמש יוניקס/לינוקס/BSD מכיר את הפקודה top, שמציגה בממשק ארכאי וזוועתי למדי את התהליכים שרצים כרגע במחשב.
    נא להכיר – htop.
    כמו top, רק עם ממשק (עדיין טקסטואלי, וטוב שכך) הרבה יותר ידידותי.
    htop מאפשרת ביצוע פעולות על תהליכים בלי להקליד את מספר התהליך, וכן דפדוף מלא עם החיצים (כולל ימינה ושמאלה).

    התקנה תחת דביאן:

    apt-get install htop

    htop

    לחצי להגדלה.

    קרנל 2.6.17 ומערכות מרובות ליבות.

    הפוסט הבא טכני, ולא מומלץ לחלשים בליבם.

    שוחרר קרנל לינוקס גרסא 2.6.17.
    אחר הדברים המאוד מעניינים שם הוא מנגנון שנקרא SMP Alternatives.
    SMP זה Symetric Multi Processor, כלומר – תמיכה בריבוי מעבדים.
    סימטרי זה כי כל המעבדים שווים בתפקיד, אין מעבד שמנהל את כל השאר.
    מכיון שהתמיכה בריבוי מעבדים נמצאת בקרנל, המצב עד היום היה שמי שרוצה קרנל שתומך בריבוי מעבדים נאלץ להשתמש בקרנל שקומפל עם תמיכה כזו.
    המנגנון החדש מאפשר אופטימיזציה בזמן ריצה של הקרנל למספר המעבדים, מה שקורה הוא שבזמן עליה, הקרנל בודק כמה מעבדים יש, וממש משנה את הקוד של עצמו כדי להתאים אופטימלית למספר המעבדים.
    דבר זה מאפשר שימוש באותו קרנל למערכות עם מעבד יחיד וגם למערכות עם ריבוי מעבדים.
    דבר מגניב אפילו יותר, אם כי שנוי במחלוקת, הוא שימוש במנגנון הזה כדי להתאים קרנל רץ כאשר נוסף למערכת מעבד נוסף, או ירד, בזמן ריצה.
    הוספת מעבדים למערכת רצה נתמך בחומרת שרתים מתקדמת מאוד, אבל בעתיד הלא רחוק מערכת הוירטואליזציה Xen תתמוך בהוספת מעבדים למערכת אורחת, ואז השימוש יהיה נפוץ יותר.
    בעצם מה שזה אומר שקרנל יכול לעלות עם אופטימיציה למעבד יחיד, בזמן ריצה, לקבל מעבד חדש, לשנות את עצמו כך שירוץ אופטמלי על שני מעבדים, לאבד מעבד, ולחזור להיות אופטימלי לריצה על מעבד יחיד.
    דבר די מדהים.
    למיטב הבנתי התמיכה כרגע היא רק באופטימיזציה בזמן עליה, ולא לשינוי בזמן ריצה.

    דבר מעניין נוסף למי שמריץ מערכת עם כמה מעבדים (או ליבות) הוא מנהל משימות (scheduler) חדש, שמנצל טוב יותר ריבוי מעבדים.