Pada tahun 2005, saya berada di tengah-tengah banyak hal. Saya bekerja sebagai konsultan kinerja independen, dan Sun Microsystems baru saja merilis DTrace, sebuah produk yang dapat melengkapi perangkat lunak apa pun. Dia memberi analis kinerja fungsi "penglihatan sinar-x". Saat menulis dan menerbitkan alat penelitian kinerja berbasis DTrace canggih ( DTraceToolkit open source saya dan alat DTrace lainnya , yaitu, skrip), saya melihat sesuatu yang aneh: Saya menerbitkan lebih banyak alat DTrace daripada yang dirilis Sun sendiri. Mungkin ada semacam proyek internal di mana semua orang yang mengenal DTrace sibuk?
DTraceToolkit v0.96 (2006)
Karena saya bukan karyawan Sun Microsystems, saya tidak mengetahui rahasia proyek internal perusahaan. Namun, saya melakukan pelatihan dan konsultasi untuk Sun, membantu klien perusahaan dengan administrasi dan kinerja sistem. Terkadang Sun mengundang saya ke pertemuan klien mereka dan acara lain yang menarik bagi saya sebagai profesional lokal. Kemudian saya tinggal di Sydney (Australia).
Suatu kali saya diberitahu bahwa seseorang yang sangat penting akan datang dari Amerika Serikat, dengan siapa saya tertarik untuk bertemu. Saya tidak ingat namanya, tetapi saya diberitahu bahwa ini adalah spesialis dan pengembang DTrace dari Sun yang terbang ke seluruh dunia dan berbicara tentang produk Sun baru berdasarkan DTrace. Ah! Mungkin proyek internal yang sama!
Tapi ini harus menjadi proyek yang luar biasa. Saya telah melihat beberapa teknologi hebat Sun, tetapi saya belum pernah mendengar tentang pengembang yang melakukan tur dunia. Ini akan menjadi sangat keren dan kemungkinan besar tidak meninggalkan kebutuhan bisnis yang terlewat dari proyek DTrace saya sebelumnya.
VIP ini kembali selama beberapa hari di Sydney sebelum melakukan perjalanan ke kota Australia berikutnya, jadi kami mengatur untuk bertemu di kantor Sun's Sydney.
Pertemuan
Teknisi DTrace tiba dengan setelan bisnis standar dan memiliki aksen Amerika yang kuat dalam suaranya. Jelas bahwa dia sedikit lelah dengan tur dunia. Dia baru saja terbang dari Afrika Selatan dan Selandia Baru, dan mendaftarkan negara dan kota lain yang akan dia kunjungi selanjutnya. Dua lagi karyawan Sun Australia bergabung dalam pertemuan kami. Salah satu dari mereka memperkenalkan saya:
"Brendan mengajar kursus dengan kami dan dia terlibat dalam proyek DTrace."
Pandangan yang rendah hati seperti itu adalah norma di Australia (terutama bagi orang Australia), dan saya bertanya-tanya apakah dia memahami perbedaan budaya ini. Perbedaan lainnya adalah pada tahun 2005 terdapat beberapa posisi engineering di Australia, tidak seperti di Amerika Serikat. Misalnya, semua karyawan Sun Microsystems Australia terlibat dalam dukungan, tetapi tidak dalam pengembangan, dan raksasa teknologi lainnya belum memasuki pasar. Artinya, pada masa itu di Australia, para insinyur yang luar biasa mengambil pekerjaan apa pun yang tersedia.
Saya mencoba menjelaskan lebih detail apa yang dimaksud dengan "bekerja" dengan mengatakan bahwa saya menulis DTraceToolkit, tetapi dia tidak terkesan. Dia tidak tahu nama saya dan belum pernah mendengar tentang DTraceToolkit. Baginya, saya hanyalah orang biasa.
Namun, dia dengan baik hati setuju untuk menunjukkan kepada saya demo kecil. Produknya yang berbasis DTrace adalah tambahan untuk GUI Sun besar yang sudah saya kenal. Setelah diunduh, ini menunjukkan kepada Anda cara meluncurkan salah satu dari beberapa alat DTrace dengan mengklik dua kali ikon tersebut. Alat ini dapat menampilkan data mentah di jendela terpisah, atau menampilkan hasilnya sebagai grafik garis. Tampaknya cukup biasa-biasa saja . GUI sudah memiliki fungsi ini dan saya berharap untuk fitur GUI baru.
Satu-satunya hal baru adalah instrumen itu sendiri, yang jumlahnya cukup banyak. Dia secara singkat berbicara tentang kemampuan pengawasan baru yang luar biasa yang mereka berikan (kemungkinan besar, dia telah mengatakan ini berkali-kali dalam upaya untuk mengesankan klien). Saya mendapat perasaan bahwa dia tidak mengharapkan saya untuk sepenuhnya menghargai nilai mereka.
Tapi saya sebenarnya tahu tentang alat ini karena saya mengkodekan fungsi serupa untuk DTraceToolkit saya. Mereka berguna ... tapi saya mengharapkan fitur DTrace baru yang mengagumkan .
"Saya telah melakukan ini sebelumnya, saya telah menulis sendiri alat yang melakukan fungsi-fungsi ini!"
"Yah, ya, tentu saja," dia tidak menjawab seperti itu, tetapi tatapannya fasih - dia tidak mempercayai saya dan tidak berpikir bahwa saya sepenuhnya menyadari kebutuhan mereka. Itu adalah inovasi besar bernilai miliaran dolar dari Sun Microsystems multinasional AS. Dan saya hanyalah orang Australia biasa.
Pelacakan soket
Saya mencari di antara ikon GUI untuk sesuatu yang baru untuk diri saya sendiri, dan yang paling menarik adalah alat untuk melacak soket I / O. Saya mencoba bekerja dengannya pada tahun 2004 ( socketsnoop.d ) dan menerbitkan hasil yang dihasilkan dalam open source, tetapi alat saya tidak sempurna: Saya tidak memiliki akses penuh ke kode sumber kernel, jadi saya hampir tidak perlu mengetahuinya sendiri dengan menganalisis kotak hitam". Ini bekerja dengan sebagian besar jenis lalu lintas TCP, tetapi tidak dengan yang lain, yang saya laporkan di komentar ke skrip. Juga, saya tidak menambahkannya ke DTraceToolkit karena menurut saya alat itu belum lengkap. Oleh karena itu, dari semua instrumennya, ini yang paling menarik bagi saya. Sun bisa melakukan jauh lebih baik karena memiliki kode sumber dan menyelesaikan alatnya.
โBisakah saya melihat skrip soket I/O?โ Saya membuka terminal. Pada awalnya, pengembang tampak sibuk, seolah-olah saya tidak boleh mengintip di balik layar, tetapi kemudian dia menyadari bahwa ini adalah nilai jual lain dari produk: "Ya, tentu saja, Anda bahkan dapat menambahkan alat baru ke GUI!" Setelah jeda, dia menambahkan: "Jika, tentu saja, Anda memilikinya." Saya memilikinya, itu pasti. Dia memberi tahu saya jalan yang harus dicari, dan setelah beberapa saat saya sampai ke folder dengan semua alat yang dia tunjukkan.
Semua instrumen memiliki nama yang familiar. Salah satunya bahkan disebut socketsnoop.d. Kecurigaan muncul dalam diri saya.
Tidak bisa.
Saya telah mencetak socketsnoop.d. Skrip saya sendiri muncul di layar ... Ini adalah upaya yang belum selesai yang sama yang saya lakukan setahun sebelumnya dan diterbitkan sebagai open source. Itu berisi kode aneh yang tampak logis bagi saya pada saat itu (menggunakan PFORMAT sebelum defaultargs) dan ditulis dengan gaya lama saya. Saya sedang membaca naskah saya .
"Ini adalah naskah SAYA."
Saya membuka beberapa instrumen lagi, dan di mana-mana saya melihat hal yang sama - semuanya milik saya . Produk Sun baru yang luar biasa yang telah dipromosikan oleh Mr. VIP di seluruh dunia ini sebenarnya adalah alat open source saya sendiri.
Rahang saya jatuh. Tapi sepertinya dia tidak percaya padaku.
Anda tidak bisa melakukan ini
Menggunakan grep, saya mencari semua alat untuk nama saya, yang ditunjukkan dalam komentar pertama di semua alat saya, untuk membuktikan bahwa itu milik saya. Tapi saya tidak menemukan apa-apa. Nama saya dihapus.
Beberapa alat bahkan memiliki garis:
# Penulis: Brendan Gregg [Sydney, Australia]
Dan sekarang pria ini telah datang ke Sydney dan mencoba menjual peralatan Brendan Gregg kepada Brendan Gregg.
Salah satu karyawan Sun Australia menyela saya, "Ini hak cipta Sun Microsystems di mana-mana." Sebagian besar alat saya menyertakan hak cipta dan lisensi GPLv2 atau CDDL saya. Tapi ini hanya berisi pesan hak cipta Sun standar, dan lisensi open source dipotong.
โKamu menghapus namaku! Dan hak cipta dengan lisensi!"
Orang Australia kedua memberi tahu tamu itu: โAnda tidak bisa melakukan ini". Keheningan menguasai ruangan, semua orang yang hadir mencoba memahami apa yang telah terjadi. Sementara beberapa orang di Sun memotivasi pengembang untuk berkontribusi pada open source dan membangun komunitas, yang lain merampok komunitas. Mereka mengambil karyanya, mengubah lisensi dan hak cipta, dan kemudian menjualnya.
Tamu itu tidak siap untuk ini dan tampak bingung. Dia tetap singkat, hanya mengatakan bahwa dia tidak mengerti bagaimana ini terjadi, bahwa dia bisa saja diberikan instrumen dalam bentuk ini (baca: jangan salahkan saya). Sepertinya dia hanya sebagian mempercayai kata-kata kami.
Pertemuan itu berakhir dengan cepat. Saya menyarankan agar dia mengambil salinan alat saya yang lebih baru langsung dari DTraceToolkit karena versi lama dari halaman beranda saya sudah kedaluwarsa dan saya telah memperbaiki beberapa bug di dalamnya sejak saat itu. Saya juga mengingatkannya untuk meninggalkan nama, hak cipta, dan lisensi saya di semuanya.
Dalam pembelaannya, saya dapat mengatakan bahwa pertemuan itu bisa berjalan berbeda jika saya diperkenalkan secara lebih rinci. Ini adalah masalah budaya di Australia (tetap menunduk). Bagi orang Australia, mewakili orang bergaya Amerika mungkin terdengar seperti sebuah kebanggaan, tetapi dapat juga berguna sebagai cara cepat untuk mengomunikasikan spesialisasi seseorang.
Kasus lainnya
Saya tidak percaya bahwa dari semua alat sumber terbuka yang saya terbitkan, socketsnoop.d telah ditambahkan ke produk. Program ini kasar. Kemudian saya menulis alat soket yang jauh lebih baik (dalam buku saya tentang DTrace dan BPF ).
Beberapa tahun kemudian, Apple menambahkan banyak alat saya ke OS X. Perusahaan menyimpan nama saya, hak cipta, dan lisensi CDDL sumber terbuka di sana, dan bahkan memperbaiki beberapa di antaranya. Bertahun-tahun kemudian, Oracle melakukan hal yang sama untuk Oracle Solaris 11, dan komunitas BSD melakukan hal yang sama untuk FreeBSD. Saya berterima kasih kepada semua orang ini.
Anda mungkin mengatakan bahwa bukan Sun yang melakukannya, tetapi seorang lajang yang ceroboh. Tapi ada sesuatu tentang budaya Matahari yang mendorong kelalaian semacam ini. Rekan-rekan konsultan saya dan saya pernah mengalami hal ini sebelumnya: keyakinan bahwa Sun dan hanya Sun yang dapat memanfaatkan teknologinya sendiri sebaik mungkin, dan segala sesuatu di luar Sun adalah sampah. Ketika karyawan Sun ini menemukan sesuatu yang baik, mereka cenderung berpikir bahwa itu dibuat oleh Sun, yang berarti dapat digunakan dan diganti dengan aman (dan diubah lisensinya) karena mereka percaya bahwa perusahaan telah memiliki hak cipta.
Ada orang lain di Sun yang ingin melakukan hal yang benar dengan saya dan pekerjaan saya. Setidaknya empat kali, DTraceToolkit saya tertanam dalam produk pemantauan perangkat lunak tanpa menghapus lisensi. (Dalam satu kasus, mereka ingin melisensikan ulang di bawah GPL, dan kami mendiskusikan situasinya dengan departemen hukum Sun, tapi itu cerita lain.)
Omong-omong, itu bukan terakhir kalinya mereka secara tidak sengaja mencoba menjual karya saya ke saya, ini baru pertama kali. Saya belajar untuk tidak memberi tahu tenaga penjualan bahwa saya menciptakan apa yang mereka coba jual kepada saya, karena kemudian mereka mulai melihat saya seolah-olah saya gila. Sebaliknya, saya hanya berkata, "Saya memiliki banyak pengalaman dengan teknologi ini," dan saya membatasi diri untuk itu.
Saya ingat kasus pertama ini karena alat BPF saya sekarang mulai muncul di produk pengawasan perangkat lunak, dan seiring waktu akan menjadi jauh lebih besar daripada alat DTrace. Dalam posting mendatang saya akan menulis tentang ini secara lebih rinci, tetapi untuk saat ini saya menyarankan pengembang sebagai berikut: tolong jangan menulis ulang alat BPF dan perpustakaan bcc saya; coba buat di atasnya (dalam versi bcc python atau bcc libbpf-tool) dan dapatkan pembaruan rutin. Alasannya adalah bahwa ini masih dalam pengembangan produk, dan menulis ulang mereka (forking) akan menyebabkan difusi upaya pengembangan dan memaksa pelanggan Anda untuk menggunakan versi usang.
(Dengan perangkat lunak saya untuk membuat grafik nyala, situasinya berbeda: karena ini adalah algoritme sederhana dan siap pakai yang tidak memerlukan dukungan khusus, saya tidak melihat masalah khusus dalam meminta orang lain untuk menulis ulang. Namun, tidak ada salahnya rasa terima kasih Anda, saat saya mengucapkan terima kasih kepada mereka yang menginspirasi saya untuk membuat grafik api.)
Adapun "demo luar biasa": itu bukan produk berbasis DTrace yang luar biasa yang saya harapkan setelah mendengar tentang tur dunia. Bahkan, mereka ternyata menjadi alat saya sendiri. Saya menduga banyak pengembang open source cepat atau lambat akan mengetahui bahwa kode mereka sedang diganti namanya. Tetapi dalam kasus saya, situasinya agak tidak biasa. Seorang pengembang AS melakukan tur dunia dengan perangkat lunak yang tidak ia tulis, termasuk secara tidak sengaja memberikan presentasi dan demonstrasi kepada penulis. Dia bahkan tidak terlihat berterima kasih padaku.
Periklanan
VDS yang kuat dengan perlindungan DDoS dan perangkat keras terbaru. Semua ini tentang server epik kami . Buat paket Anda sendiri dalam beberapa klik, konfigurasi maksimum adalah 128 core CPU, 512 GB RAM, 4000 GB NVMe.
Berlangganan obrolan kami di Telegram .