Наближається катастрофа з вендорними префіксами

Крейг Баклер

Оригінал: sitepoint.com/w3c-css-webkit-prefix-crisis

Переклад: Влад Мержевич

Розробники CSS із любов'ю та ненавистю ставляться до вендорних префіксів, які дозволяють бути на грані прогресу за допомогою багатослівних оголошень:

background-image: -webkit-linear-gradient(#fff, #000);
background-image: -moz-linear-gradient(#fff, #000);
background-image: -ms-linear-gradient(#fff, #000);
background-image: -o-linear-gradient(#fff, #000);
background-image: linear-gradient(#fff, #000);

Це працює добре в теорії, але ось що відбувається насправді.

  • Експериментальні властивості частіше першими реалізуються в движку Webkit, але немає гарантії, що вони з'являться в інших браузерах.
  • Іноді важко визначити, чи є властивість з вендорним префіксом частиною специфікації CSS. Деякі виробники браузерів не стандартизують властивості.
  • Навіть якщо стандартна властивість змінилася, некоректні властивості з вендорними префіксами продовжують підтримуватися. Ваш старий код все ще працює, і вам не потрібно повертатися до нього, щоб виправляти його.

Ви все частіше знаходитимете сайти, які використовують лише один префікс -webkit, навіть якщо інші браузери підтримують властивість або вона має широке поширення без префікса (наприклад, border-raduis). Chrome і Safari тому виглядають краще, ніж конкуруючі браузери, і інші виробники цьому не раді.

Була піднята проблема й її обговорення на засіданні W3C 7 лютого 2012 року.

Активісти стандартів навчають людей використовувати Webkit. Ви побачите на презентаціях прихильників веб-стандартів, що вони агітують людей використовувати префікс webkit.

Наша робота полягає в пошуку спільного рішення.

Наразі ми намагаємося визначити, скільки і які властивості з префіксом webkit реально підтримуються в Mozilla.

Якщо ми не будемо підтримувати префікси webkit, ми закриємо сами себе від частини мобільного вебу.

Давайте на мить заглянемо в цю канаву.

Браузери, не на движку Webkit, будуть підтримувати префікс -webkit. Таке рішення розглядається W3C.

Ідея, ймовірно, провалиться. Дві або більше реалізації однієї й тієї ж властивості не будуть сумісні, тому розробники не зможуть використовувати їх де завгодно. Переможців не буде, включаючи Apple та Google.

Проте мене більше турбує непоправима шкода, яка станеться, якщо рішення буде прийнято. Як тільки розробники виявлять, що префікс webkit працює в Firefox, IE та Opera, вони почнуть очікувати, що префікси працюють у всіх властивостях. Прийняття лише Webkit буде зростати експоненційно, і виробники браузерів будуть змушені впроваджувати префікси. На цей момент властивості з webkit стануть стандартом де-факто незалежно від специфікації W3C. Гра закінчена: відкритий веб закриється.

Наслідки можуть піти далі від CSS: багато нових JavaScript API містять префікси.

Хто винен?

Ми можемо вказати пальцем на наступних.

Робоча група W3C

Вона витрачає занадто багато часу, поки веб-стандарти досягають зрілості. Це може бути неуникним, але виробники браузерів ігнорують цей процес.

Виробники браузерів

У погоні продвинути нові технології виробникам легко додати префікс і забути про нього. Веб-розробники вимагають більше інформації: ця властивість розглядається W3C і коли префікс буде видалено?

У ідеальному світі експериментальні префікси зникали б, як тільки браузер починав підтримувати стандартну властивість. Виробники не стануть це робити, оскільки це зламає сайти, але вони можуть зробити більше, щоб привернути увагу до проблеми, наприклад, випустити інструменти виявлення морального застаріння та вивести повідомлення про помилку в консолі розробника.

Apple та Google

Обидві компанії винні в просуванні префіксів webkit, ніби вони є стандартною частиною щоденної розробки HTML5. Apple обвинується в активній роботі проти W3C.

Mozilla, Microsoft та Opera

Інші виробники місяцями слідкують за браузерами на основі Webkit, якщо не роками. Додавання префіксів webkit нелогічне рішення, час грати у власну гру.

Технологи веб-сайтів та евангелісти

Ми всі любимо класні демонстрації, але евангелісти часто забувають згадати, що властивості є експериментальними і, можливо, ніколи не будуть повністю підтримуватися браузером. У ідеалі, код повинен працювати щонайменше в двох браузерах, це означає, що потрібно декілька вендорних префіксів.

Веб-розробники

Ми занадто ліниві. Ми пишемо специфічний для браузера код, і хоча у нас можуть бути хороші наміри щодо його виправлення у майбутньому, ми рідко це робимо.

Чи пам'ятаєте ви останній раз, коли розробники орієнтувалися на певний браузер? Це був IE6. Ми до цього часу живемо з спадщиною цього рішення після десятиліття. Ви дійсно хочете, щоб історія повторилася?

Час діяти

Я проти не-Webkit браузерів, які підтримують префікси webkit. У найкращому випадку, вони роблять префікси непридатними для використання. У найгіршому випадку це порушує весь процес стандартизації. Ви можете погоджуватися або не погоджуватися, але дайте знати про свою думку колегам через блоги та соціальні мережі. W3C та виробники браузерів послухають вашу думку, ви просто повинні показати їм її.

Потім перевірте свій сайт в різних браузерах. Трохи елегантного зниження не зашкодить, але ігнорування одного або декількох сучасних браузерів це погано. Виправте код, інакше ваш сайт вносить свій внесок у цю проблему.

Часті запитання