אב

אורט וקוד פתוח – היילכו שניים יחדיו בלתי אם נועדו

ביום שישי האחרון הרציתי בכנס אוגוסט פינגווין 2015.

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

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

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

עדכון 03/02/2023: הינה סרטון של ההרצאה שלי.

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

שקופית פתיחה

פתיחה

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

אורט ישראל על המפה

רשת אורט ישראל כוללת כיום 210 מוסדות חינוך והשכלה:  בתי ספר מקיפים-חטיבות ביניים וחטיבות עליונות, בתי ספר תעשייתיים, מרכזי מצוינות,  מכללות להנדסאים ושתי מכללות אקדמיות להנדסה, הפרושים ברחבי הארץ כולה, משלומי בצפון ועד שבטי הבדואים באבו באסמה בדרום. כל תלמיד עשירי במערכת החינוך העל-יסודי הוא תלמיד רשת אורט ישראל. מדי שנה לומדים במוסדות הרשת כ-100,000 תלמידים, בני-נוער ומבוגרים. הרשת משרתת את כלל אוכלוסיית מדינת ישראל, יהודים (החינוך הכללי, הדתי החרדי), ערבים, בדואים ודרוזים.
ויש מו”פ – יחידת פיתוח תכנים; יחידת טכנולוגיות אינטרנט.

אתרים של ערכים וטכנולוגיה
אתרים של ערכים וטכנולוגיה

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

היסטוריית הטכנולוגיה במו”פ עד פרוץ הקוד הפתוח

כליקיט 3
כליקיט 3

ב-20 השנים היו שינויים בפלטפורמות הפיתוח של המו”פ. כליקיט1 ו-2 פותחו בשלהי שנות ה-90 ונכתבו ב-asp קלאסי. בתחילת שנות ה-2000 פותחה כליקיט3, המערכת המקיפה ביותר שלנו, ונכתבה ב-asp.net.
מערכת מאד ענפה, עם המון פיצ’רים – טקסטים, גלריה, משוב, פורום, אינדקס אתרים, קבצים, מבזקים, סקרים, יומן אירועים, לוח מודעות. תמיכה מופלאה בעברית.
הימים היו ימי אינטרנט אקספלורר, והכליקיט – הן הניהול והן התכנים – הותאמו אליו בלבד.
באותו זמן התחילה מודעות גדולה יותר לסטנדרטים. לא עוד שליטה של אקספלורר 6. אנחנו, בהיותנו קשובים לרוח התקופה התחלנו לבצע התאמות של כליקיט. החלטנו להתמקד קודם כל באתרים ואכן בשלהי ימיה של הכליקיט כל אתר שהוקם עליה היה מותאם לכל הדפדפנים (דברים לא פשוטים בתקופת אקספלורר 7). בממשק הניהול, מפאת ריבוי הרכיבים, ובהתאם לחוק ה-80/20, בחרנו לתקן את הדבר הנפוץ ביותר בשימוש – עורך הטקסטים. זה היה מבצע רציני ביותר שנמשך כמה חודשים, אבל בסופו, כל טקסט חדש שנוצר באתר השתמש ב-TinyMCE. מטעמי תאימות אחורה, טקסטים ישנים יותר יכלו להערך בעורך הישן או בעורך החדש.

מוודל ו-וורדפרס
חלופות קוד פתוח: מוודל ו-וורדפרס

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

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

בתור LMS היו קצת יותר מתחרות – מוודל, דרופל, ג’ומלה למשל. כולן מורכבות הן תכנותית והן שמישותית. הלכנו על מוודל, ונראה לעת עתה שזו היתה הבחירה הנכונה.

ריבוי רכיבים

תבניות קנויות
וורדפרס – תבניות קנויות

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

וורדפרס - תוספי גלריה
וורדפרס – תוספי גלריה

דבר נוסף הוא התוספים של וורדפרס. התוסף שאנחנו הכי צריכים בד”כ הוא גלריה. אתם יודעים כמה תוספי גלריה יש? מאות. חלק משתלבים עם ה-shortcode של וורדפרס וחלק דווקא יוצרים משהו חדש; חלק מאפשרים ליצור כמה גלריות וחלק מאפשרים רק גלריה אחת באתר, וכו’. כל הזמן שחסכנו בפיתוח, אנחנו מוציאים על בדיקות וחקירות.
ולבסוף, גם אחרי שמצאנו גלריה שמתאימה בדיוק לצרכים שלנו לא באה המנוחה ליגע. השתמשנו בה ונהנינו, ואז, לאט לאט, גילינו שהפיתוח שלה נפסק. מבאס. מצד שני, היתרון של זה הוא שאם רוצים לבצע בה התאמות – אין בעיה, כי זה לא יתנגש עם שום שדרוג עתידי…

משאבים מרובים מדי
מוודל – משאבים מרובים מדי

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

החופש לשנות = כדאי לשנות?

תבניות עיצוב וורדפרס
תבניות עיצוב וורדפרס

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

מודל – כפתור מבחן
מוודל - כפתור חזרה מהמבחן
מוודל – כפתור חזרה מהמבחן

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

באג ב-YUI שדווח למוודל
באג ב-YUI שדווח למוודל

מצד שני, לפעמים העובדה שלא כדאי לשנות קוד ליבה דווקא עובדת לטובתנו. באחד האתרים שלו התגלה בעת ה-QA שבאחד הפופ-אפים, כשלוחצים על ה-X לסגירה, זה עובד רק בפעם הראונה. אם הפופ-אפ קופץ שוב, הלחיצה על ה-X כבר לא סוגרת אותו. כאן היה מדובר בקוד של YUI, ספריית JS חיצונית. הסברנו ל-QA שתיקון של זה משמעותו להתערב בקוד של צד שלישי, דבר בלתי מומלץ בעליל. במצב הזה העלות מול התועלת היתה לטובת העלות, וכך קיבלנו פטור ממציאת פתרון לבעיה (אל דאגה, הבאג דווח ל-tracker של מוודל, ובגסאות שיצאו אחרי זה כבר ביצעו שינוי בשיומש ב-YUI) שפתר את הבעיה.

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

תבנית אתר בי"ס בכליקיט3
תבנית אתר בי”ס בכליקיט3

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

ניהול תבנית אתר בי"ס בכליקיט3
ניהול תבנית אתר בי”ס בכליקיט3

בכליקיט3 ניהול העיצוב נעשה במקום של האתר עצמו, כך שאפשר לראות איך ייראו השינויים באתר.

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

ניהול תבנית אתר בי"ס בוורדפרס
ניהול תבנית אתר בי”ס בוורדפרס

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

הבטחתם יונה

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

תמיכה

הצורך בתמיכה
הצורך בתמיכה

כולם מכירים את stackoverflow. זה לחלק את החיים ללפני ואחרי. מהבחינה הזאת לא היה הבדל בין שפות התכנות שתכנתנו בהן. אבל אחד היתרונות בכך שהיה לנו מנוי MSDN היה שיכולנו להעזר במיקרוסופט בעיתות מצוקה. ואילו כעת, לא היתה לשפת התכנות שלנו “אבא”. לא ידענו למי נוכל לפנות במקרה שאיננו מוצאים מענה בקרב מפתחים אחרים. ארגונים צריכים את המענה הזה. אוטומטיק הרבה יותר מחוייבים מסתם stackoverflow. לכן בתחילת דרכנו בחרנו להעזר בתמיכת ה-VIP שמספקת אוטומטיק, ה”אמא” של וורדפרס, ואכן היתרון היה רב. יכולנו לשאול אותם כל דבר – החל מדברים קטנים כמו איך כדאי לבצע דבר מה שרצינו, דרך קוד ריוויו (שזה היה ממש נחמד, לתת את הקוד למישהו שמבין, נותן יותר בטחון במה שכתבנו ובמה שנכתוב), וכלה בבאג שליווה אותנו במשך כמה שבועות:

אתר 70 פנים
אתר 70 פנים
לפעמים כשנכנסים לרשומה מקבלים קובץ XML...
לפעמים כשנכנסים לרשומה מקבלים קובץ XML…

היה לנו אתר שבו לפעמים כשנכנסו לפוסט, היו מקבלים קוד XML (סתמי, לא של הפוסט הזה בכלל). הלקוח היה מאד בלתי מרוצה מזה, ואנחנו היינו חסרי אונים. עכשיו, זה לא משהו שאפשר למצוא לו תשובה ב-SO או בכל מקום אחר. ולכן שמחנו מאד שהיתה לנו התמיכה של וורדפרס. התכתבנו איתם במשך כמה שבועות, החלפנו עשרות דואלים, היו לנו שני סשנים של צ’ט, ואפילו כתבו לנו קוד שידבג את ה-rewrite-ים באתר. בדקנו קש, בדקנו תצורת שרת. אלמלא התמיכה – מי היה מקדיש לנו כ”כ הרבה משאבים.
בסופו של דבר לא נמצאה הסיבה. עברנו שרת והבאג נעלם. אבל איתו נעלם גם הפרוייקט…

החזרה לקהילה

ערכת לימוד פדגוגית למוודל
ערכת לימוד פדגוגית למוודל

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

תוסף נגישות תוצרת אורט
תוסף נגישות תוצרת אורט

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

דברים שחסרו לנו בקוד הפתוח

ניהול העיצוב באתר
ניהול העיצוב באתר

תבנית אתר בי”ס – וידג’טים מסודרים

כליקיט לייט - ניהול התוכן והעיצוב באותו מקום
כליקיט לייט – ניהול התוכן והעיצוב באותו מקום

לא כמו כליקיט לייט – העריכה של התכנים בנפרד

אינטראקציות באמצע התוכן
אינטראקציות באמצע התוכן

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

סיכום

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

 

תודה רבה!
תודה רבה!

שאלות?

6 תגובות על “אורט וקוד פתוח – היילכו שניים יחדיו בלתי אם נועדו

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

כתבו תגובה לנדב קבלרציק Cancel reply

כתובת הדוא"ל שלכם לא תוצג.