Blog

๐Ÿ‘ท๐Ÿฝโ€โ™‚๏ธ Membangun Gato GraphQL secara Terbuka #1 (Maret '21)

Leonardo Losoviz
Oleh Leonardo Losoviz ยท

Selamat datang di newsletter "Building in the Open" yang pertama!

Ini adalah saluran untuk berbagi berita mengenai pengembangan Gato GraphQL dengan komunitas, dikirim pada minggu pertama setiap bulan.

Melalui ruang ini, kita akan mengetahui semua yang terjadi selama bulan lalu, termasuk:

โœ… Apa yang telah kami kerjakan, fitur baru apa yang kami rilis
โœ… Apa yang akan kami kerjakan pada bulan mendatang
โœ… Jumlah traffic yang kami dapatkan di situs
โœ… Bagaimana plugin berjalan: Jumlah unduhan, langganan newsletter, bintang GitHub
โœ… Kemajuan dalam mencapai keberlanjutan finansial
โœ… Panduan yang baru diterbitkan
โœ… Ringkasan posting blog yang baru-baru ini kami terbitkan
โœ… Penjangkauan / Penyebutan plugin
โœ… Berita umum

Jika Anda menikmati newsletter ini, silakan ajak teman Anda untuk berlangganan.

Ayo mulai!

Perhatian: Newsletter ini adalah saluran komunikasi dua arah. Jika ada sesuatu yang ingin Anda sampaikan, silakan tambahkan komentar (di bagian bawah posting blog).

Selamat datang di newsletter, oleh tuan rumah Anda

Apa yang sedang kami kerjakan

Jika Anda memperhatikan bagian Panduan, seksi "Extending Gato GraphQL" masih cukup kosong:

Panduan untuk "Extending the plugin" belum selesai

Prioritas saya adalah menyelesaikan panduan-panduan ini. Namun sebelum melakukannya, saya ingin kode plugin sesederhana mungkin. Semakin sederhana, semakin sedikit dokumentasi yang dibutuhkan, dan semakin banyak orang yang mampu memahaminya.

Dengan pemikiran ini, saya memutuskan untuk merefaktor kode agar sepenuhnya berbasis pada Symfony's DependencyInjection Component.

Idenya adalah bahwa setiap ekstensi pada plugin (seperti TypeResolver, FieldResolver atau DirectiveResolver kustom) cukup didefinisikan sebagai layanan dalam container, dan layanan tersebut dikonfigurasi secara otomatis melalui Compiler passes.

Mengandalkan sepenuhnya dependency injection Symfony memiliki beberapa keunggulan:

โœ… Ada satu cara yang konsisten untuk membuat ekstensi
โœ… Cukup dengan membuat kelas PHP yang mengimplementasikan suatu interface, seluruh pekerjaan selesai, dan pengembang tidak perlu mengetahui detail teknisnya
โœ… Dokumentasi Symfony sangat lengkap. Dengan mengarahkan pengembang ke sana, itu adalah dokumentasi yang tidak perlu saya tulis

Tertarik dengan kodenya? Lihat PR saya yang telah digabungkan (#453, #452, #449 dan beberapa lainnya).

Saya akan terus mengerjakan kode ini selama beberapa minggu ke depan, hingga migrasi selesai 100%, dan saya dapat menulis panduan yang masih kurang.

Traffic ke gatographql.com

Izinkan saya menjelaskan sesuatu: saya peduli seberapa banyak orang yang mengunjungi situs web plugin, sebagai proksi untuk mengetahui seberapa banyak orang yang mengenal plugin ini.

Saya tidak memiliki dana besar untuk mempromosikan plugin saya. Dan bahkan jika saya memilikinya, saya tidak akan menghabiskan uang saya untuk mempromosikannya, karena itu bertentangan dengan semangat open source. (Ini akan berbeda jika open source hanya menjadi saluran untuk menjual produk atau layanan tertentu, tapi itu bukan kasus saya.)

Itu berarti saya sepenuhnya mengandalkan promosi dari mulut ke mulut. Untuk itu, saya telah mencurahkan banyak upaya dalam menulis konten berkualitas tinggi untuk blog plugin, berharap konten ini akan dibagikan, menjangkau orang-orang yang sebaliknya tidak akan mengetahui plugin ini.

Dan sejauh ini, saya cukup puas dengan hasilnya.

Selama bulan lalu, saya mendapat 4,5k pengunjung, dengan 6k tampilan halaman:

Tunjukkan uangnya!

Mari kita uraikan statistik ini.

Sebagian besar pengunjung saya berasal dari Hacker News, di mana saya berhasil masuk beberapa halaman depan "Show HN", dan Reddit, sebagian besar dari /r/PHP dan /r/graphql (tempat saya selalu berbagi artikel).

Saya berhasil menduduki peringkat #1 di Google saat mencari "wordpress core graphql", dan itu membawa banyak traffic. Sayangnya, itu hanya sekali: setelah 24 jam, traffic itu pergi secepat kedatangannya. Selain itu, pada hari biasa saya mendapat antara 3 hingga 10 pengunjung dari Google.

Twitter dan Facebook membawa traffic yang cukup besar, tapi saya tidak tahu dari siapa (bukan dari saya, karena saya sangat buruk di media sosial). Saya memang berbagi artikel di Twitter, tapi jarang di-retweet. Dan saya tidak menggunakan ๐Ÿ‘Ž๐Ÿพ Facebook.

(Omong-omong, bagi Anda yang berbagi artikel saya di media sosial, terima kasih โค๏ธ)

Saya mendapat traffic yang sederhana namun konsisten dari daftar server GraphQL dalam PHP di graphql.org, dan dari artikel yang saya terbitkan di dev.to, yang menduduki peringkat #1 saat mencari di Google "graphql execute multiple queries".

Terakhir, artikel saya secara konsisten muncul di newsletter utama WordPress (termasuk WP Owls, wpMail.me, Post Status, WP Builds, dan The WP Weekly). Saya tidak tahu persis seberapa banyak traffic yang dibawa masing-masing, karena referrer akan muncul sebagai Gmail dan sejenisnya. Namun, jika digabungkan, newsletter-newsletter ini menghasilkan jumlah pengunjung yang cukup besar.

Posting blog saya sejauh ini adalah konten paling populer saya, dengan tiga posting terakhir (yang ini, yang ini dan yang ini) masing-masing membawa lebih dari 1k pengunjung.

Angka-angka ini terlihat cukup bagus, terutama mengingat saya baru meluncurkan situs web ini kurang dari 2 bulan yang lalu. Namun, tidak semuanya terlihat baik: Dengan 88%, bounce rate cukup tinggi. Saya perlu bekerja keras untuk itu.

Metrik

Traffic ke situs hanyalah metrik dekoratif, untuk memperkirakan kesadaran akan plugin. Tapi yang jauh lebih penting untuk ditanyakan adalah: Berapa banyak orang yang mulai menggunakan plugin selama bulan lalu?

Reputasi saya mendahului saya

Selama bulan lalu, plugin berjalan seperti ini:

๐ŸŽฏ Jumlah unduhan plugin: 170
โญ๏ธ Bintang GitHub: 27

Jumlah unduhan dapat diambil dari GitHub API, dengan melewatkan parameter per_page=3 untuk hanya menyertakan 3 rilis yang dibuat selama bulan lalu:

curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/GatoGraphQL/GatoGraphQL/releases?per_page=3 | grep "download_count"

Saya tidak senang maupun tidak senang dengan angka-angka ini. Memang tidak luar biasa (dan saya berharap angkanya lebih baik), tapi ini adalah awal yang baik.

Mengenai unduhan, dikatakan bahwa mendapatkan pengguna pertama adalah tugas yang paling sulit. Hanya setelah beberapa orang mulai menggunakan plugin, dan mulai membicarakannya, penggunaannya akan menjadi lebih meluas. Saya masih berada dalam tahap awal ini untuk menemukan kelompok pertama pengguna yang berkomitmen.

Mengenai bintang GitHub, saya harus mengatakan bahwa angkanya terlihat cukup datar: sekitar 1 bintang per hari rata-rata. Ini tentu bukan sesuatu yang luar biasa. Jika Anda menyukai apa yang saya bangun dengan Gato GraphQL, dan Anda tidak keberatan menunjukkan sedikit cinta โค๏ธ, silakan pertimbangkan untuk memberikan โญ๏ธ bintang di GitHub.

Keberlanjutan Finansial

Ini adalah masalah yang pelik: proyek harus berkelanjutan secara finansial. Entah menghasilkan sedikit uang, atau tidak akan bertahan lama.

Inilah hidup saya dipertaruhkan

Jika saya mampu menghasilkan pendapatan untuk diri sendiri, maka saya bisa terus mengerjakannya, selama diperlukan. Itu saja yang saya butuhkan: pendapatan. Bukan investor yang mengetuk pintu saya mencari jutaan. Hanya beberapa ribu per bulan, untuk membayar atap di atas kepala saya.

Tujuan saya adalah menjaga plugin tetap sepenuhnya open source. Untuk itu, saat ini saya sedang menghubungi beberapa sponsor potensial, menanyakan apakah mereka ingin membantu mendanai pengembangan plugin. Ini akan menjadi situasi saling menguntungkan.

Mengapa saya menggunakan pendekatan "sponsor besar", daripada mengandalkan sponsor reguler dari siapa saja di komunitas?

Ya, saya juga sudah mencoba itu: saya ada di GitHub Sponsors. Namun, itu tidak benar-benar berhasil, kecuali Anda sudah memiliki ribuan pengguna, pengikut, atau orang yang berlangganan mailing list Anda, yang dapat Anda hubungi, dengan harapan banyak dari mereka yang akan mendanai Anda.

Misalnya, meminta standar 5 atau 10 USD per bulan, saya membutuhkan beberapa ratus pendana agar pendekatan ini membiayai pekerjaan saya. Dan saya masih jauh dari tahap itu.

Tapi lebih dari itu, siapa yang benar-benar bisa sukses dengan pendekatan ini? Saya tahu bahwa Caleb Porzio (pencipta Livewire) telah berhasil, dan sekarang telah mencapai lebih dari 1350 sponsor! Tapi itu lebih merupakan pengecualian daripada norma.

Ambil Composer, misalnya. Composer secara fundamental telah mengubah cara kita mengembangkan aplikasi PHP, namun mereka hampir tidak memiliki 90 sponsor. Bagaimana saya bisa berharap mendapatkan lebih banyak sponsor daripada Composer?

Itulah mengapa pendekatan saat ini adalah menciptakan situasi saling menguntungkan untuk proyek saya dan beberapa perusahaan yang bersedia mensponsorinya. Mari berharap itu berhasil, dan Gato GraphQL gratis untuk semua orang, untuk semua fitur, dan saya tidak perlu mengunci hal-hal bagus di balik paywall.

(Jika Anda ingin mengetahui bagaimana situasi saling menguntungkan itu, silakan kirim email kepada saya atau DM. Mungkin perusahaan Anda juga tertarik?)

Saya akan memberikan pendekatan ini beberapa bulan, semoga saya bisa mewujudkannya. Jika saya tidak berhasil, barulah saya perlu mempertimbangkan untuk membangun versi PRO dari plugin, dan membatasi beberapa fitur untuk versi berbayar. (Ya, itu akan menjadi hal yang buruk, jadi saya berharap bisa menghindari tahap itu.)

Di newsletter mendatang, saya akan terus memberi tahu Anda apakah saya berhasil mendapatkan sponsor atau tidak.

Posting Blog

Posting blog telah menjadi kebanggaan dan kebahagiaan mutlak saya.

Perhatian: Tahukah Anda ada RSS feed di situs? Anda dapat berlangganan untuk menerima semua posting blog saya, dan membacanya di pembaca favorit Anda.

Selama bulan lalu, saya berhasil menerbitkan posting blog berkualitas tinggi setiap minggu:

๐Ÿ›  Haruskah WordPress memiliki GraphQL API di core? membuat argumen bahwa WordPress dapat memanfaatkan GraphQL, karena WP REST API mendapat fungsionalitas baru di WordPress 5.6 (operasi batch), yang dapat dihadirkan secara native oleh GraphQL API.

๐ŸฅŠ Gato GraphQL vs WPGraphQL: pertarungannya! membandingkan plugin saya dengan WPGraphQL, dalam pertarungan yang akan dikenang sepanjang masa, dan yang akan membuat penggemar tinju terus meminta lebih.

๐Ÿ‘ถ๐Ÿป Meremajakan WordPress melalui GraphQL mendemonstrasikan bagaimana WordPress headless dapat dipisahkan dari codebase WordPress, memberikan kesempatan untuk memperbaiki (atau, setidaknya, melewati) utang teknis yang menumpuk.

๐Ÿพ Gato GraphQL kini sudah di-scope, berkat PHP-Scoper! menjelaskan strategi untuk melakukan scope pada plugin WordPress menggunakan PHP-Scoper, untuk menghindari konflik dengan plugin lain.

Penjangkauan / Penyebutan Plugin

Saya sangat senang plugin ini telah ditampilkan di beberapa tempat.

โœ… Saya telah memberikan ceramah "Intro to Gato GraphQL" di WordCamp India 2021, melakukan demo plugin, dan (mengejutkan karena ini adalah demo) semuanya berjalan sempurna! Lihat video Youtube-nya.

โœ… Joe Howard telah mewawancarai saya untuk podcast WPMRR. Rekamannya akan segera keluar.

โœ… Chris Coyier menampilkan plugin saya di newsletter CSS-Tricks #239!

Ini membuat hari saya menjadi istimewa

Sedikit dari Segalanya

Beberapa berita umum, tentang apa saja yang terjadi selama bulan lalu.

Jason Bahl bergabung dengan WP Engine

Selamat kepada Jason yang bergabung dengan WP Engine! Saya berharap dia akan terus bersemangat, seperti yang telah dia lakukan sejauh ini untuk WPGraphQL.

Omong-omong, fakta bahwa kami adalah pesaing (yah, akulah yang bersaing dengannya, dia jauh lebih maju) tidak berarti kita tidak bisa berteman, atau berkolaborasi untuk meningkatkan proyek masing-masing. Memang, kami berdua berbagi tujuan yang sama: membawa GraphQL ke WordPress (meskipun kami memiliki ide yang berbeda tentang bagaimana hal itu seharusnya terjadi).

Tapi saya percaya bahwa persaingan itu baik, dan akan menguntungkan semua orang.

Ya, persaingan itu baik, selama Anda yang ada di atas

WP Engine meluncurkan Atlas, dan mengklaim mengetahui segalanya tentang headless (apakah demikian?)

Saya juga mengucapkan selamat kepada WP Engine karena meluncurkan Atlas, solusi headless WordPress mereka yang baru.

Sayangnya, mereka menyatakan beberapa informasi yang tidak akurat:

Perusahaan yang menggunakan solusi headless sepenuhnya biasanya akan menghosting aplikasi JavaScript terpisah untuk front end, yang menarik data WordPress spesifik melalui APIโ€”WordPress REST API atau plugin WPGraphQL.

Ya, Gato GraphQL tidak ada, kan?

Hei, saya ada di sini, atau tidak?

Saya biasanya tidak akan terganggu oleh hal ini, karena saya tidak berharap semua orang mengetahui plugin saya. Tapi saya percaya bahwa mereka mengetahui proyek saya, dan mereka tampaknya sengaja mengabaikannya.

Setelah mereka meluncurkan developers.wpengine.com ("pusat satu atap untuk praktik terbaik, tutorial, blog, dan dokumentasi untuk WordPress headless"), saya memang menghubungi mereka:

Saya kira mereka belum menanggapi proyek saya dengan serius. Atau yah, mungkin mereka tidak peduli, karena mereka sepenuhnya berinvestasi di WPGraphQL.

Sekarang, saya tidak masalah jika mereka tidak ingin menyebut plugin saya. Namun, menyatakan bahwa WP REST API dan WPGraphQL adalah satu-satunya dua pilihan sangatlah menyesatkan. Akibatnya, plugin saya dirugikan, dan komunitas pengembang menjadi bingung.

Jadi ya, saya harus mengakui bahwa saya kesal. Ini sungguh tidak menyenangkan. Saya berharap mereka akan memperbaiki informasi yang tidak akurat tersebut (saya sudah mengirim email kepada mereka).

Penutup

Inilah akhir dari "Membangun Gato GraphQL secara Terbuka" yang pertama kali ini.

Bagaimana menurut Anda? Silakan bagikan pemikiran Anda di kolom komentar.

Jika Anda menyukainya, saya akan sangat menghargai jika Anda dapat membagikan newsletter ini kepada teman-teman Anda (atau, lebih baik lagi, ajak mereka untuk berlangganan).

Sampai jumpa bulan depan!


Berlangganan newsletter kami

Tetap update dengan semua pembaruan Gato GraphQL.