יום שני, ינואר 11, 2016

תודה לגוגל (או חברת האלפבית)

אני חייב להגיד תודה לחברת גוגל , לאחר שזו הציבה דרישה ל RouteBuilder שאוסרת עליה להשתמש ב maps api. מדובר על פרוייקט שקם שנתיים אחרי OpenStreetMap אמנם OpenStreetMap מחזיקים ברישיון משונה (ODBL) זה עדיין טוב יותר מגוגל (גם MapQuest לא מדהימים למען האמת).


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

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

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

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

מי שלא רוצה שהפרוייקט הבא או האתר המדהים שלכם יחטוף סתירה כזאת בעתיד הלא רחוק ? תתקינו שרת מיפוי (tile server)  - לא משנה מאיפה תיקחו את המפות אם זה OpenStreetMap או מידע גאוגרפי שיוצא לArcGIS ולכם יש רישיון שימוש להשתמש בו,העיקר שתהיה לכם היכולת להחליט מה להציג, מתי להציג ואיפה להציג.


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

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

ואם אפשר כמה מילים על מפ"י.

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


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

4 תגובות:

  1. בוריס, תרשה לי להבדיל בין שני דברים:

    * המנוע להצגת המפות (שכבות במינוח של OpenLayers)
    * המידע המוצג (השכבה)

    גם MapBox וגם GoogleMaps הם שני הדברים. לעומת זאת, OpenLayers הוא מנוע בלבד, שאתה צריך להזין לו שכבה לתצוגה על המסך. למעשה, MapBox ניתן להפרדה ואפשר להשתמש במנוע החופשי שלו לתצוגה של שכבות שאתה מגדיר, לא בהרכח חייבים לעשות שימוש ב־id שלהם.

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

    אני נכוותי *המון* מגוגל בעבודה עד כדי כך שבאפליקצייה שאני בונה בעבודה יצאתי מראש בהנחה שיהיה ניתן להחליף את מנוע התצוגה. יש לי מימוש של GMaps ושל Mapbox 1 (לא לא, 2 בכלל לא מוכן, ברמות קיצוניות וקשות). ניסיתי לבנות מעטפת HTML+JavaScript שתיתן לי API מספיק טוב עבורי, אבל התברר כבעייה:

    ה־API של JavaScript הוא אסינכרוני בטירוף, ואילו שני הפרוייקטים האחרים נותנים API סינכרנוני... וזה דפק את השמפליקציה שלי ברמות קשות שהייתי צריך לשכתב אותה בכמויות. ועוד בעייה, אי אפשר להשתמש בתצוגת HTML בשמפליקציות של אנדרויד. זמן הטעינה של ה־WebView במכשירים מודרנים הוא 300-400 מילישניות (ואז מתחיל JavaScript לעבוד וזה יכול לקחות עוד 100-200 מילי-שניות תלוי בכמות הקוד שיש לך.
    אבל...

    במכשירים ישנים (ויש המון כאלו, בערך 30% מהם אולי יותר) ייקח לך עד 10 שניות לפני ש־JavaScript יתחיל לעבוד. ואז בערך 500 מילי שניות עד שהאקטיביטי יהיה זמין. (נבדק על Galaxy S3 Mini + Galaxy S1, האחרון עם אנדרויד 2.3 רשמי ו־4.4 של CM).

    הכל מיקרה... מה רע ב־MapBox? מה רע ברישיון שלהם?

    נ.ב. - על מחשבי Desktop אני חייב להגיד ש־OpenLayers מעל WebView הוא מצויין - ממליץ בחום.

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


    גם MapBox וגם GoogleMaps הם שני הדברים. לעומת זאת, OpenLayers הוא מנוע בלבד, שאתה צריך להזין לו שכבה לתצוגה על המסך. למעשה, MapBox ניתן להפרדה ואפשר להשתמש במנוע החופשי שלו לתצוגה של שכבות שאתה מגדיר, לא בהרכח חייבים לעשות שימוש ב־id שלהם.


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

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

    אם אתה שם OpenLayers על האתר שלך, כדי שיציג משהו אתה צריך להרים שרת די מסובך וכבד. זה לא טריויאלי לכולם

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

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

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

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

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

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

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

    לגבי המדידה שלך: 5 שניות זה נצח במונחי אפליקציה. הפקד של גוגל תוך 300-400 מילי-שניות מציג את כל המפה. ושוב - נפלת בפח :)

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

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

    לא אמרת איזה מכשיר יש לך. במכשירים חדשים, הזמן הזה הוא מילי-שניות. בישנים הוא שניות.

    השבמחק
  4. שלום לך elcuco,

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


    חמש שניות זה זמן דפדפן, אני לא הולך להכנס לכמה זמן לוקח להוריד את המדיה ולרנדר זה עניין של איך והאם יש לך בכלל CDN נורמלי (שרת הבדיקה שלי שמחובר אינו מכיל CDN כלל). אם אני לא טועה דף פתיחה מכיל כ 256 תמונות שכל אחת מהן היא בגודל ה~10K (במקרה של PNG) הדף שאתה מקבל הוא סך הכל הרבה מאוד תמונות ועוד JS במקרה שמדובר על OpenLayers (בגודל של ה 500K).

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

    מה שראיתי שאנשים עושים (וזה אסור אם אתה משתמש נגיד ב MapBox) מורידים מראש את המדיה ואז בודקים אם המידע השתנה ב HTTP ורק אם כן מורידים עידכון (בגלל זה אתה מקבל ב marble ו gmaps אתה מקבל תגובה מהירה יותר משל פיירפוקס).

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

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

    השבמחק