Herding Cats — Pelajaran yang Dipetik Saat Berkembang untuk Lingkungan WordPress

Diterbitkan: 2021-12-02

Ketika Elementor 3.0 dirilis lebih dari setahun yang lalu, pada tahun 2020, kami melihatnya sebagai langkah signifikan menuju editor yang lebih cepat dan jauh lebih kuat. Meskipun benar, versi ini juga memiliki konsekuensi penting yang tidak terduga – menyebabkan sejumlah besar situs berhenti berfungsi dan, sejujurnya, merusak reputasi kami. Setelah rilis ini, kami perlu membuat serangkaian perbaikan agar situs-situs ini berfungsi kembali. Selain itu, seluruh pengalaman menunjukkan kepada kami bahwa kami perlu merombak seluruh prosedur pengujian dan pelepasan kami. Meskipun menyakitkan, proses ini membuahkan hasil hari ini sebagaimana tercermin dalam penurunan luar biasa dalam masalah, terutama yang kritis, antara rilis versi v3.0 dan v3.4 kami:

Sekarang, saat kita mendekati peringatan satu tahun Elementor 3.0, inilah saat yang tepat untuk melihat ke belakang dan memeriksa prosedur yang kami lakukan untuk memastikan bahwa masalah yang menyertai peluncurannya tidak terjadi lagi. Agar setransparan mungkin dengan komunitas kami, saya ingin memeriksa latar belakang masalah seputar rilis 3.0, langkah-langkah yang kami ambil selama setahun terakhir, bagaimana kami dapat memastikan rilis yang stabil dan apa yang akan terjadi di masa depan. Tapi pertama-tama, penting untuk memahami sedikit sejarah Elementor dan tantangan yang kita hadapi dalam mengembangkan plugin yang rumit dan canggih dalam lingkungan WordPress.

Daftar isi

  • Elementor dan Tantangan WordPress
  • Mengembangkan Fitur Baru Tanpa Melanggar Yang Lama
  • Putaran Umpan Balik
  • Memperkenalkan Fitur "Eksperimental"
  • Tag Kompatibilitas
  • Menuju Masa Depan yang Lebih Baik

Elementor dan Tantangan WordPress

Pada Juni 2016, ketika kami merilis Elementor versi pertama, kami hanyalah beberapa “anak-anak”, yang suka mengembangkan plugin dan membantu orang membangun situs web. Ini bukan produk pertama kami, kami telah mengembangkan beberapa plugin yang digunakan oleh komunitas WordPress. Namun, saat kami mengerjakan Elementor, kami menjadi yakin bahwa kami sedang mengembangkan sesuatu yang istimewa. Ternyata, kami benar – hanya beberapa bulan setelah rilis pertama kami, puluhan ribu pengguna telah menginstal Elementor dan menggunakannya untuk membangun situs web di seluruh dunia.

Sejak itu, perusahaan kami telah berkembang dalam segala hal, dengan lebih banyak pengembang, lebih banyak pengguna, dan lebih banyak fitur. Dengan pertumbuhan ini, muncul sejumlah masalah baru, termasuk defisit teknologi yang berkembang saat kami berfokus pada masalah mendesak, mengesampingkan masalah penting, tetapi lebih duniawi.

Menangani masalah ini menjadi lebih sulit oleh tantangan keseluruhan yang ditimbulkan oleh sifat lingkungan WordPress.

Sebagai platform terbuka, WordPress menawarkan sejumlah keuntungan besar bagi pengembang. Ada beberapa penghalang jalan yang memantau dan memperlambat rilis. Konsep dibayangkan, dikembangkan, dan ditambahkan ke repositori. Pengguna mencoba, menguji, dan menilai produk ini, dengan pasar memutuskan mana yang akan berkembang dan mana yang akan gagal. Namun, kecepatan dan kesederhanaan ini ada harganya.

Ada sedikit keseragaman di lingkungan WordPress dan tidak ada alur kerja yang teratur. Pembuat web bebas menentukan lingkungan situs mereka saat menggunakan beragam plugin, tema, dll. Ini berarti bahwa situs WordPress berisi kombinasi plugin, tema, dan konfigurasi server yang tak terhitung jumlahnya.

Selain itu, kesederhanaan proses rilis dan kurangnya alat penyebaran yang kuat berarti pengembang WordPress tidak dapat memanfaatkan konsep rilis modern seperti CI/CD, Canary Deployment, dan Feature Flags.

Sementara keterbukaan adalah bagian dari keindahan WordPress, banyaknya konfigurasi situs dan server yang melekat memberikan tantangan nyata kepada pengembang dalam hal memperhitungkan konflik plugin dan masalah server tertentu.

Dalam kasus kami, karena Elementor digunakan untuk semakin banyak situs web, kebutuhan untuk mendukung semua kombinasi yang berbeda ini memperlambat jadwal rilis kami dan bahkan membuat kami ragu untuk mengembangkan fitur baru. Tak perlu dikatakan, situasi ini tidak dapat diterima dan kami perlu mengguncang segalanya.

Mengembangkan Fitur Baru Tanpa Melanggar Yang Lama

Semua faktor di atas membuat kami dilema bagaimana kami bisa terus berkembang dan berkembang tanpa berdampak negatif pada pekerjaan mereka yang sudah mengandalkan Elementor?

Kami mulai dengan menerapkan beberapa perubahan kecil dalam proses rilis kami. Di Elementor 1.5, kami mulai menawarkan akses kepada pengembang ke versi Beta. Kami melakukan ini melalui Github dan komunitas lain yang memungkinkan kami menerima umpan balik sebelum rilis, yang menunjukkan bagaimana versi ini berinteraksi dengan berbagai kombinasi plugin/tema/lingkungan dan memperingatkan kami tentang ketidaksesuaian sejak dini. Pendekatan ini bekerja dengan baik untuk sementara waktu, tetapi ketika Elementor tumbuh, bahkan lebih, kami menemukan ini tidak cukup.

Pada saat ini, kami telah melewati ambang batas lima juta pemasangan. Meskipun merupakan pencapaian yang luar biasa, itu juga berarti kami sekarang bertanggung jawab atas semua situs web ini yang berfungsi dengan lancar.

Segalanya akhirnya memuncak dengan dirilisnya Elementor 3.0. Dalam versi ini, kami memutuskan untuk menghapus beberapa fungsi lama yang tampaknya sudah usang, menghapus elemen DOM untuk meningkatkan kecepatan pemuatan. Ini, setidaknya sebagian, sebagai tanggapan atas keluhan yang dapat dibenarkan bahwa kami tidak perlu membebani sistem.

Sayangnya, perubahan ini menyebabkan sejumlah situs, yang mengandalkan kode yang telah kami hapus, rusak selama peningkatan. Terlepas dari upaya kami untuk membawa pengembang pihak ketiga ke dalam proses, bug ini tetap tidak ditemukan dan kami harus bergerak cepat untuk memperbaiki situasi. Pada akhirnya, kami dapat melakukannya dengan membuat bagian dari peningkatan opsional, tetapi tidak sebelum beberapa anggota komunitas kami memiliki kepercayaan mereka pada stabilitas plugin kami, terguncang.

Pengalaman ini memaksa kami untuk melihat proses pengembangan kami dalam waktu yang lama dan keras, dengan tujuan untuk membuat sejumlah perubahan besar. Proses kami sama sekali tidak cocok untuk perusahaan dengan ukuran dan basis pemasangan kami. Langkah pertama, dan mungkin yang paling jelas, adalah meningkatkan ukuran dan cakupan tim QA kami, tetapi ini masih membuat kami bergulat dengan sejumlah masalah yang belum terselesaikan:

  • Memeriksa kompatibilitas versi dengan pengaturan situs yang tak terhitung jumlahnya
  • Memastikan kompatibilitas mundur dengan lebih dari lima juta situs yang ada
  • Memeriksa kompatibilitas ratusan ekstensi Elementor pihak ketiga

Untuk mengatasi semua masalah ini, kami perlu membawa lebih banyak metode pengembangan perangkat lunak terkini ke dunia WordPress.

Putaran Umpan Balik

Salah satu masalah besar yang dihadapi pengembangan, secara umum, adalah bahwa pengguna hanya mengalami pembaruan setelah dirilis. Itu berarti fitur telah dirancang, dikembangkan, dan dirilis pada saat kami menerima umpan balik dari pengguna. Dalam kasus kami, berurusan dengan ratusan ekstensi dan plugin pihak ketiga, masalah loop umpan balik ini bahkan lebih penting.

Dalam mencari cara untuk mempersingkat umpan balik ini, kami melihat bagaimana pengembang browser menangani masalah yang sangat mirip dengan masalah kami – mereka juga harus memastikan kompatibilitas dengan halaman web pihak ketiga yang tak terhitung jumlahnya, aplikasi, ekstensi, dan banyak lagi.

Misalnya, kami memeriksa sistem yang dikembangkan oleh Google untuk browser Chrome mereka. Kapan pun, pengembang memiliki akses ke tiga versi browser — versi beta, versi pengembang, dan versi malam. Ini berarti bahwa pengembang mendapatkan tampilan awal pada fitur Chrome baru dan dapat mulai memberikan umpan balik kepada Google jauh sebelum versi tersebut dirilis secara resmi.

Menerapkan pelajaran ini ke plugin kami, Elementor mulai merilis edisi pengembangnya sendiri – Elementor Beta (Edisi Pengembang), tersedia dari repositori WordPress dan ditujukan untuk pengembang yang tertarik untuk memeriksa fitur baru kami “hot off the press” sehingga untuk berbicara.

Bagi kami, tentu saja, kami mendapat manfaat dengan menerima peringatan dini tentang masalah kompatibilitas. Edisi pengembang tidak hanya memungkinkan pengguna untuk mengakses semua fitur baru ini, tetapi bahkan ada tautan langsung ke Github untuk melaporkan bug. Ini berarti kami dapat terus menerapkan fitur baru dan menerima umpan balik tentangnya, tanpa membahayakan situs web yang ada. Untuk pengembang, ini memungkinkan mereka untuk mempersiapkan rilis resmi yang akan datang jauh sebelumnya, membantu mencegah masalah kompatibilitas mereka sendiri dan juga memberi mereka kesempatan untuk memberikan umpan balik produk dan teknis saat fitur masih dikerjakan.

Perlu dicatat bahwa rilis edisi pengembang berjalan secara paralel dengan normal — alfa, beta, RC, dan produksi — sebuah proses yang digunakan untuk mengembangkan rilis Elementor. Saat kami mengembangkan fitur baru, segera setelah cukup stabil untuk digunakan, tetapi saat masih dalam versi alfa, kami menambahkannya ke edisi pengembang. Dengan cara ini, pengembang kami dapat memberi kami umpan balik, bahkan sebelum fitur tersebut mencapai versi beta. Ini juga berarti bahwa edisi pengembang menyertakan fitur yang belum mencapai tahap beta.

Pada dasarnya tahap beta dicadangkan untuk proses debugging yang disengaja, sementara edisi pengembang diperbarui lebih sering, menggabungkan fitur pada tahap paling awal.

Sejak diperkenalkan, edisi pengembang telah terbukti sukses besar, mengumpulkan lebih dari 40 ribu pemasangan dalam waktu kurang dari setahun.

Memperkenalkan Fitur "Eksperimental"

Selama bertahun-tahun, pengembang konsep lain yang telah dianut adalah flag fitur, yang sangat lazim di dunia SaaS. Ide umumnya adalah bahwa tanda fitur ini memungkinkan pengembang untuk menguji fitur baru dengan mengaktifkan dan menonaktifkannya untuk segmen pengguna yang berbeda untuk mengujinya dan melihat cara kerjanya.

Seperti disebutkan di atas, banyak masalah yang berasal dari rilis 3.0, disebabkan oleh fitur baru yang menghilangkan kode lama. Untuk menghindari masalah seperti ini, kami memutuskan untuk mengadopsi pendekatan yang mirip dengan flag fitur.

Dimulai dengan Elementor 3.1, kami mulai merilis fitur baru dengan lebih hati-hati, menandainya sebagai "eksperimental". Ini termasuk sistem pengenalan fitur baru secara bertahap. Dalam sistem ini, fitur yang baru dikembangkan akan ditandai sebagai "Alpha". Ini berarti dimatikan, secara default, di semua situs. Karena terbukti lebih stabil, ini menjadi "Beta", yang berarti sekarang diaktifkan, secara default, untuk situs baru dan nonaktif untuk situs yang sudah ada. Setelah kami yakin itu stabil, itu diaktifkan, secara default, untuk semua situs. Meski begitu, akan ada opsi bagi pengguna untuk menonaktifkan fitur tersebut, untuk waktu yang terbatas.

Sistem ini memungkinkan kami untuk terus mengembangkan Elementor, menambah set fitur dan kecepatannya, sekaligus memungkinkan pembuat konten untuk ikut serta atau keluar dari peningkatan baru ini sesuai dengan kebutuhan situs mereka. Ini juga membantu pembuat konten memperbarui situs mereka dengan memungkinkan mereka mengadopsi fitur baru dengan lebih hati-hati.

Tag Kompatibilitas

Pertumbuhan komunitas pengembang Elementor yang sangat aktif telah menjadi sumber kebanggaan tetapi juga menimbulkan tantangan tersendiri. Pengembang pihak ketiga telah membuat ratusan ekstensi, tema, kit, dan widget, semuanya berdasarkan teknologi kami yang ada.

Untuk mendukung pengembang pengaya pihak ketiga ini, kami menggunakan blog pengembang dan milis kami untuk memberi mereka pemberitahuan awal tentang perubahan yang kami buat pada API serta penghentiannya. Namun, seperti yang disebutkan di atas, kami menemukan bahwa ini tidak cukup. Banyak masalah yang kami alami dengan rilis baru mengalami masalah kompatibilitas karena add-on pihak ketiga ini. Plugin kami dianggap tidak stabil, bukan karena teknologi kami, tetapi karena ketidakcocokan pihak ketiga ini.

Sekali lagi, kami melihat apa yang dilakukan orang lain untuk mendapatkan inspirasi. Dalam hal ini, WooCommerce dan pendekatan mereka untuk bekerja dengan pengembang pihak ketiga. Dimulai dengan rilis 3.1 kami, kami memulai sistem di mana pengembang pihak ketiga menyatakan bahwa ekstensi mereka kompatibel dengan versi baru (Pelajari Lebih Lanjut). Kemudian, ketika pengguna diberi opsi untuk memutakhirkan Elementor, mereka disajikan dengan daftar ekstensi pihak ketiga yang mereka gunakan dan apakah mereka telah disertifikasi sebagai kompatibel dengan versi baru Elementor. Dengan cara ini pengguna dapat membuat keputusan tentang peningkatan.

Menuju Masa Depan yang Lebih Baik

Dengan menguraikan tantangan-tantangan ini dan perubahan yang telah kami terapkan, saya harap saya telah memberi Anda gambaran sekilas tentang bagaimana rasanya mengembangkan produk untuk digunakan di seluruh dunia, dalam lingkungan sumber terbuka dan selalu berubah. Sebagai bagian dari budaya sumber terbuka ini, sangat penting bagi kami untuk transparan dengan komunitas pengguna dan pengembang kami – terlebih lagi seiring dengan pertumbuhan perusahaan dan semakin sulit untuk mempertahankan “sentuhan pribadi”. Bukan hanya karena rasa sakit pengguna kami adalah rasa sakit kami, tetapi karena ini adalah cara terbaik bagi Elementor untuk tetap menjadi alat yang stabil, terbuka untuk pengguna seluas mungkin.

Kami sangat percaya bahwa perubahan yang telah kami terapkan berkontribusi dan akan terus berkontribusi pada pertumbuhan dan kesuksesan Elementor. Namun, kami juga menyadari bahwa masih ada pekerjaan yang harus dilakukan dan komunikasi antara Elementor dan komunitas Elementor harus tetap terbuka dan bahkan ditingkatkan. Misalnya, kami meningkatkan situs sumber daya pengembang kami, menyediakan dokumentasi yang mudah digunakan untuk membantu pengembang menyesuaikan, dan membangun, Elementor.
Tapi mungkin langkah terpenting yang kami ambil dalam meningkatkan komunikasi adalah membangun Elementor Community Hub. Di sini, pembuat web di seluruh dunia dapat berkumpul untuk bertukar ide satu sama lain, dan bersama kami – berkolaborasi bersama untuk membuat Elementor menjadi yang terbaik. Bagaimanapun, seperti pepatah lama, menggiring kucing mungkin hampir tidak mungkin, tetapi ketika mereka bekerja bersama, itu disebut Pride.