Apa itu "hulu"?

27

Saya selalu mendengar orang mengatakan lebih baik untuk "menggabungkan upstream" dan hal-hal seperti itu ketika datang untuk merancang perangkat lunak dan sejenisnya. Saya merasa ada hubungannya dengan hal-hal kernel linux mainstream tapi saya mungkin salah.

Dan juga, apa kebalikan dari "hulu". Jika tidak baik untuk pergi "hulu" apa alternatifnya dan mengapa?

n0pe
sumber

Jawaban:

33

Hulu mengacu pada pencetus komponen yang sedang dibahas.

Misalnya jika Anda menulis klien torrent yang didasarkan pada libtransmission, maka bug ditemukan di klien Anda yang dilacak kembali ke libtransmission. Bug diperbaiki dengan tambalan yang sekarang termasuk dalam klien Anda.

Menggabungkan patch ke hulu dalam konteks ini berarti mengirim patch ke penulis libtransmission untuk dimasukkan. Dengan cara ini perbaikan akan disebarkan ke setiap proyek yang didasarkan pada libtransmission.

Alternatif untuk menggabungkan upstream adalah menjaga patch untuk diri Anda sendiri.

plco
sumber
Jadi menggabungkan semuanya di hulu sejalan dengan mentalitas Open-Source? Satu perbaikan untuk beberapa perangkat lunak?
n0pe
4
Menggabungkan upstream adalah sesuatu yang dapat Anda lakukan dengan perangkat lunak sumber terbuka karena Anda memiliki akses ke sumbernya dan Anda dapat menemukan dan memperbaiki sendiri bug. Dalam sumber tertutup, sebagian besar pihak tidak memiliki akses seperti itu (walaupun dalam beberapa situasi lisensi dapat memasukkannya) sehingga mereka terbatas untuk melaporkan bug dan / atau menemukan solusi. Hulu mengacu pada pendekatan multilayer untuk mengembangkan perangkat lunak dan juga berlaku untuk perbaikan bukan hanya perbaikan bug.
plco
Dengan kata lain: "hulu" berarti "dari siapa Anda mendapatkan sumbernya"; di luar dunia Open Source, tidak ada hulu, karena Anda tidak mendapatkan sumber sama sekali. =)
rakslice
21

Menggunakan Ubuntu sebagai contoh.

Ubuntu adalah distribusi yang mengemas banyak perangkat lunak bersama, kecil dan besar. Ada driver grafis, server X, dan Gnome, antara lain. Ubuntu sendiri tidak mengembangkan perangkat lunak itu. Ubuntu "hanya" mengemas perangkat lunak bersama, memastikan bahwa masing-masing komponen bekerja bersama. Semua perangkat lunak yang disatukan oleh Ubuntu disebut upstream dari sudut pandang Ubuntu.

Dalam proses menggabungkan semua perangkat lunak itu bersama bug mungkin muncul. Bugnya mungkin ada di salah satu komponen perangkat lunak, misalnya gnome, atau mungkin dengan cara yang sangat khusus Ubuntu dalam melakukan sesuatu. Lagi pula, distribusi adalah distribusi karena melakukan beberapa hal dengan caranya sendiri yang sangat istimewa.

Jika bug disebabkan oleh cara Ubuntu melakukan sesuatu, maka Ubuntu harus memperbaiki bug itu sendiri. Jika bug sebenarnya ada di salah satu komponen perangkat lunak, misalnya Gnome, maka Ubuntu harus menambal Gnome. Ketika Ubuntu mengirim kembali tambalan ke Gnome, maka yang lain juga dapat mengambil manfaat dari tambalan itu, lalu Ubuntu mengirim tambalan itu ke atas .

Jika Ubuntu memutuskan untuk tidak mengirim tambalan itu ke atas, atau proyek upstream menolak tambalan itu (tetapi ubuntu memutuskan untuk tetap menyimpan tambalan itu), maka secara teknis Ubuntu telah memotong proyek itu.

Kebalikan dari upstream adalah downstream, Ubuntu downstream dari Gnome. Saya tidak mendengar / membaca istilah yang sering digunakan.

Lihat juga artikel tentang hulu di Wikipedia.

lesmana
sumber