Dalam buku OS saya baru saja membaca bahwa, "API Publik selamanya: Hanya satu kesempatan untuk memperbaikinya". Apakah itu benar Apakah hanya berlaku di API Sistem Operasi atau API lain juga? Misalnya, apakah ini berlaku untuk API Aplikasi Android seperti Tasker, Lokal dan Pushover?
android
api
api-design
Md Mahbubur Rahman
sumber
sumber
Jawaban:
Secara umum berlaku untuk API publik apa pun, ya. Setelah Anda mengekspos API ke publik dan orang-orang mulai membangun aplikasi yang bergantung pada API itu, menjadi sangat sulit untuk mengubah API karena hal itu akan merusak semua aplikasi tersebut. Itu cenderung menjadi masalah teknis yang sulit dan masalah politik yang sulit.
Tentu saja, dimungkinkan untuk mengubah API publik. Misalnya, proyek akan menurunkan API dalam satu rilis, memperkenalkan API baru, dan kemudian menghapus API lama di beberapa rilis mendatang. Tetapi itu mengasumsikan bahwa setiap aplikasi (penting) yang menggunakan API lama akan ditulis ulang untuk menggunakan API baru sebelum API lama dihapus. Itu seringkali membutuhkan beberapa tahun. Dan itu berarti bahwa pemilik API publik membebankan biaya pada setiap proyek lain yang menggunakan API. Karena umumnya ada jauh lebih banyak konsumen API, konsumen tersebut cenderung menjadi lobi politik yang relatif kuat.
sumber
Penulis kutipan adalah Joshua Bloch, pernyataan itu dari artikel Desain Bumper-Sticker API-nya :
Untuk perincian lebih lanjut tentang itu, penulis merujuk pembaca ke presentasi sesi konferensi, "Bagaimana Mendesain API yang Baik dan Mengapa Itu Penting" . Slide Mengapa Desain API Penting bagi Anda menyatakan dengan jelas bahwa ini relevan dengan aktivitas pemrograman apa pun (sistem operasi atau tidak, tidak masalah bagi penulis):
Kesimpulan Slide juga menekankan ini sebagai pendekatan umum:
sumber
API selalu berubah, jika tidak, apa gunanya peningkatan sistem? Mengubah internal saja?
Setiap versi sistem membawa API baru, API lama menjadi usang dan API usang menghilang.
Perubahan API hanya harus sangat berhati-hati baik secara teknis maupun dalam hal komunikasi.
sumber
Pendapat saya adalah bahwa setelah dirilis, 'versi' API itu selamanya, tetapi Anda dapat mencabutnya dengan merilis '2.0' API (ada beberapa contoh di mana ini terjadi - saat ini, saya bisa memikirkan Strava yang telah merilis versi 2.0 dari API untuk pengembangan yang tidak menggunakan layanan mereka).
Masalahnya mendukung infinitum iklan API asli ... Saya kira itu tergantung pada penggunaan API lama, dan berapa nilai yang dimiliki konsumen API untuk Anda.
Kembali ke 'masa lalu' katakanlah Windows 3.x dan 9x dll., Begitu rilis, OS OS tersebut telah selesai dan diatur. Sekarang, pembaruan OS didorong sepanjang waktu, sehingga API baru dapat dirilis, tapi saya pikir selama Anda menjalankan rasa OS tertentu (rilis utama), API tersebut hanya akan ditambahkan, tidak pernah dihapus ... mungkin tidak menjadi kasus untuk rilis besar 'berikutnya' sekalipun.
Hmm, mungkin saya menyimpang dari maksud pertanyaan aslinya.
sumber
Itu tergantung pada jenis API itu (dan saya berasumsi melanggar perubahan, kalau tidak, pernyataan itu jelas tidak benar).
Jika pemanggil dapat memilih versi apa yang mereka gunakan (misalnya dengan pustaka / kerangka kerja yang dibundel dengan aplikasi panggilan), maka mengubah API bukanlah masalah besar - tetapi masih buruk untuk reputasi perangkat lunak. Orang-orang suka meng-upgrade dengan mulus.
Di sisi lain, ketika orang tidak dapat terus menggunakan versi lama API (seperti dengan layanan online, atau hal-hal seperti browser atau OS di mana menjalankan versi lama sangat tidak diinginkan), maka mengubah API dengan cara yang tidak kompatibel sangat buruk memang, karena itu akan merusak semua perangkat lunak yang menggunakannya dan tidak diperbarui juga. Ini membebankan biaya pemeliharaan pada pengembang, dan mereka akan membenci Anda karenanya. Dan perangkat lunak yang tidak terawat dan rusak akan berdampak buruk pada Anda juga.
Di sisi lain, ada setidaknya satu penyedia API yang terus - menerus memperkenalkan perubahan pada API dan tetap berhasil dengan sangat luar biasa: Facebook. Tetapi mereka mengelola perubahan dengan sangat hati-hati: ada kebijakan yang dipublikasikan , melanggar perubahan diumumkan dan dijelaskan setidaknya 90 hari sebelumnya, dan pengembang dapat memilih untuk mengaktifkannya lebih awal dalam jangka waktu tersebut.
sumber
Jika Anda memiliki pandangan ke depan untuk memasukkan nomor versi dalam API itu sendiri. Baik pada panggilan koneksi / inisialisasi, atau, di suatu tempat dekat awal daftar parameter pada setiap panggilan, maka API Anda dapat berevolusi dan bermutasi dari waktu ke waktu tanpa mengganggu klien yang ada.
sumber
Meskipun semua yang kami lakukan adalah membuat mereka terbaik dalam sekali jalan, tetapi karena perubahan waktu dan peningkatan datang, kadang-kadang kita perlu memperbarui informasi, karena banyak penyedia raksasa telah melakukan, (seperti beberapa buku muka diperbarui, twitter satu utama beralih ke oAuth dan beberapa program besar, tetapi paling mungkin semuanya disertai dengan peningkatan sehingga tidak ada perubahan yang sering. Dan Ya, tolong jangan berhenti mendukung yang lebih lama, itu menyakitkan !! :)
sumber
Kapan saja Anda merilis segala jenis protokol komunikasi, yang jelas akan mencakup API, Anda memiliki satu kesempatan untuk memperbaikinya dalam arti bahwa protokol / antarmuka harus kompatibel-mundur dan dapat diperluas.
Ini memungkinkan Anda untuk menambahkan fungsionalitas baru dan merilis versi baru tanpa harus khawatir tentang melanggar orang yang menggunakan versi yang lebih lama. Tidak pernah di dunia perangkat lunak Anda akan memiliki situasi di mana Anda hanya dapat memiliki cutover keras pada titik waktu tertentu, dan semua orang menjatuhkan versi lama dan mulai menggunakan versi baru.
sumber