Internet Explorer 8 και version targeting : Το μεγάλο λάθος της Microsoft

Και ενώ τα νέα που είχαμε στην διάθεση μας σχετικά με την νέα έκδοση του Internet Explorer ήταν παραπάνω από καλά, όπως την (σχεδόν) πλήρης υποστήριξη των web standards καθώς και το γεγονός ότι πέρασε με απόλυτη επιτυχία το ACID 2 test, ξαφνικά η Microsoft κάνει κατά την γνώμη μου την χειρότερη κίνηση στο να εκμεταλλευτεί πλήρως όλα τα παραπάνω και να ξεπλύνει το κακό όνομα που έχει ο browser της! Ο λόγος είναι το λεγόμενο version targeting που θα χρησιμοποιήσει η εταιρεία στον Internet Explorer 8 το οποίο και βρίσκω πραγματικά ανούσιο και δεν καταλαβαίνω γιατί αποφασίστηκε ένας τέτοιος μηχανισμός επιλογής rendering μηχανής στον νέο browser και όχι κάτι πιο απλό και κατανοητό (και για τον απλό χρήστη και για τον developer). Στο A List Apart έχουν δημοσιευθεί δύο πολύ ενδιαφέροντα άρθρα πάνω στο θέμα, με το ένα να τίθεται υπέρ και το άλλο κατά του version targeting, με τίτλους “Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8” και “From Switches to Targets: A Standardista’s Journey“, τα οποία και συστήνω σε όλους τους web designers/developers.

Γιατί πιστεύω πως η Microsoft κάνει λάθος λοιπόν. Έχουμε και λέμε, η Microsoft μετά από πολλά χρόνια καταφέρνει να φτιάξει επιτέλους έναν πολύ αξιόλογο browser (Internet Explorer 8), ο οποίος και περνάει το διάσημο ACID 2 test, πράγμα που σημαίνει πως η rendering μηχανή του ανταποκρίνεται σωστά (ή έστω με πολύ μεγάλη ακρίβεια) στα web standards. Το λάθος της εταιρείας λοιπόν είναι πως αντί να χρησιμοποιήσει σαν default την καινούργια, web standards compliant rendering engine στον Internet Explorer 8, αποφασίζει να δώσει 3 rendering modes στον browser, ανάλογα με τον κώδικα που βρίσκει σε κάθε σελίδα, και πιο συγκεκριμένα :

  • Quirks mode” όπου θα χρησιμοποιείτε σε σελίδες με μη web standard κώδικα και θα είναι συμβατός με παλιό και μη ενημερωμένο περιεχόμενο.
  • Standards mode” όπου θα συμπεριφέρεται σαν το standards mode του Internet Explorer 7. Έτσι τα site με valid code θα γίνονται render όπως ακριβώς γίνονται στον Internet Explorer 7 και όχι με την καινούργια web standards compliant rendering engine του Internet Explorer 8!
  • Εάν θέλετε να χρησιμοποιήσετε την καινούργια web standards compliant rendering engine του Internet Explorer 8 θα πρέπει να χρησιμοποιήσετε ένα <meta> element!

To meta element που θα πρέπει να χρησιμοποιηθεί παρουσιάζεται στον είναι το παρακάτω code snippet,

<meta HTTP-equiv="X-UA-Compatible" content="IE=8">

με δυνατότητα επέκτασης και σε άλλους browsers και versions ως :

<meta HTTP-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4">

Και που είναι το πρόβλημα τώρα, θα αναρωτιέστε πολλοί. Τα πρόβλημα που βλέπω εγώ (και όχι μόνο) είναι το εξής. Γιατί θα πρέπει ο οποιοσδήποτε web designer/developer να δημιουργήσει ένα meta element για να χρησιμοποιήσει την καινούργια rendering μηχανή του ΙΕ8 σε valid κώδικα? – Αλλιώς όπως αναφέρω παραπάνω η default rendering engine που θα χρησιμοποιηθεί είναι αυτή του IE7! Καταλαβαίνω (σε αντίθεση με πιο σκληροπυρηνικούς) τον λόγο ύπαρξης ενός “Quirks mode” για την προβολή παλιού και μη valid περιεχομένου, αλλά από εκεί και πέρα η default rendering μηχανή σε valid σελίδες θα έπρεπε να είναι η καινούργια (αυτή του ΙΕ8) και όχι αυτή του ΙΕ7! Είναι σαν μια αναβάθμιση που στην ουσία για να χρησιμοποιήσει κάποιος θα πρέπει να κάνει κάποιο hack! Στην χειρότερη περίπτωση, εάν θέλανε τόσο πολύ να μην χαλάσουν κάποια site που λειτουργούν μια χαρά αυτήν την στιγμή σε ΙΕ7, ας κάνανε το αντίθετο, δηλαδή να δημιουργούσαν ένα meta element το οποίο θα ανάγκαζε τον IE8 να συμπεριφερόταν σαν ΙΕ7 (και όχι το αντίθετο)! Πραγματικά δεν μπορώ να καταλάβω γιατί η Microsoft πνίγεται σε μια κουταλιά νερό σε τέτοια θέματα. Θες να βγάλεις τον browser σου και να υποστηρίζεις όλες τις προηγούμενες και κακές υλοποιήσεις του, πολύ ωραία, κάντο, αλλά κάντο έξυπνα και προπαντός χωρίς να πηγαίνεις πίσω το καινούργιο προϊόν σου! Η πρόοδος έχει πάντα ένα μικρό κόστος και στην συγκεκριμένη περίπτωση θα ήταν πάρα πολύ μικρό σε σχέση με το γενικότερο κέρδος που θα είχε και από την web κοινότητα και από την development κοινότητα! Τέλος δεν μπορώ να καταλάβω γιατί εφόσον θέλει να υποστηρίξει τα κακογραμμένα sites που έχουν φτιαχτεί 5 και 10 χρόνια πριν, γιατί δεν κάνει ευκολότερη την ζωή και των χρηστών τέτοιων site αλλά και των developers, δίνοντας την επιλογή στον browser της να διαλέξει rendering μηχανή (μέσα από κάποιο μενού ας πούμε – όπως κάνουμε πχ. με το μενού encoding) ή έστω να επιτρέψει την εγκατάσταση διαφορετικών εκδόσεων του browser της στο ίδιο σύστημα!

Προσωπικά πιστεύω πως η Microsoft πνίγηκε σε μια κουταλιά νερό και χάλασε άδοξα τις πάρα πολύ καλές εντυπώσεις που είχε κερδίσει ο καινούργιος Explorer. Τώρα πόσο θα επηρεάσει αυτή η απόφαση εμάς τους developers, ο χρόνος θα δείξει… Άποψη μου είναι πως έκανε το απλό, πολύπλοκο, χωρίς κανέναν ιδιαίτερο λόγο.

  • Κατ’ αρχάς συγχαρητήρια που ασχολείσαι με το θέμα. Μακάρι αυτό το post να το διαβάσουν όσο περισσότεροι designers/developers γίνεται.

    Στο θέμα μας: Από την προηγούμενη εβδομάδα που διάβασα τα κείμενα δεν μπορώ ν’ αποφασίσω αν συμφωνώ με την απόφαση της MS.

    Υπάρχει ο εξής αντίλογος σε όσα λες: ο designer που ενδιαφέρεται για τα Web standards, είναι μεν ριγμένος γιατί πρέπει να προσθέσει το extra meta tag, αλλά στην ουσία δεν επηρεάζεται γιατί η δουλειά του θα δείχνει καλά σε κάθε browser και ταυτόχρονα εκμεταλλεύται τα πλεονεκτήματα του ΙΕ8.

    Από την άλλη μεριά, οι περισσότεροι που σχεδιάζουν sites (ή λένε ότι κάνουν κάτι τέτοιο) θα συνεχίσουν να δουλεύουν με λάθος μεθόδους. Γι’ αυτούς (και κυρίως για τους πελάτες τους) το rendering θα γίνεται υποχρεωτικά με ΙΕ7 και δε θα κομματιάζεται στον σωστό ΙΕ8. Ό,τι βλέπει κάποιος που έχει εγκατεστημένο τον ΙΕ7, θα βλέπει κι αυτός με εγκατεστημένο τον ΙΕ8.

    Σκέψου πόση γκρίνια θα γλυτώσει η Microsoft, ειδικά τη στιγμή που κάνει την προσπάθειά της να γίνει standards compliant.

    Όσο γι’ αυτό που λες σχετικά με τη δυνατότητα να επιλέγει ο χρήστης ποια rendering μηχανή θα χρησιμοποιηθεί, νομίζω ότι κάτι τέτοιο θα μας οδηγούσε σε ένα ατέλειωτο μπάχαλο από τυπικούς χρήστες καταϊδρωμένους να έχουν χάσει την μπάλα από το τι δείχνει κάθε φορά ο browser τους.

    (Sorry για το τεράστιο σχόλιο. Ήθελα απλώς να προβάλλω την άλλη άποψη – και πάλι χωρίς να έχω αποφασίσει αν συμφωνώ με αυτή.)

  • Καλά, τόση ευθυνοφοβία η MS; Δηλαδή πρέπει να αναλάβει την “ευθύνη” της συμβατότητας με τα (δεδομένα) web standards ο web developer;

    Χάθηκε ο κόσμος, έστω όχι by default, να δώσει την επιλογή στο χρήστη να έχει τη νέα engine ως προεπιλογή;

    Χμφ… γυρίζω στον Safari μου:rolling_eyes:

  • John Tsevdos

    @porcupine : Καταρχάς ευχαριστώ για τα καλά σου λόγια. Πάντως ότι και να μου θέσουν ως αντίλογο εγώ πιστεύω πως η Microsoft έκανε λάθος σε κάτι που πραγματικά βελτίωσε! Η default rendering μηχανή έπρεπε να είναι η καινούργια, και όποιοι άσχετοι designers και developers (dreamweaver επιπέδου) θα ήθελαν να χρησιμοποιήσουν την rendering μηχανή του IE7 να βάζανε αυτοί το meta tag, και όχι εμείς οι υπόλοιποι! Είναι τελείως άτοπο, δεν νομίζεις?

    @Flareman : Είναι αυτό που λες φίλε, ευθυνόφοβη. Καταλαβαίνω πως θέλουν να μην χαλάσουν κάποια ΙΕ-only intranets κτλ., αλλά το να εμποδίζεις την εξέλιξη και να βγάζεις ένα νέο προϊόν που στην ουσία είναι ίδιο με το προηγούμενο (εκτός και εάν ο developer του site το ενεργοποιήσει) είναι πρωτάκουστο! Σαν να παίρνεις αλλάζεις το παλιό σου αμάξι με ένα καινούργιο και να πρέπει να πεις στον μηχανικό να σου ενεργοποιήσει τα καινούργια αξεσουάρ και δυνατότητες!!!

  • (…) να βάζανε αυτοί το meta tag, και όχι εμείς οι υπόλοιποι! Είναι τελείως άτοπο, δεν νομίζεις?

    Δεν το βρίσκω άτοπο από τη στιγμή που εξυπηρετεί τη μεγάλη πλειοψηφεία.

    Νομίζω ότι κανένας ερασιτέχνης web designer δεν έγινε και δε θα γίνει καλύτερος με έναν τέτοιου είδους εξαναγκασμό. Μπορεί πάλι και να κάνω λάθος…

  • John Tsevdos

    Συμφωνώ ότι εξυπηρετεί την μεγάλη πλειοψηφία αλλά μπορούσε να κάνει χίλια-δυο διαφορετικά πράγματα για να την εξυπηρετήσει ακόμα καλύτερα, όπως να επιτρέψει την εγκατάσταση πολλαπλών εκδόσεων του Explorer στο ίδιο σύστημα, να δώσει την δυνατότητα επιλογής rendering μηχανής στον χρήστη, καθώς και πολλές άλλες λύσεις που δεν μπορώ να σκεφτώ αυτήν την στιγμή, αλλά όχι να πάει πίσω την εξέλιξη του browser της… Στην τελική ας ονόμαζε αυτόν τον browser Explorer 7.5 και να έβγαζε τον 8 με την default μηχανή του όταν κάποια site (και γενικότερα η αγορά) θα ήταν πιο έτοιμα!

  • John Tsevdos

    Να σημειώσω εδώ πως και ο “μπαμπάς” των web standards Jeffrey Zeldman συμφωνεί με την άποψη του porcupine, ωστόσο εγώ θα συνεχίζω να είμαι με τον Jeremy σε αυτήν την μεγάλη διαμάχη…

  • Πολύ καλό άρθρο Γιάννη μπράβο !!!

    Στο θέμα να πω πως το meta tag είναι κάτι που και οι ελάχιστα ενημερωμένοι designers θα πρέπει να βρουν ιδιαίτερα ελκυστική λ΄ση στην πραγματικότητα…

    Το πρόβλημά μου είναι πως αντι να παραδεχθεί το λάθος της, η MS δείχνει πως θέλει να διαιωνίσει την λειτουργία ¨δικών της ” αποκλειστικών sites όπως κατά μείζονα λόγω είναι τα τραπεζικά sites. Εκεί νομίζω ότι δείχνει και η χρήση της non-w3-compliant μηχανής…

    Kudos και πάλι για το άρθρο!

  • John Tsevdos

    Φίλε Vageli, όπως βλέπεις οι απόψεις διίστανται και μάλιστα και από κορυφαίους developers στη γη (Jeffrey Zeldman, Eric Meyer, Jeremy Keith, κτλ.)! Προσωπικά η άποψη μου (και γενικότερα η στάση μου) στο θέμα αναφέρεται καθαρά στο παραπάνω post. Απλά πιστεύω πως ο καινούργιος ΙΕ θα έπρεπε να κάνει render by default σαν καινούργιος ΙΕ!