Belajar Curl - Sejarah, Latar Belakang & Mengapa Membutuhkan Curl
Episode 1 of 23

Belajar Curl - Sejarah, Latar Belakang & Mengapa Membutuhkan Curl

Menelusuri perjalanan curl dari awal mula sebagai httpget pada 1996 hingga menjadi standar de-facto transfer data berbasis URL yang dipakai di hampir semua sistem operasi, serta memahami mengapa satu tool bisa mengatasi puluhan protokol sekaligus.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Setelah di episode 0 kita menyiapkan environment — memastikan curl 8.21.x terinstall dan terverifikasi — pada episode ini kita akan menarik napas sejenak dari hands-on dan memahami mengapa curl ada. Sejarah dan latar belakang sebuah tool mungkin terasa tidak penting, padahal justru di sanalah letak alasan mengapa desainnya seperti sekarang.

Mengapa harus memahami sejarah curl? Karena curl bukan proyek yang lahir dari ruang rapat perusahaan, melainkan dari sebuah kebutuhan nyata yang sangat sederhana di tahun 1996. Memahami asal-usulnya akan menjelaskan banyak keputusan desain — mengapa curl mendukung puluhan protokol, mengapa ia hadir sebagai CLI sekaligus library, dan mengapa hingga hari ini ia masih jadi pilihan pertama jutaan engineer. Kalian akan menyadari bahwa curl bukan sekadar "perintah untuk download", melainkan sebuah standar de-facto yang berusia lebih dari 25 tahun.

Awal Mula: httpget (1996)

Cerita curl dimulai di Swedia, di tangan seorang pengembang bernama Daniel Stenberg. Pada tahun 1996, Daniel sedang mengerjakan Irssi — sebuah IRC client — dan ingin menyediakan fitur bagi pengguna IRC untuk mengecek nilai tukar mata uang secara otomatis. Untuk itu ia perlu mengambil data dari server berbasis HTTP.

Masalahnya, saat itu belum ada tool yang praktis untuk tugas sederhana tersebut. Alat yang ada terasa berat dan tidak pas. Maka, seperti kebiasaan engineer yang baik, Daniel menulis tool kecilnya sendiri dan menamainya httpget — persis seperti namanya: tool untuk get (mengambil) lewat HTTP.

httpget tumbuh bersama kebutuhan. Pengguna Irssi menginginkan dukungan protokol lain — mulai dari FTP, lalu gopher. Kode httpget mulai "beranak pinak" dan setiap cabangnya membawa salinan masing-masing — sebuah mimpi buruk pemeliharaan. Pada tahun 1998, Daniel mengambil keputusan untuk menyatukan semua cabang itu dalam satu proyek baru yang diberi nama curl — yang secara populer diartikan sebagai Client for URL.

Note

Jangan tertukar: httpget (1996) adalah nama awal tool tersebut, dan curl (1998) adalah nama yang dipakai sampai hari ini. Tanggal lahir yang sering dikutip untuk "curl" adalah tahun 1998 — ketika seluruh kode dirombak dan dipersatukan di bawah satu nama.

Lahirnya libcurl: Mesin yang Bisa Dipinjam Siapa Saja

Satu keputusan yang mengubah segalanya terjadi di awal 2000-an. Ketika curl semakin populer, orang-orang mulai bertanya: "bisakah saya memakai mesin transfer milik curl di dalam program saya sendiri?"

Daniel menjawab dengan memisahkan inti mesin transfer menjadi sebuah library terpisah bernama libcurl. Sejak saat itu, curl secara resmi terdiri dari dua wajah:

  1. curl — program CLI yang kita ketik di terminal.
  2. libcurl — library yang bisa dipanggil dari bahasa pemrograman apa pun.

Keputusan ini sangat strategis. libcurl memungkinkan aplikasi lain — browser, aplikasi mobile, server, tool backup — meminjam kemampuan transfer data curl tanpa menulis ulang dari nol. Inilah yang membuat curl bukan sekadar tool populer, tapi fondasi infrastruktur: jutaan aplikasi di seluruh dunia menjalankan libcurl tanpa disadari penggunanya.

curl -L https://example.com

Perhatikan contoh di atas: hal yang sama — ambil halaman dan ikuti redirect — di CLI cukup satu baris, sedangkan di libcurl butuh beberapa panggilan API. CLI menyembunyikan semua detail di balik opsi-opsi sederhana; libcurl memberi kontrol penuh bagi pengembang. Kedua wajah ini akan kita bedah lebih dalam di episode 2.

Standar De-Facto Selama 25+ Tahun

Sejak dipersatukan pada 1998, curl terus dirilis secara konsisten hingga hari ini. Sampai versi 8.21.0, proyek ini sudah menempuh sekitar 275 rilis — hampir satu rilis setiap enam minggu selama lebih dari dua dekade. Ini bukti proyek yang hidup dan dikelola dengan disiplin.

Mengapa curl bisa bertahan dan mendominasi? Beberapa alasan:

  • Portabilitas. curl dikompilasi dan berjalan di hampir semua sistem operasi: Linux, macOS, Windows, BSD, Android, hingga perangkat embedded. Nyaris mustahil menemukan sistem modern yang tidak memilikinya.
  • Stabilitas. Antarmuka opsi CLI dan API libcurl sangat dijaga kompatibilitasnya ke belakang. Script yang kalian tulis hari ini masih akan berjalan di curl versi tahun depan.
  • Keterbukaan. Proyek open source dengan lisensi permisif, sehingga bebas dipakai perusahaan mana pun tanpa kekhawatiran lisensi.

Analoginya: seperti TCP/IP atau JSON — teknologi yang jarang disadari kehadirannya, tetapi menjadi standar tak tertulis yang menopang seluruh internet. Curl adalah salah satu dari sedikit tool yang bisa dikatakan "ada di mana-mana".

Masalah yang Dipecahkan Curl

Inti masalah yang dipecahkan curl sangat sederhana untuk diucapkan, tetapi sulit dikerjakan dengan baik: satu tool untuk mentransfer data lewat URL syntax di berbagai protokol.

Sebelum curl, setiap protokol membutuhkan tool berbeda: ftp untuk FTP, telnet untuk Telnet, dan seterusnya. Curl menyatukan semuanya dengan satu syntax yang sama — URL. Ini dia daftar protokol yang didukung curl 8.21:

KategoriProtokol
WebHTTP, HTTPS, WebSocket (ws, wss)
File transferFTP, FTPS, SFTP, SCP, TFTP
EmailSMTP, SMTPS, POP3, POP3S, IMAP, IMAPS
DirektoriLDAP, LDAPS
MessagingMQTT
Remote accessTELNET
LainnyaDICT, GOPHER, SMB, SMB (CIFS)

Dengan satu syntax yang sama, kalian bisa mengirim file ke server FTP dengan curl ftp://..., membaca email dengan curl imap://..., atau berkomunikasi dengan broker MQTT — tanpa berganti tool.

Skenario Penggunaan Utama

SkenarioMengapa Curl
Scripting & otomasiCLI murni, mudah dipanggil dari bash/Python, exit code yang jelas
Testing APIHeader, method, dan body bisa diatur penuh; output mudah dipipakan ke jq
CI/CDTersedia di hampir semua image builder dan runner
Troubleshooting jaringanVerbose mode memperlihatkan detail DNS, TCP, TLS, dan HTTP

curl CLI vs libcurl: Kapan Menggunakan Mana?

Kalian akan menghabiskan sebagian besar series ini dengan curl CLI, jadi mari tetapkan batasnya sejak awal. Cek dulu build kalian — daftar protokol dan fiturnya bisa dibaca lewat curl --version:

  • Gunakan curl CLI ketika kalian bekerja di terminal: mencoba API, debugging, menulis script bash, atau mengotomasi sesuatu di server.
  • Gunakan libcurl ketika kalian membangun aplikasi yang butuh transfer data secara terprogram — misalnya menambahkan kemampuan upload ke aplikasi desktop, atau fitur download di server internal.

Satu hal yang menenangkan: semua yang kalian pelajari di CLI berlaku juga di libcurl. Setiap opsi CLI pada dasarnya adalah pembungkus dari satu pengaturan libcurl — -L adalah CURLOPT_FOLLOWLOCATION, -d adalah CURLOPT_POSTFIELDS, dan seterusnya. Belajar CLI adalah jalan terpendek menuju pemahaman libcurl.

Timeline Singkat

TahunTonggak
1996Daniel Stenberg menulis httpget untuk data nilai tukar di Irssi
1998Seluruh cabang kode dipersatukan sebagai curl
2000-an awallibcurl dipisahkan menjadi library mandiri
2026Rilis 8.21.0, sekitar rilis ke-275

Penutup

Pada episode 1 ini, kalian telah menelusuri perjalanan curl dari sebuah kebutuhan sederhana di IRC pada 1996 — httpget — hingga menjadi standar de-facto transfer data berbasis URL yang berusia lebih dari 25 tahun dan berjumlah sekitar 275 rilis. Kalian juga memahami dua wajah curl (CLI dan libcurl) serta permasalahan nyata yang dipecahkannya: satu tool untuk puluhan protokol.

Inti yang harus dibawa pulang:

  • Curl lahir dari kebutuhan nyata (1996) dan dipersatukan sebagai proyek pada 1998.
  • libcurl adalah mesin transfer yang bisa dipinjam aplikasi lain; curl CLI adalah wajahnya yang paling populer.
  • Dukungan puluhan protokol lewat satu syntax URL adalah diferensiator utamanya.
  • Di balik kesederhanaannya, curl adalah infrastruktur internet — bukan sekadar tool download.

Di episode 2 selanjutnya, kita akan membedah konsep dasar dan arsitektur utama curl — apa yang sebenarnya terjadi di balik satu baris perintah: dari parsing URL, resolusi DNS, koneksi TCP/TLS, hingga pengiriman dan penerimaan data. Kita juga akan mengenal opsi-opsi inti dan bahasa exit code yang akan menemani kalian sepanjang series. Sampai jumpa di episode 2!

Belajar Curl - Sejarah, Latar Belakang & Mengapa Membutuhkan Curl | Belajar Curl