Motivasi dan Prinsip

Di bawah ini adalah motivasi dan prinsip-prinsip yang memanfaatkan evolusi format Kartu Adaptif.

Motivasi di balik format

Pada awal 2016, beberapa tim di Microsoft (termasuk Outlook, Windows, dan Bot Framework) menyadari bahwa mereka semua menginginkan sesuatu yang sangat mirip ("kartu") dan masing-masing dari mereka merancang solusi mereka sendiri secara independen:

  • Windows memiliki format Petak Peta Langsung dan Pemberitahuannya sendiri
  • Kerangka kerja Bot menggunakan sekumpulan templat kartu yang telah ditentukan sebelumnya yang dapat dipilih pengembang saat mengirim pesan Bot
  • Outlook menggunakan format MessageCard sendiri untuk fitur Pesan yang Dapat Ditindaktasi

Pada saat yang sama, platform lain seperti LINE, FaceBook Messenger, Slack dan banyak lagi yang mendefinisikan format "kartu" milik mereka sendiri. Jadi beberapa karyawan Microsoft mengumpulkan dan memulai upaya untuk menentukan satu format kartu terbuka dan satu set SDK yang:

  • Akan memfasilitasi pertukaran kartu antara host
  • Akan memungkinkan setiap host untuk menjaga kontrol atas gaya kartu untuk memastikan konsistensi visual
  • Akan memudahkan aplikasi host untuk menampilkan kartu dengan upaya minimum melalui SDK siap pakai
  • Dan itu juga akan memberikan nilai bagi pihak ketiga dan akhirnya diadopsi secara luas oleh industri

Prinsip yang mengatur Kartu Adaptif

  1. Kartu Adaptif adalah format kartu yang sederhana dan deklaratif

    1. Ini tidak dimaksudkan sebagai pengganti HTML atau XAML/alternatif
    2. Tidak ada "kode di belakang" dengan Kartu Adaptif
      1. Penulis kartu tidak dapat menyematkan kode kustom/arbitrer dengan payload mereka, dan akibatnya host Kartu Adaptif tidak perlu menjalankan kode pihak ketiga
      2. Dinamisme dan interaktivitas dicapai hanya melalui markup deklaratif
    3. Hal ini memastikan bahwa upaya yang diperlukan untuk membangun SDK Kartu Adaptif untuk platform baru tetap masuk akal
  2. Format Kartu Adaptif tidak dapat memaksakan penggunaan teknologi tertentu yang mendasar

    1. Format Kartu Adaptif tidak bergantung pada JavaScript, C#, Python, atau bahasa lain
    2. Demikian pula tidak bergantung pada HTML atau XAML atau kerangka kerja grafis/UI lainnya
    3. Dengan cara ini, Kartu Adaptif dapat dirender secara asli pada platform apa pun selama ada perender
  3. Format Kartu Adaptif adalah properti bersama

    1. Seiring dengan SDK-nya, formatnya adalah sumber terbuka dan komunitas evolusinya didorong
    2. Oleh karena itu, format tidak dimiliki atau didorong oleh satu tim
  4. Format Kartu Adaptif tidak dirancang "hanya untuk penggunaan Microsoft"

    1. Sebaliknya dirancang agar sesuai dengan kebutuhan berbagai aplikasi dan kasus penggunaan
  5. Grup Kerja Kartu Adaptif mengatur evolusi format

    1. Grup kerja ini terdiri dari sekumpulan karyawan Microsoft yang semuanya terlibat dalam keberhasilan format
    2. Grup Kerja melakukan rapat mingguan (saat ini pada hari Senin) di mana proposal fitur ditinjau, masalah terbuka dibahas dan di triase dan kemajuan keseluruhan pada item kerja vNext dilacak
    3. Grup Kerja menggunakan umpan balik dari komunitas secara besar-besaran, termasuk tim internal Microsoft, untuk memutuskan bagaimana format berkembang
      1. Siapa pun dapat berpartisipasi dalam grup kerja melalui masalah pembukaan di GitHub (lihat di bawah)
      2. Masalah/permintaan fitur yang berakar pada penggunaan aktual kerangka kerja Kartu Adaptif (baik sebagai host atau sebagai penulis kartu) memiliki dampak paling besar pada masa depan format
    4. Untuk disetujui oleh Grup Kerja, usulan fitur baru:
      1. Harus dibenarkan oleh kasus penggunaan kehidupan nyata
      2. Harus memiliki spesifikasi fungsi
    5. Fitur baru yang disetujui ditambahkan ke backlog dan dipertimbangkan untuk vNext
      1. Kriteria yang digunakan untuk memprioritaskan fitur baru termasuk luasnya skenario yang diaktifkan fitur, kompleksitas/pemeliharaannya, dan banyak lagi
      2. Jika ragu, jauhkan itu! Lebih mudah untuk memperkenalkan fitur yang dirancang dengan baik lebih lambat daripada hidup dengan kesalahan selamanya.
    6. Semua fitur baru diimplementasikan di semua SDK yang didukung
    7. Semua fitur baru di dokumentasikan dan dikaitkan dengan kartu uji yang diterbitkan di folder sampel
    8. Versi baru format dan SDK melalui fase beta
    9. Jadwal rilis untuk skema Kartu Adaptif dan versi SDK didorong oleh kualitas, bukan tanggal
  6. Interoperabilitas

    1. Kartu yang ditulis sesuai dengan format yang di dokumentasikan (misalnya tidak menggunakan ekstensi khusus host) akan dirender dengan benar dalam host berkemampuan Kartu Adaptif apa pun
    2. Satu-satunya pengecualian untuk prinsip-prinsip ini adalah:
      1. Beberapa host mungkin tidak mengizinkan interaktivitas, dan oleh karena itu tidak akan merender input atau tindakan
      2. Eksekusi tindakan Action.Submit adalah atas kebijakan host, dan tidak semua host harus menangani semua payload Action.Submit dengan benar. Selain itu, beberapa host mungkin tidak mendukung Action.Submit sama sekali
  7. Format perlu diperluas

    1. Host harus memiliki kebebasan menambahkan dukungan untuk elemen kustom atau tindakan kustom yang melampaui apa yang mampu dilakukan format
    2. Ini sangat penting untuk tindakan, karena berbagai host tidak selalu mendukung serangkaian tindakan yang sama
    3. Penambahan ini sesuai kebijaksanaan host
      1. Ini bukan tambahan de facto untuk spesifikasi Kartu Adaptif
      2. Dengan demikian, mereka membuat payload yang menggunakannya tidak kompatibel dengan format Kartu Adaptif mainstream
      3. Namun mereka dapat disajikan ke Grup Kerja dan diusulkan sebagai fitur baru untuk versi format di masa mendatang, seperti yang dijelaskan dalam poin #5
  8. Penulis kartu memiliki konten, menghosting aplikasi yang memiliki tampilan dan nuansa

    1. Aplikasi host memaksakan gaya mereka sehingga kartu terlihat dan terasa seperti ekstensi asli dari pengalaman aplikasi
    2. Penulis kartu masih dapat menentukan gaya, tetapi hanya melalui ekspresi semantik warna, ukuran, dll.
  9. SDK akan disediakan untuk platform pengembang paling populer

    1. SDK memudahkan untuk merender payload Kartu Adaptif di host apa pun
    2. Ini memastikan hambatan untuk masuk serendah mungkin untuk pengembang pihak ketiga dan tim Microsoft