
atau…
Premis awalan menempatkan persyaratan yang tidak realistis tentang cara pengembang memelihara situs web
Ada banyak pembicaraan tentang membuat awalan berfungsi (dengan mengubah kebijakan), tapi saya yakin awalan tersebut sudah bertentangan dengan alur kerja pengembang. Dalam proposal ini saya ingin menunjukkan:
- Awalan tidak ramah pengembang
- Fungsi terdekat berada dalam kondisi yang lebih baik tanpa awalan
- SayaTanpa awalan, pengoperasian elemen tidak dibatasi
Pengalaman pengembang
Jika saya menggunakan fungsi dengan awalan, saya memiliki opsi untuk menggunakan alat untuk membantu saya mengelola berbagai awalan yang diperlukan untuk keluaran, atau melakukannya sendiri. Menurut saya Jajak pendapat informal minggu lalu Tampaknya 40% pengembang tidak menggunakan alat. Tanpa menggunakan alat tersebut, penulis tidak akan bisa menyertakannya -ms-, -o- atau varian tanpa awalan. Halaman 4 Laporan Awalan Mozilla Verifikasi ini; sekitar separuh waktu pengembang tidak menulis atribut awalan yang diperlukan (misalnya -o-transform), dan pada kenyataannya mereka menulis varian tanpa awalan sebelum spesifikasi mencapai CR (dan sebelum menambahkannya. Ini selesai) -Sklerosis ganda- atau -Hai- kesesuaian).
Ini juga sesuai dengan pengalaman saya. Saya tidak ingin kembali ke kode ini untuk mempertahankannya, jadi saya akan menambahkan versi tanpa awalan. Lebih murah membiarkan versi tanpa awalan dan menganggap saya tidak perlu mengubahnya daripada kembali mengirimkan CSS yang berfungsi produksi untuk menambahkan varian tanpa awalan setiap kali fitur mencapai CR.
Setiap rencana propagasi awalan yang berhasil bergantung pada perkakas, namun semua alat memprioritaskan status tanpa awalan. tidak ada awalan, kompas, Dan Tolong CSS3 (Saya juga pemasok alat) semua Sangat disarankan untuk memulai tanpa status awalan. Oleh karena itu, setiap promosi diseminasi yang berhasil hanya akan menghasilkan 100% penerapan versi tanpa awalan dari awal, yang bagaimanapun juga mengikat tangan pelaksana dan menggagalkan tujuan awalan. Saya tidak memiliki data bahwa pengembang tidak mengembalikan kode produksi yang diterapkan untuk memperbarui awalan, tetapi bukti anekdotal menunjukkan bahwa inilah masalahnya. Misalnya, tim Pembuka Web Opera melaporkan tingkat keberhasilan <10% bila digunakan secara langsung menyentuh Sebuah situs web yang meminta pembaruan pada awalannya.
PPK menulis “Jika standar membuat hidup pengembang web lebih sulit, maka pengembang web akan mengabaikan standar. Hal ini berlaku pada tahun 1998, dan masih berlaku hingga saat ini. Tanpa awalan, pelaksana memiliki peluang untuk memberdayakan pengembang untuk melakukan hal yang benar selagi masih ada ruang untuk inovasi.
Kebijakan awalan W3C yang ada memberikan ekspektasi yang salah
PPK menyelesaikan masalah ini dengan sangat baik Minggu lalu, namun secara keseluruhan, kebijakan yang mengikat penghapusan awalan ke CR telah banyak gagal. Pengembang tidak mengantisipasi kapan hal ini akan terjadi, dan seharusnya tidak terjadi. Roc Mozilla dikonfirmasi Pengembang menggunakan awalan, dan mereka tidak akan berhenti terlepas dari apa yang disebut status “eksperimental”.
mari kita dengan asumsi tidak ada awalan
Jadi tanpa awalan, tangan vendor terikat dan implementasi pertama yang dirilis akan macet, bukan? TIDAK. menurutku kita bisa berjalan melalui Beberapa contoh dari sejarah terkini juga menggambarkan seperti apa situasi tanpa awalan vendor.
Transisi, transformasi, animasi
Meskipun sejumlah besar bug implementasi telah diperbaiki, pengembang tidak akan pernah memperbarui sintaksisnya dan akan mendapatkan dukungan browser penuh.
ukuran kotak
Tidak masalah. Tidak ada perubahan.
gradien CSS
Gradien adalah spesifikasi CSS yang paling membingungkan, tetapi jika diterapkan tanpa awalan, fitur tersebut akan lebih baik saat ini.
Browser membuang properti dan nilai yang tidak dapat diurai dengan sukses, sehingga pengembang cukup menyertakan serangkaian iterasi spesifikasi. Ini akan berhasil menargetkan semua versi gradien yang dipublikasikan:
1 2 3 4 5 |
|
Fkosakata
Mozilla meluncurkan Flexbox v1, diikuti dengan implementasi WebKit yang sedikit lebih bertenaga. Alex Russel (pos) dan aku (artikel) Kode boilerplate yang disarankan mengasumsikan tidak ada perubahan pada status tanpa awalan dan diblokir IE10 akan segera diimplementasikan.
Flexbox v2 debut dan diimplementasikan di Chrome. Tata bahasanya cukup berbeda sehingga cerita cadangannya memuaskan. Dukungan browser untuk kode penulis yang diterbitkan lebih baik tanpa awalan. Sekali lagi, saya tidak melihat adanya kerugian dalam paradigma ini jika properti ini tidak diberi awalan.
Minta bingkai animasi
Tak lama setelah fitur tersebut diluncurkan, shim ditulis Mengelola semua implementasi yang diawali, termasuk keadaan yang tidak diawali. (Maaf). Dikombinasikan dengan adopsi yang cepat, browser memiliki kemampuan untuk mengubah fitur yang sama besarnya dengan saat diluncurkan tanpa awalan (yaitu tidak banyak).
Risiko dan Solusi
Dalam CSS, perubahan baru yang dapat menyebabkan gangguan harus memperkenalkan perubahan sintaksis yang menghentikan upaya penguraian sebelumnya, seperti yang ditunjukkan dalam contoh gradien. Namun, jika semantik suatu fitur berubah tetapi sintaksisnya tidak, maka kita menghadapi situasi di mana pengembang terpaksa mendeteksi setiap perilaku dan menulis kode yang sesuai.
gambar perbatasan Situasi serupa terjadi baru-baru ini: WebKit mengubah semantiknya dan memerlukan kata kunci “isi” agar sesuai dengan perilaku sebelumnya. Kedengarannya rumit, namun perubahan ini terjadi saat menampilkan varian tanpa awalan, mencocokkan praktik terbaik pelaksana untuk mengubah fungsionalitas. Hasil: Greg Rewis, Adobe Blogger mengatakan Chrome merusak situsnya. Ini memang seharusnya berhasil, tetapi ekspektasi masih saja tidak tercapai. Pengembang memiliki insentif untuk tetap bebas awalan, tetapi itu berarti perubahan apa pun akan selalu merusaknya. Kami mendapatkan resolusi yang sama dengan atau tanpa awalan.
Di JavaScript/DOM, kami memiliki jaring pengaman yang lebih aman karena perilaku dapat dideteksi. Berikan sebuah contoh pemilih kueri semua(); Itu dikirimkan tanpa awalan, dan meskipun ada perbedaan implementasi, perpustakaan JavaScript mendeteksi dan melewatinya. Tentu saja, semantik dapat berubah, dan perpindahan awalan → tanpa awalan memberikan peluang, tetapi menurut pengalaman saya, perubahan ini lebih umum terjadi sejak awal (mis. gumpalan.slice()perubahan).
Tanpa awalan, tidak ada mekanisme untuk memberi tahu pengembang “Awas, itu naga!”. Prefiks tidak melakukan hal ini sekarang karena penghapusannya tidak diprioritaskan, sehingga pengembang memperlakukannya sebagai fakta kehidupan dan bukan sebagai tanda ketidakstabilan. Solusi: Memperoleh metrik yang akurat mengenai penggunaan dan penerapan fitur dapat memberi tahu pelaksana jika sudah terlambat untuk mengubah fitur, atau apakah perubahan tersebut dilakukan terlalu dini.
Ya, tapi…
Karena awalan vendor merupakan perdebatan lama, saya dapat beralih ke tantangan umum pada proposal ini:
- Awalan vendor merugikan jaringan Oleh Henry Sivonen (lihat “Sanggahan pendahuluan terhadap bantahan paling umum” dan banyak lagi)
- Alternatif untuk mendukung awalan -webkit di mesin lain Penulis: Robert O’Callaghan
- Awalan vendor CSS dianggap berbahaya Oleh PPK (sejak 2010)
logis tindakan
- Penggunaan alat promosi komunitas Seperti Kompas, ini melindungi penulis dari praktik kreatif yang buruk, sehingga orang yang memposting tutorial tidak hanya mendefinisikan tutorialnya
-webkit-
gaya. - Browser melacak adopsi fitur untuk membuat keputusan yang lebih baik seputar perubahan. (Jawab pertanyaannya: Apakah kita terjebak?)
- Data ini harus tersedia untuk umum dan diperbarui secara berkala.
- Harus didasarkan pada tampilan halaman untuk mengukur secara akurat kapan CNN.com mengimplementasikan konten tertentu
- Browser lain mengimplementasikan serangkaian yang ditentukan
-webkit-
Awalan di browser seluler. Saya belum menemukan solusi untuk masalah ini dan menurut saya tidak ada yang salah. - Lepaskan gagasan bahwa penginjilan akan mengeluarkan kita dari masalah. Saya telah menginjili diri saya sendiri selama tiga tahun terakhir, tetapi saya juga seorang realis. Situasi ini memerlukan kebijakan baru dan (tentunya) kecepatan kelompok kerja CSS.
- Klarifikasi browser satu Strategi deteksi fitur Ini mendukung. Misalnya, pengembang tidak memiliki cara yang dapat diandalkan untuk mendeteksinya Dukungan transformasi 3D Chrome [1, 2] Atau diskon Chrome -webkit-tanda hubung Positif palsu[3]. Semua proposal untuk menangani properti eksperimental memerlukan teknik deteksi fitur yang akurat agar efektif.
Singkatnya, pengalaman pengembang yang ideal adalah 1) menggunakan alat untuk mengelola awalan; 2) selalu menggunakan status bebas awalan untuk mengurangi biaya pemeliharaan. Kedua fakta ini menghilangkan keuntungan dari pengenalan awalan, hanya menyisakan kekurangannya.