ארכיון תגיות: קוד פתוח

Mozilla Summit 2013

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

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

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

במהלך הכנס אני אנסה לקדם חלק מהנושאים שמעניינים אותי, כגון הפעלת הממשק העברי בגרסאות הרשימות של Firefox OS ו־Firefox for Android, ללמוד מלקחים של אזורים אחרים בעולם מה כרוך בייבוא רשמי ומכירת מכשירי Firefox OS בארץ, ואם יתאפשר גם לנסות לקדם מספר נושאים נוספים שמתעכבים הרבה יותר מידי זמן, כמו ההקמה של האתר החדש של מוזילה ישראל והוצאת האתר הנוכחי לגמלאות.

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

מבוא לתסריטאות

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

אחרי שהסטודנטים לומדים מספר שפות מחשב שימושיות, דוגמת C,‏ CPP,‏ Java ו־C#‎, מתקבל הרושם שהסטודנט שולט בכול השפות והידע שברשותו ישמש אותו שנים רבות. בפועל, קיימות שפות תכנות רבות נוספות אותם נדרשים מרבית עובדי התעשייה ללמוד על־מנת להתקבל למקומות עבודה מסוימים או כדי להטמיע בארגון טכנולוגיות חדשות. למעשה, בתחומים מסוימים שימוש בשפות שהזכרתי קודם כמעט לא מורגש בהשוואה לשפות אחרות; למשל מעטים הם אתרי האינטרנט שנכתבו בשפות כגון CPP ו־Java, לעומת שפות אחרות דוגמת PHP,‏ Perl,‏ Python ו־Ruby.

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

בהרצאה שהוצע לי להעביר התבקשתי לדבר על אופן כתיבת התסריטים והיתרונות שיש בכתיבת תסריטים על־פני שפות תכנות "רגילות", שזה קצת טעות להציג כך את התחום, שהרי הכתיבה ושימוש בשפות תסריט התחילה בסמוך להופעתם של המחשבים הראשונים בשנות החמישים של המאה הקודמת, והתפתחה יחד עם שפות התכנות האחרות. התבקשתי להתמקד בשפת תכנות אחת בלבד, ולצערי אאלץ להימנע מהדגמות על לינוקס עקב הידע המינימלי של הסטודנטים במערכת הפעלה זו, ומאותה סיבה גם אאלץ להימנע מהצגת דוגמאות Bash וגם לדבר על יכולות ייעודיות ל־Shell Scripting כגון Pipes, Redirections והעברת מידע בפרמטרים בין יישומי שורת פקודה.

עקב מגבלות טכניות שונות, רצוי שאוותר על דוגמאות שדורשות הרשאות ניהול על המחשב, ולכן גם התקנת תוכנות בצורה שקטה ושינוי הגדרות המחשב די יורד מן הפרק, וגם עבודה מול שירותי רשת שונים ומשונים כדאי כנראה שאמנע מהם כי אינני בטוח ברמת ההבנה של הקהל במושגים כגון Rest API,‏ XML ו־JSON.

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

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

מכשיר טלפון Geeksphone Keon עם FirefoxOS

השבוע קיבלתי לידי מכשיר Geeksphone Keon. מדובר במכשיר במהדורה מוקדמת למפתחים, המריץ את מערכת ההפעלה החדשה מבית מוזילה, FirefoxOS.

FxOS Readyמבחינת חומרה, מדובר בטלפון חכם בסיסי, המתהדר בכפתור חומרה קדמי אחד בלבד (בדומה לאייפון), ובצידו השמאלי כפתורים לשליטה על עוצמת הקול וכיבוי המסך. המכשיר מגיע עם חיבור Micro USB בצידו הימני, ובדגם שברשותי כולל מצלמה 3 מגה פיקסל ללא נורת פלאש. ניתן לרכוש את המכשיר הזה בעלות של 91 אירו מאתר היצרן, ואת המכשיר המתקדם יותר בעלות של 149 אירו בלבד.

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

FirefoxOS, או בשמה הקודם Boot To Gecko (B2G)‎ היא מערכת הפעלה השמה את טכנולוגיות הרשת במרכז, ולמעשה הדפדפן מקבל בה מקום של כבוד קרוב יותר לליבת המערכת. בניגוד לאייפון, שהיישומים בו נכתבים ב־Objective C, ואנדרואיד, בו היישומים רצים במכונה וירטואלית של ג'אווה, ב־FirefoxOS היישומים הם בעצם יישומי רשת; כלומר, כל יישום הוא ברובו קוד ב־HTML,‏ CSS ו־JavaScript, ומאפשרים לנצל כמעט כל טכנולוגיה הזמינה בדפדפן, ולמעשה אף יותר מכך בזכות רשימה של ממשקי מפתחים חדשים שנועדו לאפשר ליישומים גישה לרכיבים נוספים הקיימים במכשירים אלו כגון מצב הסוללה, חיישני תאוצה וכדומה, שאינם זמינים ברובם כלל בדפדפן שמופעל על מחשב רגיל.

בעבר כתבתי סקירה כללית על מערכת FirefoxOS כאן, כיום ניתן להריץ את המערכת על דפדפן פיירפוקס רגיל באמצעות התקנת ההרחבה Firefox OS Simulator (במקור r2d2b2g).

FxOS bootעצם היותם של היישומים מופעלים דרך הדפדפן מבטלת למעשה את הצורך במאגר מרכזי להורדת יישומים. מאגר כזה קיים גם קיים, אבל היישומים שמופיעים בו הם לא יותר מאשר קישור למקום בו נשמרו קבצי היישום. היישומים עצמם הם לא יותר מאשר דף אינטרנט רגיל, וישנה אפילו אפשרות בדפדפן לשמור אתרים כיישומים בתפריט, ואז אלו יופעלו ללא כפתורי הניווט של הדפדפן בדומה ליישום רגיל. וכן, על אף ולמרות שנדמה כי מכשיר מסוג זה דורש חיבור קבוע לרשת, אין שום צורך בכך בתנאי שהיישומים מוגדרים לפעול ללא חובת חיבור לרשת, כלומר אינם מבצעים בקשות מידע מהרשת לכל אורך זמן עבודתם, ויודעים לנצל את היכולות של HTML5 Offline Storage.

לאנצ'ר בררת המחדל פשוט, ודומה לזה המוכר למרבית המשתמשים ממערכות הפעלה לטלפונים אחרות. במסך הראשי מוצג מסך הבית, בתחתית המסך מופיעה שורה של כפתורים להפעלה מהירה של יישומים שכיחים, רק שבניגוד למערכות ההפעלה האחרות כאן אין הפרדה בין מסך הבית ליישומים, ותפריטי היישומים מופיעים לאחר החלקה שמאלה של מסך הבית, כלומר לימינו, בעוד שבצידו השמאלי של מסך הבית מופיע יישום מבית everything.me הישראלית שמיועד לאפשר לאנשים גישה מהירה ליישומי רשת שונים ללא התקנתם במכשיר ובאמצעות מנגנון חיפוש מתוחכם.FxOS Default Home Screen

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

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

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

איך מסבירים על לינוקס לקהל של סטודנטים?

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

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

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

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

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

גופנים חינמיים נוספים בעברית להורדה

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

  • הראשון שאתייחס אליו הוא גופן "כרמלה". גופן זה פותח במסגרת פרויקט גמר של סטודנט בשם ניר ייני בבצלאל. הגופן הנו גופן נקי ומתאים לגדלי טקסט קטנים. הגופן ניתן להורדה בשלב זה מדף מיוחד שהוקם עבורו בפייסבוק, וניתן להתרשם מהגופן באתר אינטרנט שהוקם עבורו. בדף ההורדה של הגופן מצוין שהשימוש בו חופשי ללא ציון פרטי הרישוי, אבל בגופן עצמו מצוין אחרת; "Copyright (c) 2010 by Nir Yenni. All rights reserved.‎". אני מקווה שסוגיה זו תיפתר בהקדם והגופן יופץ עם רישיון חופשי.
  • הגופן הבא ברשימה הוא גופן "כרמלית" של עמוס ג'רבי. לא במקרה שמו של הגופן מזכיר את זה הקודם, מעצב הגופן מציין במפורש כי התבסס על "כרמלה" בעת יצירת הגופן, שלטענתו מתאים במיוחד לטקסט רץ. רישיון הגופן הוא OFL. אותו עמוס ג'רבי הפיץ לא מזמן גופן נוסף פרי מקלדתו בשם "נוּט", שנוצר במסגרת פרויקט גמר באנימציה במכללת שנקר, שמתאים יותר לכותרות מאשר לטקסט רגיל, ומופץ גם הוא ברישיון OFL.
  • פליקס וסרשטיין הוא מפתח אתרי וורדפרס ביום, ומסתבר שבלילות הוא מטפח גופנים. הגופן הראשון שלו, ונכון לרגע זה גם היחידי הוא גופן מעוגל המתאים בעיקר לכותרות בשם Felix007 medium. רישיון השימוש בגופן זה הוא OFL, והיוצר מדגיש כי בעת שימוש בו אין שום חובה לתת לו קישור או קרדיט.
  • אָ‏לֵף הוא גופן רשת דו־לשוני פתוח שפותח על־ידי מושון זר אביב, מיכל סהר, דני מירב וניר ייני ובחסות של איגוד האינטרנט הישראלי. הגופן פותח מראש מתוך מחשבה שיהיה שונה מהגופנים המעוגלים הנפוצים במחוזותינו, ושיהיה גופן מסך המתאים גם לתצוגה בגדלים שונים, הוא זמין תחת רישיון OFL ונועד מלכתחילה להיות חופשי לשימוש ברשת, ותהליך היצירה שלו תועד בבלוג שהופעל במהלך תהליך היצירה של הגופן, ועליו גם כתבתי ברשומה הקודמת בסדרה זו. מאמר סקירה על הוצאת הגופן התפרסם במגזין xnet.
  • Linux Libertine הוא גופן Serif ברישיון OFL בשפות רבות שכולל גם עברית. הוא מוכר בזכות סמלים רבים בהם נעשה בו שימוש לרבות בלוגו של ויקיפדיה. אגב לינוקס, טאקס מתחבא באזור השימוש הפרטי של הגופן במיקום u+e000.
  • שונית הוא גופן שנוצר על־ידי אמן בשם מייקל כנליף תומסון. האותיות בגופן נראות שונות מהמקובל עם הטיות בחלקן התחתון, והגופן מופץ ברישיון Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License.