Saya sedang mencari menggunakan beberapa kode sumber terbuka di aplikasi web ASP.NET saya (khususnya necis ). Manajemen bukan penggemar, karena open source dipandang sebagai risiko yang telah menggigit kita sebelumnya. Rupanya pengembang sebelumnya harus menulis ulang hal-hal setelah komponen open-source gagal.
Kelihatannya pro:
- Ia melakukan banyak hal bagi saya yang jika tidak akan melibatkan banyak kode boilerplate atau solusi yang direkomendasikan tetapi lebih lambat dari Microsoft (Entity Framework).
Cons:
- Cukup rumit sehingga jika tiba-tiba gagal dalam produksi, saya akan kesulitan untuk memperbaikinya. Namun, ini digunakan pada situs dengan lalu lintas jauh lebih tinggi daripada milik saya, jadi saya tidak berpikir itu akan menjadi bagian berisiko tinggi dari proyek ini.
Apa konsensus di sini? Apakah tidak bijaksana untuk menggunakan kode sumber terbuka di proyek saya yang saya tidak tahu / mengerti serta saya lakukan kode saya sendiri?
open-source
management
risk-assesment
Tuan Jefferson
sumber
sumber
Jawaban:
Ini adalah pilihan yang harus Anda buat berdasarkan keadaan tertentu. Anda dapat mengurangi risiko Anda dengan:
Pada akhirnya, dengan proyek sumber terbuka yang banyak digunakan, Anda cenderung menghabiskan lebih banyak waktu untuk menulis sendiri daripada memperbaiki beberapa masalah yang Anda hadapi.
sumber
Saya akan mengatakan lebih jauh bahwa jika reaksi awal Anda adalah menulis sesuatu sendiri daripada melihat apakah orang lain telah menulisnya, Anda pasti akan gagal. Jangan anggap enteng semua jam kerja dan perbaikan bug yang telah masuk ke proyek-proyek open source mainstream.
Setelah Anda mulai masuk ke domain bisnis Anda, Anda akan lebih sulit menemukan OSS yang memenuhi kebutuhan Anda. Tetapi tidak perlu menerapkan kembali produk ORM lainnya. Jika necis cukup rumit sehingga Anda tidak akan dapat men-debug dan memperbaiki kode mereka, bagaimana Anda membenarkan menghabiskan semua jam kerja menulisnya dari awal? Selain itu, Anda bisa (harus?) Selalu melihat di luar kotak pada solusi NoSQL saat Anda melakukannya.
Bahkan Linus mengakui bahwa ia berusaha menemukan solusi SCM yang memenuhi semua kriteria sebelum mengembangkan Git. Setidaknya dia bisa menjelaskan mengapa tidak ada solusi yang cukup baik.
Pada titik tertentu dalam hidup saya, saya berhenti ingin menulis ulang semuanya sendiri dan ingin fokus menyelesaikan masalah dunia nyata. Sebagian besar masalah yang perlu diselesaikan dalam bisnis adalah spesifik domain. Temukan cara untuk menulis lebih sedikit kode tidak lebih.
sumber
MyClass.Property = set.Tables[0].Rows[i]["Property"].ToString()
).Catatan: Saya bukan karyawan Microsoft. Pendapat itu sepenuhnya pribadi. Banyak pemikiran dari 5-7 tahun terakhir menggunakan kedua open source dalam campuran dengan vendor besar sebagai pengembang.
Monokultur baik: Aturan pribadi saya untuk ASP.NET adalah memberikan preferensi kepada Microsoft dan jangan memilih kode pihak ke-3 (open source atau tidak) kecuali tidak ada pilihan lain. Monokultur bermanfaat, karena Anda dibawa oleh vendor besar, dan jumlah pengguna yang mengulangi pengalaman yang sama setiap saat cukup besar untuk mendapatkan bantuan dan mencari solusinya.
Kota-kota hantu: Masalah dengan open source pada 2012 adalah bukan 2000 atau 2005 lagi. Jumlah proyek terus bertambah, ketika jumlah pengguna, adopsi, kontributor hampir sama dengan tahun lalu. Penonton terbentang tipis. Banyak proyek menarik menjadi basi, ditinggalkan. Tidak ada yang namanya anggaran proyek open source. Jadi, ketika bunga berakhir, tidak ada seorang pun yang dengan jujur mengumumkan bahwa dukungan telah berakhir dan mematikan lampu. Proyek tidak pernah mati untuk meninggalkan fokus perhatian publik pada sesuatu yang lebih baik dan baru. Jadi open source akan selalu tumbuh dan terpecah-pecah. Tidak memiliki umpan balik dalam bentuk imbalan moneter atau kematian finansial, mereka adalah entitas abadi, yang ada demi kemuliaan abadi.
20 derajat pemisahan: Setiap adopsi perpustakaan baru Anda memisahkan Anda dari arus utama, menggeser Anda ke minoritas tepi. Setelah memiliki 20 langkah seperti memilih konfigurasi keamanan, menggunakan versi tertentu, kerangka kerja, plugin, dll. Solusi Anda menjadi kombinasi tunggal yang unik secara global. Googling hanya akan membantu membuktikan betapa jarang atau uniknya masalah ini. Itu selalu merupakan masalah melayani diri sendiri, murni teknis. Bahkan tidak pernah relevan dengan bisnis nyata.
Kualitas berasal dari fokus, uang tidak relevan: Tidak ada keunggulan perangkat lunak komersial vs open source. Seluruh komunitas devellopers hanyalah satu komunitas seperti biasanya. Vendor besar hanya memiliki keuntungan menua kode lebih lama, dalam kondisi yang lebih baik, dengan audiens yang lebih luas daripada kelompok open source.
Konsensus: Anda bertanya apakah ada konsensus. Mungkin tidak. Sayangnya sejumlah besar pengguna open source terlalu dipolitisasi. Lagipula open source adalah gerakan sosial. Open source kebal terhadap kritik, karena seringkali pendapat negatif akan dianggap sebagai anti-teknologi, serangan pribadi. Konsensus pribadi saya: tetap pada Microsoft.
sumber
Saya telah mengerjakan sejumlah proyek yang berhasil untuk perusahaan besar yang menggunakan perangkat lunak open source dalam jumlah besar. Secara khusus, saya telah menggunakan Curl, SQLite, dan Webkit untuk perusahaan yang sangat besar dalam proyek-proyek sukses yang dikirimkan kepada pengguna akhir. Seperti yang orang lain katakan, itu hanya masalah berhati-hati tentang lisensi dan idealnya meminta pengacara untuk memeriksa.
Ada ratusan lisensi open source, tetapi umumnya terbagi dalam dua kategori, gaya BSD dan gaya GPL. Lisensi gaya BSD tidak mengharuskan Anda untuk membuka sumber kode Anda sendiri, dan umumnya hanya memiliki semacam klausa atribusi. Lisensi gaya GPL memang mengharuskan Anda untuk membuka sumber kode Anda sendiri. Sebagian besar perusahaan (termasuk perusahaan saya) umumnya terlihat curiga sehingga Anda ingin menghindari gaya GPL. Dapper tampaknya menggunakan lisensi Apache, yang merupakan gaya BSD. Selalu mencari tahu apa persyaratan lisensi umum sebelum Anda mulai coding.
Ada juga LGPL, yang merupakan kasus perbatasan yang menarik karena Anda dapat menggunakannya tanpa membuka kode Anda sendiri jika Anda membatasi akses ke batas biner. (Yaitu mengakses perpustakaan hanya sebagai perpustakaan dinamis.) Penggunaan perpustakaan LGPL sangat bisa dilakukan, Anda hanya harus lebih berhati-hati.
Dalam pengalaman saya, kode sumber terbuka tidak lebih cenderung berubah menjadi buggy atau gagal daripada solusi berbayar, atau, dalam hal ini, roll solusi Anda sendiri. Jika Anda melihat beberapa alat open source yang lebih menonjol, kualitasnya sangat tinggi.
Anda mungkin ingin menghindari proyek yang kecil, atau tidak selesai. Mungkin tergoda untuk mengambil sesuatu yang tampaknya memenuhi kebutuhan Anda, tetapi jika mereka adalah sesuatu yang disatukan oleh beberapa orang, tidak pernah selesai dan tidak didukung, mungkin itu tidak sepadan dengan usaha. (Kecuali jika Anda bersedia mengerjakan kode secara langsung.)
sumber
Pernahkah Anda mengalami kegagalan komponen proprietary sebelumnya? Saya telah menemukan banyak bug dalam perangkat lunak dari perusahaan besar dan kecil. Masalah ini bukan masalah dengan open source per se, melainkan lebih tentang kematangan proyek.
Sepertinya Anda ingin menggunakan proyek dewasa yang menawarkan dukungan. Beberapa proyek sumber terbuka menawarkan dukungan berbayar, atau memiliki komunitas yang cukup besar sehingga Anda bisa mendapatkan jawaban di forum publik. Mungkin Anda harus membuat prioritas kriteria kedewasaan dan dukungan ketika memilih perpustakaan, apakah itu perpustakaan tertutup atau sumber terbuka.
Anda perlu mengakui bahwa Anda mengambil risiko lebih besar jika Anda memutuskan untuk menggunakan proyek yang belum matang, atau yang dengan dukungan terbatas. Karena itu, Anda perlu menentukan apa rencana mitigasi risiko Anda. Anda mungkin melakukan lebih banyak pengujian pada perangkat lunak pihak ketiga, misalnya.
sumber
Diasumsikan masalah lisensi tidak ada masalah di sini: melihat Dapper dengan cepat, saya perhatikan itu hanya 2255 baris yang terdokumentasi dengan baik, kode yang dapat dibaca . Itu adalah
Jika Anda akan menulis sesuatu seperti itu sendiri dan "menemukan kembali roda", Anda memiliki risiko yang jauh lebih tinggi bahwa kode Anda sendiri akan menampilkan bug dalam produksi, dan Anda akan benar-benar "kesulitan untuk memperbaikinya".
Apa yang harus Anda lakukan di sini, jika Anda memperkenalkan bagian open source ke dalam proyek Anda, maka Anda harus mengambil tanggung jawab penuh untuk kode itu, sama seperti jika Anda telah menulisnya sendiri. Pastikan kode berada dalam kondisi Anda dapat mempertahankannya, jika perlu. Jangan salahkan "penulis" kode itu jika sesuatu tidak berfungsi seperti yang diharapkan.
Dalam salah satu proyek kami, kami juga memperkenalkan beberapa komponen open source, mulai dari yang berukuran kecil seperti Dapper hingga perpustakaan yang memiliki sekitar 20K hingga 30K baris kode. Kami harus selalu melakukan beberapa perubahan, memperbaiki beberapa bug, mengurangi sesuatu, dll., Tapi itu tidak masalah, karena kami mengharapkannya. Bahkan waktu untuk debugging termasuk, menggunakan open source menyelamatkan kita banyak pekerjaan.
Satu hal untuk dipikirkan di sini: dalam kasus Anda, Anda menyebutkan bahwa ada alternatif yang diterima secara luas dari vendor besar yang tersedia (MS Entity Framework, di mana Anda tidak perlu membayar biaya lisensi tambahan!). Anda tidak ingin menggunakannya karena pertimbangan kinerja. Saya sungguh-sungguh merekomendasikan untuk tidak membiarkan kinerja menjadi satu-satunya atau poin utama yang harus dipertimbangkan. Pertanyaan yang harus Anda tanyakan di sini: apakah Dapper memiliki semua fungsi yang Anda butuhkan sekarang dan untuk masa hidup yang diharapkan dari perangkat lunak Anda? Atau bisakah Anda meramalkan bahwa Anda akan mencapai batas Dapper dengan cepat, dan Anda harus menambahkan banyak fungsi yang hilang di sekitarnya, apa yang mungkin Anda tidak perlu jika Anda memutuskan untuk menggunakan EF di tempat pertama? Jika yang terakhir terjadi, saya akan merekomendasikan untuk tidak menggunakan Dapper. Juga tanyakan pada diri sendiri: apakah EF benar-benar tidak cukup cepat untuk aplikasi Anda,
sumber
Seperti yang saya lihat, ini adalah tindakan penyeimbang.
Jika Anda membuat diri Anda bergantung pada vendor, hampir pasti dukungan itu akan hilang sebelum lama
Karena mereka memiliki programmer untuk membayar, sehingga mereka harus terus membuat versi baru dan memastikan yang lama tidak mungkin didapat dan tidak lagi berfungsi (pada platform yang lebih baru) sehingga yang baru akan memiliki pasar.
Jika mereka tidak dapat menjual cukup untuk membenarkan model bisnis, mereka meneruskannya dari perusahaan A ke perusahaan B ke C, yang masing-masing cukup mengubahnya lagi, Anda tidak dapat menggunakan yang baru tanpa pemrograman ulang, dan Anda bisa ' tidak mendapatkan yang lama yang berfungsi.
Mereka hanya memutuskan bahwa mereka tidak akan lagi mendukungnya karena terlalu banyak masalah dan tidak ada uang di dalamnya. Semua uang ada di aplikasi baru.
Jadi, jika Anda ingin membangun sesuatu yang tidak harus terus ditulis ulang setiap beberapa tahun, open source dapat menjadi teman Anda.
sumber
Saya pikir itu bijaksana jika uji tuntas yang cukup dilakukan dan tampaknya Anda sudah melakukan beberapa pekerjaan rumah sehubungan dengan sejarah dan aktivitas proyek tertentu. Kemampuan untuk memperluas / menambah fitur dalam kode sumber juga merupakan pro besar. Dengan pengujian yang memadai Anda dapat meminimalkan risiko di sisi lain. Sulit untuk sepenuhnya memahami semua dependensi dalam kode Anda, tetapi setidaknya dalam hal ini Anda akan dapat sepenuhnya debug dan melihat kode jika perlu.
Tanyakan kepada manajemen mengapa itu gagal sebelumnya, apakah uji tuntas yang memadai telah dilakukan?
sumber
jquery memiliki opsi untuk menggunakan lisensi MIT, sehingga banyak situs web komersial dan pemerintah juga menggunakan jquery. Situs web Microsoft juga menggunakan jquery! Jadi yang menjadi perhatian adalah perizinan. Hindari menggunakan GPL / LGPL sudah cukup.
"Berapa lama untuk memperbaiki kerusakan yang dilaporkan?" Setelah melaporkan bug, bug dapat diperbaiki dalam beberapa menit, jam, atau hari. Untuk situasi yang mendesak, staf mungkin hanya "menarik git" untuk mendapatkan sumber dan mengkompilasi sendiri. Dia hanya melaporkan versi seperti "v1.2.3-101-gd62fdae" kepada manajemen, yang dapat dilacak.
sumber
Open source benar-benar tentang legalitas, bukan kualitas kode. Ada produk open source yang baik dan buruk, sama seperti ada yang baik dan buruk. Saya percaya dilema Anda adalah apakah akan menggunakan proyek yang dikembangkan oleh komunitas sukarelawan.
sumber
Apakah Anda yakin bahwa masalah manajemen adalah masalah teknis.
Saya mengatakan ini sebagai pencampuran OS dan kegiatan komersial adalah bidang penambangan yang legal, dan lebih dari satu manajer memiliki "Tolong Jelaskan" dari tim hukum / CEO atau lebih buruk, dari organisasi lain. Sebagian besar manajer yang saya kenal, bahkan mereka yang secara aktif merangkul perangkat lunak OS, (benar) sangat berhati-hati untuk sepenuhnya memahami situasi hukum yang mereka hadapi asal mula. Jika Anda mengadopsi perangkat lunak OS dan membuat perubahan, Anda berkewajiban mengembalikan perubahan itu kepada komunitas. Dalam beberapa kasus, kewajiban ini legal, dalam moral lainnya. Dalam beberapa lisensi OS, semua yang Anda lakukan menjadi OS hanya dengan menautkannya.
Dari sudut pandang teknis, itu benar-benar hanya keputusan antara produk yang bersaing - Ajukan beberapa pertanyaan dasar - Bisakah Anda mendapatkan dukungan yang Anda butuhkan untuk paket yang Anda pilih?, Berapa lama untuk mendapatkan perbaikan untuk cacat yang dilaporkan, berapa biayanya per pengembang, per tahun atau satu mati dll. OS memiliki banyak 0 di kolom $, tetapi sering memiliki yang kosong di yang lain - hanya Anda dan bos Anda yang dapat memutuskan apakah berat 0 kosong atau kosong.
Dan satu hal lagi yang perlu diingat - "Tidak ada yang dipecat membeli IBM". (yaitu manajemen berbicara untuk "Jika Anda menghabiskan banyak uang itu harus menjadi produk yang lebih baik daripada yang gratis"
sumber