"API Publik selamanya: Hanya satu peluang untuk melakukannya dengan benar"?

20

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?

Md Mahbubur Rahman
sumber
2
Saya akan memperluas prinsip untuk semua kode. Tidak cukup waktu untuk menulis hal yang sama beberapa kali. Menulis kode sempurna adalah keterampilan yang bisa dipelajari.
tp1
22
@ tp1: menulis kode sempurna adalah keterampilan yang tidak ada di dunia nyata.
Michael Borgwardt
4
@ Michael Borgwardt: Hanya perlu memilih versi yang sempurna untuk digunakan.
tp1
1
Saya pernah melihat ini di dunia nyata, dan itu tergantung pada jenis API apa. Hal yang dipelajari: persyaratan pertama dalam API web "yang menghadap publik" adalah kemampuan bagi pengguna API untuk memilih versi API mana yang akan mereka gunakan.
Josh Petitt

Jawaban:

32

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.

Gua Justin
sumber
2
"baik masalah teknis yang sulit dan masalah teknis yang sulit" Anda mengulangi "teknis" dua kali.
luiscubal
12
@luiscubal: itu karena memang masalah teknis yang sangat sulit.
Michael Borgwardt
3
@luiscubal Maksudmu sekali. Diulangi sekali, kata dua kali.
Joe Z.
4
"Jawaban Publik tidak selamanya ..."
Chris
3
@ Chris Tidak juga. Jawaban Justin sekarang tidak lagi sesuai dengan komentar luiscubal. :-)
svick
12

Penulis kutipan adalah Joshua Bloch, pernyataan itu dari artikel Desain Bumper-Sticker API-nya :

API publik, seperti berlian, selamanya. Anda memiliki satu kesempatan untuk melakukannya dengan benar, jadi berikan yang terbaik.

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):

  • Jika Anda memprogram, Anda adalah perancang API

    • Kode yang baik bersifat modular - setiap modul memiliki API
  • Modul yang berguna cenderung digunakan kembali

    • Setelah modul memiliki pengguna, tidak dapat mengubah API sesuka hati
    • Modul yang dapat digunakan kembali dengan baik adalah aset perusahaan
  • Berpikir dalam hal API meningkatkan kualitas kode

Kesimpulan Slide juga menekankan ini sebagai pendekatan umum:

  • Desain API adalah kerajinan yang mulia dan bermanfaat

    • Meningkatkan banyak programmer, pengguna akhir, perusahaan ...
agas
sumber
2
Secara teknis berlian adalah metastabil. Secara termodinamika, grafit adalah bentuk karbon yang lebih stabil.
detly
3

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.

mouviciel
sumber
Selama Anda dapat berkomunikasi dengan semua konsumen Anda dengan baik dan mereka dapat berbicara dengan penggunanya - lihat Windows: Windows memiliki berton-ton API yang lama, usang, dan buruk karena pengguna akhir suka menjalankan aplikasi yang sangat lama bahkan pada sistem modern
johannes
2

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.

Maich
sumber
1

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.

Michael Borgwardt
sumber
1

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.

James Anderson
sumber
0

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 !! :)

rptwsthi
sumber
-1

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.

Fred Thomsen
sumber