Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

פרויקטים בלינוקס - פרויקט קוד פתוח חדש - מבנה נתונים - עצים - self-balancing

koby_m - 25/06/2013 - 12:48
נושא ההודעה: פרויקט קוד פתוח חדש - מבנה נתונים - עצים - self-balancing
שלום לכולם,

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

לפני כמה חודשים החלטתי לחפור קצת יותר עמוק בתחומי:
memory managers(maloc() and friends), garbage collection, etc

במהלך החפירות החלטתי לנסות לפתח עץ נתונים שמסוגל לתת את אותם תכונות שהעצים B-tree, ו- B+tree נותנים, אבל תוך כדי לראות מה אני יכול לקבל בתמורה לויתור על העובדה שהעצים הנ"ל בנויים עם דגש ל- databases ו- I/O איטי (hard-disk). או במילים אחרות לנסות להפוך B-tree לעץ כמו AVL, אבל לשמר את כול התכונות של ה- B-tree לשימוש - in-memory.

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

לפני יומיים-שלוש הפיתוח הראשוני הסתיים (עוד לא עשיתי בדיקות), ושיחררתי את הקוד ב-
http://sourceforge.net/projects/capsule-tree

בתוך הקובץ להורדה יש גם PDF שמנסה להסביר את העץ, (אני לא יודע כמה טוב ההסבר, work in progress).

אני אשמח לקבל ביקורת בונה מכול סוג.

תודה
קובי
Anonymous - 25/06/2013 - 13:55
נושא ההודעה:
תציע את זה ל-glib (של GNOME), אולי הם ימצאו משהו לעשות עם מה שכתבת.
Anonymous - 25/06/2013 - 14:49
נושא ההודעה: Re: פרויקט קוד פתוח חדש - מבנה נתונים - עצים - self-balancin
koby_m :


אני ישמח לקבל ביקורת בונה מכול סוג.

תודה
קובי

אני - אשמח.
הוא - ישמח
koby_m - 25/06/2013 - 15:32
נושא ההודעה: Re: פרויקט קוד פתוח חדש - מבנה נתונים - עצים - self-balancin
Anonymous :
koby_m :
אני ישמח לקבל ביקורת בונה מכול סוג.

תודה
קובי

אני - אשמח.
הוא - ישמח

מה עם יומיים-שלוש? זה לא יומיים-שלושה?

חבל.....


Razz
Anonymous - 25/06/2013 - 19:28
נושא ההודעה:
היי קובי,
זה נראה סופר מעניין,
איך הגעת לחקור את הנושא?
סתם מעניין אותי מה הרקע שלך ומה אתה עושה ביום יום?
Anonymous - 25/06/2013 - 19:38
נושא ההודעה:
הערה קטנה: לממש אלגוריתם ב GPLv2 זה כמו להגיד: "בבקשה אל תשתמש בפרוייקט שלי.".

עדיף רשיון מתירני מאוד (לדוגמה BSD) או לפחות מתירני יותר, לדוגמה: LGPL.

כמובן שאם בחרת ב GPL בצורה מודעת, אנא התעלם מהערה זו.
Anonymous - 25/06/2013 - 19:55
נושא ההודעה:
כדאי שישתמש ב־LGPL.
GNOME, למשל, משחררים את היישומים שלהם תחת GPL ואת הספריות שלהם תחת LGPL.
Anonymous - 25/06/2013 - 21:06
נושא ההודעה:
TAsn2 :
הערה קטנה: לממש אלגוריתם ב GPLv2 זה כמו להגיד: "בבקשה אל תשתמש בפרוייקט שלי.".

עדיף רשיון מתירני מאוד (לדוגמה BSD) או לפחות מתירני יותר, לדוגמה: LGPL.

כמובן שאם בחרת ב GPL בצורה מודעת, אנא התעלם מהערה זו.


אז לינוס וכל החברים שמפתים את ה-kernel בעצם אומרים "אל תשתמשו ב-kernel שלנו!" וכל העולם ואחותו ממשיכים להתעלם מהם?

--לב
oz_nahum - 25/06/2013 - 21:44
נושא ההודעה:
Anonymous :
TAsn2 :
הערה קטנה: לממש אלגוריתם ב GPLv2 זה כמו להגיד: "בבקשה אל תשתמש בפרוייקט שלי.".

עדיף רשיון מתירני מאוד (לדוגמה BSD) או לפחות מתירני יותר, לדוגמה: LGPL.

כמובן שאם בחרת ב GPL בצורה מודעת, אנא התעלם מהערה זו.


אז לינוס וכל החברים שמפתים את ה-kernel בעצם אומרים "אל תשתמשו ב-kernel שלנו!" וכל העולם ואחותו ממשיכים להתעלם מהם?

--לב


+1
koby_m - 25/06/2013 - 22:58
נושא ההודעה:
ציטוט:
היי קובי,
זה נראה סופר מעניין,

תודה רבה,
אני שמח לשמוע שאני לא היחיד שמתלהב מזה.

ציטוט:
איך הגעת לחקור את הנושא?

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

ציטוט:
סתם מעניין אותי מה הרקע שלך ומה אתה עושה ביום יום?

פורמלית אני הנדסאי תוכנה, עם נסיון בעיקר כטכנאי\IT.
koby_m - 25/06/2013 - 23:06
נושא ההודעה:
TAsn2 :
הערה קטנה: לממש אלגוריתם ב GPLv2 זה כמו להגיד: "בבקשה אל תשתמש בפרוייקט שלי.".

עדיף רשיון מתירני מאוד (לדוגמה BSD) או לפחות מתירני יותר, לדוגמה: LGPL.

כמובן שאם בחרת ב GPL בצורה מודעת, אנא התעלם מהערה זו.


כן ולא.

כן, מהסיבות הברורות: תוכנות מסחריות שישתמשו בספריה עם רשיון GPLv2 יחשבו כ- derived work ולכן עליהם לשחרר את הקוד כ- GPLv2.

לא, בגלל מגוון סיבות. אבל אני יגיד לך את האמת, בהתחלה די התלבטתי. בסוף החלטתי לטעות לכיוון GPLv2 מעיקר מהרציונל המתואר ב-
http://www.gnu.org/licenses/why-not-lgpl.html

זה הספיק מבחינתי להטות את המאזניים לכיוון GPLv2.

ציטוט:
אז לינוס וכל החברים שמפתים את ה-kernel בעצם אומרים "אל תשתמשו ב-kernel שלנו!" וכל העולם ואחותו ממשיכים להתעלם מהם?

--לב

ברור שלא. אבל התגובה שלך ממש לא תורמת לחידוד ו\או הבנה יותר טובה של הנושא וההבדלים בין הרשיונות.

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

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

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

יש לא מעט סיבות טובות לשחרר קוד תחת BSD (ורובם מוזכרים בלינק שציינתי למעלה).
Anonymous - 26/06/2013 - 13:22
נושא ההודעה:
Anonymous :
TAsn2 :
הערה קטנה: לממש אלגוריתם ב GPLv2 זה כמו להגיד: "בבקשה אל תשתמש בפרוייקט שלי.".

עדיף רשיון מתירני מאוד (לדוגמה BSD) או לפחות מתירני יותר, לדוגמה: LGPL.

כמובן שאם בחרת ב GPL בצורה מודעת, אנא התעלם מהערה זו.


אז לינוס וכל החברים שמפתים את ה-kernel בעצם אומרים "אל תשתמשו ב-kernel שלנו!" וכל העולם ואחותו ממשיכים להתעלם מהם?

--לב


אני שמח שבחרת רק להתעלם ממש שכתבתי ולא להשמיט את מה שכתבתי. לצערי גם הבא אחריך התעלם ממה שכתבתי.

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

הקרנל הוא פרוייקט Stand-alone, כשבחרו ברישיון, במפורש הבינו והחליטו שלא רוצים שישתמשו בקוד מהפרוייקט בפרוייקטים אחרים. זה מקרה שונה לגמרי.
Anonymous - 26/06/2013 - 13:28
נושא ההודעה:
koby_m :
TAsn2 :
הערה קטנה: לממש אלגוריתם ב GPLv2 זה כמו להגיד: "בבקשה אל תשתמש בפרוייקט שלי.".

עדיף רשיון מתירני מאוד (לדוגמה BSD) או לפחות מתירני יותר, לדוגמה: LGPL.

כמובן שאם בחרת ב GPL בצורה מודעת, אנא התעלם מהערה זו.


כן ולא.

כן, מהסיבות הברורות: תוכנות מסחריות שישתמשו בספריה עם רשיון GPLv2 יחשבו כ- derived work ולכן עליהם לשחרר את הקוד כ- GPLv2.

לא, בגלל מגוון סיבות. אבל אני יגיד לך את האמת, בהתחלה די התלבטתי. בסוף החלטתי לטעות לכיוון GPLv2 מעיקר מהרציונל המתואר ב-
http://www.gnu.org/licenses/why-not-lgpl.html

זה הספיק מבחינתי להטות את המאזניים לכיוון GPLv2.

ציטוט:
אז לינוס וכל החברים שמפתים את ה-kernel בעצם אומרים "אל תשתמשו ב-kernel שלנו!" וכל העולם ואחותו ממשיכים להתעלם מהם?

--לב

ברור שלא. אבל התגובה שלך ממש לא תורמת לחידוד ו\או הבנה יותר טובה של הנושא וההבדלים בין הרשיונות.

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

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

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

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


לדעתי לא הבנת נכון את הטיעונים שלי. בכל מקרה, קראתי את הלינק שנתת לגבי ה GPL - נורא. אם יורשה לי לצטט את הקטע הכי נורא:
"Proprietary software developers have the advantage of money; free software developers need to make advantages for each other. Using the ordinary GPL for a library gives free software developers an advantage over proprietary developers: a library that they can use, while proprietary developers cannot use it."

אני חושב שתוכנה חופשית תורמת להתקדמות האנושית, ולחסום תוכנה קניינית מלהשתמש בספרייה קוד פתוח יפגע בתוכנה חופשית. אמנם זה יוריד את הרמה של תוכנות קנייניות, ואז אולי יותר אנשים ישתמשו ביותר תוכנה חופשית (לא סביר), אבל הבעיה הגדולה יותר היא שחברות ימנעו מלהשתמש בתוכנה חופשית ואז גם לא יתרמו חזרה, או אפילו ילמדו להכיר את האלטרנטיבה הטובה יותר.
Anonymous - 26/06/2013 - 13:44
נושא ההודעה:
לא ברור לי במה תוכנה קינינית שנשענת על חופשית, תורמת לה.
כן ברור לי שתוכנה חופשית המהווה משענת לתוכנה קינינית תורמת לקיומה של זו האחרונה, והרי לא בכך אנו חפצים. לא?
Anonymous - 26/06/2013 - 15:03
נושא ההודעה:
תוך-נה :
לא ברור לי במה תוכנה קינינית שנשענת על חופשית, תורמת לה.
כן ברור לי שתוכנה חופשית המהווה משענת לתוכנה קינינית תורמת לקיומה של זו האחרונה, והרי לא בכך אנו חפצים. לא?


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

לכתוב ספריה שאף אחד לא יתרום לה ולא ישתמש בה לא באמת עוזר במשהו לקדם תוכנה חופשית. אולי במקום לכתוב את האלגוריתם "באוויר" אולי עדיף היה למצוא תוכנה חופשית שיכולה להעזר במבנה הנתונים החדש ולהראות שהוא באמת משפר את הביצועים שלה.
Anonymous - 26/06/2013 - 15:18
נושא ההודעה:
e :
תוך-נה :
לא ברור לי במה תוכנה קינינית שנשענת על חופשית, תורמת לה.
כן ברור לי שתוכנה חופשית המהווה משענת לתוכנה קינינית תורמת לקיומה של זו האחרונה, והרי לא בכך אנו חפצים. לא?


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

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


בדיוק! דוגמה נוספת היא אנדרויד אשר משתמשת בהרבה תוכנה חופשית והתוכנה חופשית מקבלת חזרה. יש את טוויטר, פייסבוק, גוגל, אפל ועוד הרבה דוגמאות.
koby_m - 26/06/2013 - 16:09
נושא ההודעה:
TAsn2 :
לדעתי לא הבנת נכון את הטיעונים שלי. בכל מקרה, קראתי את הלינק שנתת לגבי ה GPL - נורא. אם יורשה לי לצטט את הקטע הכי נורא:
"Proprietary software developers have the advantage of money; free software developers need to make advantages for each other. Using the ordinary GPL for a library gives free software developers an advantage over proprietary developers: a library that they can use, while proprietary developers cannot use it."

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

FIY, הפרשנות שלי של הפסקה המצוטטת היא רמיזה או הסכמה מרומזת ל- dual-licensing.

כמו כן, אני חושב צריך להפריד בין פרוייקטים גדולים ו\או בעלי פרופיל גבוה לפרויקטים מאוד קטנים ומאוד ממוקדים. הפרויקטים מהסוג השני לא יוצרים קהילה מסביבם, ומקבלים מעט מאוד עזרה\פצ'ים, אם בכלל.
Anonymous - 26/06/2013 - 18:06
נושא ההודעה:
סיבה אחת חשובה להשתמש בLGPL היא לאפשר שילוב של הספריה בפרוייקטים *חופשיים* שהרישיון שלהם מתירני יותר מאלו של גנו.
אפאצ'י, PHP, CLANG, ןעוד פרוייקטים חופשיים רבים יכולים להשתמש ספריה שהיא LGPL (כי היא לא ויראלית) אבל לא יכולים להשתמש ב-GPL (בדרך של לינקג').
חשוב על השאלה כך - פרוייקט חופשי-מתירני רוצה לשלב את האלגוריתם שלך, אתה רוצה שהוא יוכל ?
אופציה שבחרו בה למשל בMYSQL היא רישיון GPL עם "חריגה" המתירה שילוב של הקוד (ספריית הלקוח למעשה) בתכנות שהרישיון שלהם חופשי. החריגה הזו היא מה שאיפשר למשל ל-PHP לכלול הרחבת MYSQL המתבססת על ספרית הלקוח libmysql.
Anonymous - 26/06/2013 - 21:48
נושא ההודעה:
koby_m‏: אתה צודק, העקיצה שלי כלפי TAsn2 לא מסיפה לדיון, זו היית יותר תגובת רפלקס לטענה הנחרצת שאף אחד לא ישתמש בפרויקט שלך עם הוא תחת GPLv2.

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

אגב, ב-kernel של לינוקס יש כמה וכמה מקומות שמשתמשים בעצים מסוגים שונים. אולי הם יתעניינו במימוש שלך.

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

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

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

באופן אישי, הייתי מוותר על כל תרומות הקוד שלה ורק כדי ש-iOS לא היית קיימת.

(וכן - בא לי להיות קצת קיצוני לקראת סוף שבוע, תחיו עם זה Razz )

--לב
Anonymous - 01/07/2013 - 14:36
נושא ההודעה:
Anonymous :
koby_m‏:
ולבסוף: אני מאוד שמח שהזכרת את Apple: החברה הזו היא דוגמה מצוינת לניצול לרעה של תוכנה חופשית ע"י גופים מסחריים.
היא השתמשה בתוכנה חופשית איכותית ובדוקה ובנתה בעזרתה את הפלטפורמה הכי סגורה, מגבילה ופוגענית שנראתה עד היום במחשוב האישי.

באופן אישי, הייתי מוותר על כל תרומות הקוד שלה ורק כדי ש-iOS לא היית קיימת.


באופן כללי הייתי מסכים איתך, אבל אני ממש אוהב את clang. Smile

לעומת זאת, בכיף הייתי מוותר על פייסבוק ועל כל התרומות שלה.
כל הזמנים הם GMT + 2 שעות