ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin

quick_linkמה עושה תוכנה לאיכותית?

published at 06/05/2008 - 12:53 · ‏פורסם shlomif · ‏tags קוד פתוח · שלח לחברידידותי למדפסת
קוד פתוח מה עושה תוכנה לאיכותית? ואילו פרמטרים, רצויים ככל שיהיו אינם פרמטרים של איכות לכשעצמה אלא רק תורמים לה ומקדמים אותה? המאמר שכתבתי ופרסמתי היום (באנגלית) מנסה לענות על שאלות אלו, תוך שהוא מתייחס למספר מיתוסים נפוצים.

 

קישורים רלוונטיים

· עוד על קוד פתוח
· חדשות מאת shlomif


הסיפור הנקרא ביותר בנושא קוד פתוח:
לראשונה: סקר קוד פתוח מקיף

מה עושה תוכנה לאיכותית? | כניסה / יצירת מנוי חדש | 4 תגובות
סף חסימה
  
ההערות הינן מטעם כותביהן. אין צוות האתר לוקח אחריות על תוכנן
Re: מה עושה תוכנה לאיכותית? (ניקוד: 1)
ע"י elcuco ב 06/05/2008 - 13:52

(מידע על משתמש | שלח הודעה)
היי שלומי,

קודם כל ברשותך, אני חושב שהתרגום הנכון למאמר שלך הוא "מה הופך תוכנה לאיכותית".

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

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

[ השב לזאת ]

Re: מה עושה תוכנה לאיכותית?(ניקוד: 0)
ע"י פינגווין אנונימי ב 06/05/2008 - 22:09
אני חושב שחלק מהכוונה היא להגדיר מחדש את הגישה ל"איכות" של תוכנה, כך שילך במקביל לטיב שלה.
כלומר להגיד שקוד יפה ומסודר שלא עובד הכי טוב, או פרוייקט שעובד ומתועד להפליא אך לא מסונכרן עם צרכי הלקוחות אינם "איכותיים" כמו שאנו נוטים לפעמים לחשוב.
אחלה כתבה, סחטיין!

[ השב לזאת ]

Re: מה עושה תוכנה לאיכותית? (ניקוד: 1)
ע"י צחי_ ב 08/05/2008 - 11:00

(מידע על משתמש | שלח הודעה) http://www.mozilla.org.il
כמתכנת מתחיל עם נסיון של קצת יותר משנה בחברת תוכנה, אבל משתמש מחשב מזה 20 שנה (למעשה שורות הקוד הראשונות שכתבתי נכתבו על Atari 600XL אי שם באמצע שנות ה-80), המאמר שלך העלה בי כמה תהיות.

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

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

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

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

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

פורטביליות: כפי שכתבתי לעיל, זה הפרמטר היותר חשוב, ולא חבילות להפצות (לינוקס) שונות. הטענה כאילו תוכנה צריכה להיכתב ב-C כדי להיות פורטבילית פשוט אינה נכונה, אלא אם אתה לא משתמש ב-API של המערכת (ובמקרה זה, אתה מגביל את עצמך לכל היותר לתוכנות שורת פקודה). כל תוכנה שיש לה שימוש לציבור הרחב, ולא רק לגיקים שעושים עיבוד תמונה בכלי שורת פקודה (וראיתי גם כאלה) תצטרך להשתמש ב-API, ובכך הפורטביליות שלה תיעלם. הפתרון לבעיה זו הוא בשכבת תאימות, שתבצע את הקריאות ל-API, בעוד התוכנה תקרא ל-API של שכבת התאימות. שכבות כאלה קיימות למספר שפות, גם ל-C (ספריית APR של אפאצ'י כמדומני), ל-++C (ספריית NSPR של מוזילה), וגם לג'אווה (המכונה הוירטואלית עצמה). שלא לדבר על שפות מפורשות כמו פרל ואחרות.

However, such more "unconventional" architectures are now dead, and no CPU architecture developer in their right mind would want to create a CPU that won't be able to run C and C-based UNIX-based or UNIX-like operating systems such as Linux.

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

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

HTH


[ השב לזאת ]

Re: מה עושה תוכנה לאיכותית?(ניקוד: 0)
ע"י פינגווין אנונימי ב 09/05/2008 - 11:00

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

זמינות קוד המקור כשלעצמה אכן לא עוזרת בהרבה לרוב המשתמשים. הנימוקים של שלומי בסעיף הזה מתמקדים בעיקר בקוד מקור שזמין תחת רשיון שמאפשר הפצה חופשית של השינויים. כלומר: הבלבול הקלאסי בין "קוד מקור זמין" (מה שכתוב בכותרת) לבין "תוכנה חופשית לפי הגדרת ה־FSF (התוכן האמיתי של הסעיף).

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

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

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

בכמה מקומות אתה נותן את הדוגמה של Arch כתוכנה שנכשלה בגלל שהיא לא עובדת על win32 . זו בוודאי אינה הסיבה היחידה. Arch (יחד עם darcs, arx ועוד כמה תוכנות דומות) היו נסיונות מוקדמים בניהול גרסאות מבוזר. התוכנות היותר פופולריות כיום הן מאוחרות יותר: git, mercurial, monotone, bzr .

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

מה זה בדיוק TenDRA? האלטרנטיבה המעניינת ביותר כיום ל־gcc היא ככל הנראה LLVM.

צפריר

[ השב לזאת ]