Apa cara terbaik bagi saya untuk mulai menggunakan kontrol versi dalam proyek opensource?

10

Disarankan agar saya mengambil proyek open source saya karena ukurannya dan kurangnya keterampilan saya, jadi saya memeriksa Google Code, dan mulai membuat proyek dan sekarang saya bertanya apakah saya ingin proyek memiliki Git, Mercurial, atau Subversion hosting kode.

Saya bahkan tidak tahu apa itu hosting kode, dan pencarian semakin membingungkan saya dengan perdebatan antara semua hal ini, dan ini menjadi lebih buruk karena Google Code menanyakan jenis lisensi yang saya inginkan.

Saya pikir saya tidak begitu mengerti apa arti open source sebenarnya, bisakah seseorang membuat lembar contekan orang awam tentang apa semua ini? Sangat dihargai.

Sunting Ada banyak tanggapan hebat pada ketiga versi hosting kode ini, tapi saya rasa saya gagal mengomunikasikan pertanyaan sebenarnya: Pada dasarnya saya tidak tahu bagaimana cara kerja sumber terbuka ini, mengapa saya meng-host kode di tempat seperti ini ? Dan apakah itu berarti saya harus menghapus situs dari hosting saya saat ini, atau apakah ini jenis hosting yang sama sekali berbeda? Apa yang terjadi ketika saya membuat situs saya open source, hak apa yang saya miliki, hak apa yang saya berikan. Bagaimana cara kerjanya, apakah orang hanya datang dan melemparkan kode kepada saya secara gratis? Mungkin ini adalah pertanyaan bodoh, dan jika itu masalahnya maka saya kira saya perlu jawaban bodoh, saya benar-benar tidak tahu apa itu open source, kecuali untuk konsep kode berbagi ...

Nathan
sumber
itu adalah pertunjukan slide yang luar biasa, saya pikir itu membantu saya memahami dasar-dasar terima kasih untuk berbagi, sekarang ini adalah hal-hal yang lebih rinci yang membuat saya tidak mengerti.
1
Ini benar-benar 2 pertanyaan, dan keduanya mungkin duplikat. stackoverflow.com/questions/2303136/… , dan stackoverflow.com/questions/3859/…
sylvanaar
2
"Kurangnya keterampilan" terdengar seperti alasan yang mengerikan untuk membuat sesuatu menjadi open source. Jika Anda memiliki ide yang luar biasa, tetapi tidak memiliki keterampilan teknis, maka mungkin. Saya tidak akan open source sampai saya menemukan mitra yang terampil secara teknis yang siap berkomitmen untuk memproduksi potongan kode pertama, dan yang ingin menjadi open source.
tripleee
Tripleee apakah Anda dapat menyarankan jaringan atau sesuatu yang sifatnya seperti itu di mana saya dapat menemukan seseorang untuk bermitra?
Nathan

Jawaban:

7

mengapa saya meng-host kode di suatu tempat seperti ini?

Titik kunci pengembangan perangkat lunak sumber terbuka adalah untuk membagikan kode sumber. Ada beberapa cara untuk melakukan ini, seperti meletakkan file tar / zip di web atau server ftp. Layanan seperti kode google (atau sourceforge.net, gitorious.org, bitbucket.org, dan banyak lainnya) menghilangkan kebutuhan untuk menjalankan server Anda sendiri untuk tujuan ini.

Dan apakah itu berarti saya harus menghapus situs dari hosting saya saat ini, atau apakah ini jenis hosting yang sama sekali berbeda?

Layanan ini bukan web host tujuan umum, tetapi menjalankan layanan yang sangat khusus. Mereka tidak dimaksudkan sebagai beranda suatu produk, tetapi lebih merupakan dasbor pengembang.

Dengan kode google yang Anda dapatkan

  • sebuah wiki
  • sebuah bugtracker
  • ruang unduhan file biasa
  • server kontrol versi

Tentu saja Anda dapat mengatur perangkat lunak ini pada server web biasa (hal-hal kontrol versi mungkin rumit, tetapi itu sangat tergantung pada detail), tetapi manfaat utama menggunakan pengembang pengembangan adalah bahwa Anda tidak perlu berhati-hati dari sistem ini untuk Anda sendiri. Kelemahan utama adalah bahwa Anda tidak memiliki kontrol tentang perangkat lunak apa yang digunakan di server, Anda harus hidup dengan apa yang tersedia di host itu. Anda juga perlu mempertimbangkan apa yang terjadi jika layanan keluar dari bisnis (ok, google tidak pernah gagal), dan jika Anda dapat mengambil data dari host saat ini ke server lain atau server Anda sendiri (pikirkan cadangan).

Apa yang terjadi ketika saya membuat open source situs saya, hak apa yang saya miliki,

Ini adalah pertanyaan yang sulit, karena ini tergantung pada hukum negara tempat Anda tinggal.

hak apa yang saya berikan.

Ini tergantung pada lisensi yang Anda berikan kepada produk. Itu bisa pergi dari open source milik (pikirkan PGP) di mana pengguna pada dasarnya tidak bisa melakukan apa pun dengan kode, di ujung skala adalah domain publik, di mana setiap orang dapat melakukan apa pun yang dia inginkan.

Bagaimana cara kerjanya, apakah orang hanya datang dan melemparkan kode kepada saya secara gratis?

Ini sangat tidak mungkin terjadi, karena produk Anda membutuhkan popularitas yang cukup untuk menarik pengembang lain.

[...] dan sekarang ia bertanya apakah saya ingin proyek memiliki hosting kode Git, Mercurial, atau Subversion.

Ini adalah tiga sistem kontrol versi yang berbeda, di mana Subversion adalah yang terpusat, sementara Git dan Mercurial didistribusikan.

Ada perang agama tentang mana yang harus digunakan, tetapi intinya adalah menggunakan perang itu. Lihat http://martinfowler.com/bliki/VersionControlTools.html untuk detail lebih lanjut.

Kapan harus memilih Subversi:

  • Anda memiliki file biner, yang tidak dapat dengan mudah digabungkan, dan memerlukan alur kerja kunci-> ubah-> komit-> buka kunci, yang didukung oleh subversi¹
  • Anda hanya perlu memeriksa sebagian dari struktur direktori.

¹ Ada ekstensi kunci untuk lincah, tapi saya tidak punya pengalaman dengannya, dan tidak bisa mengatakan apakah itu dapat digunakan.

Ketika Anda tidak membutuhkan fitur sebelumnya, lebih baik menggunakan Mercurial atau Git. Keduanya memiliki keunggulan berikut dibandingkan Subversi:

  • cepat (dan dengan cepat maksudku cepat )
  • percabangan dan penggabungan yang mudah (ini menjadi lebih baik sejak Subversion> = 1.5, tetapi tidak sama)
  • komit dan publikasikan dipisahkan, sehingga Anda dapat bekerja tanpa gangguan pada fitur dan mempublikasikan pekerjaan setelah selesai
  • mereka melacak keadaan direktori produk secara keseluruhan
  • Anda mendapatkan salinan lengkap dari seluruh riwayat versi ketika Anda mengkloning repositori jarak jauh
  • angka revisi yang diamankan secara kriptografis, yang berarti bahwa bahkan ketika seseorang membobol server, ia tidak dapat memasukkan kode tanpa mengubah riwayat revisi

    • tetapi karena tidak ada yang memeriksa revisi ini, fitur ini praktis tidak efektif
Rudi
sumber
9

Hosting kode adalah persis seperti itu - tempat untuk menyimpan (atau menyimpan) kode Anda.

Git, Mercurial dan Subversion adalah semua alat kontrol sumber yang Anda gunakan untuk mengelola riwayat kode Anda. Git dan Mercurial adalah sistem terdistribusi sedangkan Subversion adalah pengaturan berbasis server yang lebih tradisional.

Lihatlah Wikipedia atau semacamnya dan lihat mana yang paling menarik bagi Anda. Secara pribadi kita menggunakan Mercurial dan itu bekerja dengan sangat baik untuk kita.


sumber
6

Joel Spolsky menulis tutorial hebat tentang Hg (Mercurial) dan saya percaya bagian pengantar mencakup Subversion, termasuk alasan mengapa Anda meningkatkan ke Mercurial. Berikan itu bacaan, itu benar-benar membantu saya memahami banyak tentang Mercurial dan DVCS secara umum.

Oh, dan ketika Anda siap menjadi tuan rumah, Anda dapat menggunakan Google Code, BitBucket , Github (dengan bantuan ekstensi yang luar biasa ini ) atau yang lainnya.

Jimmy Sawczuk
sumber
Mercurial adalah sistem yang sangat baik, ia memenangkan saya dari subversi setelah hanya beberapa menit digunakan.
Jim In Texas
3

Saya menggunakan git, yang menurut saya lebih mudah dikelola karena kontrol yang didistribusikan. Hg bagus juga untuk tujuan khusus ini, tapi saya tidak bisa memberi Anda saran tentang hal itu, karena tidak pernah menggunakannya. SVN adalah sistem terpusat dan karenanya kurang praktis, tetapi mungkin sedikit lebih sederhana.

Open source pada dasarnya berarti Anda memberi siapa pun kemampuan untuk menggunakan pekerjaan Anda dan membangunnya. Anda dapat mengatur batasan penggunaan itu: GPL berarti pengguna harus membuat karya open source tambahannya, LGPL berarti dia tidak, misalnya.

Kheldar
sumber
2

Subversi akan menjadi pilihan termudah karena ini adalah VCS. Git dan Mercurial adalah sistem DVCS. Mereka lebih modern dan lebih kuat tetapi lebih sulit untuk dipahami. Menggunakan front-end seperti TortoiseSVN atau TortoiseHG (untuk Mercurial alias HG) juga sangat membantu.

Jika perangkat lunak Anda adalah program yang berdiri sendiri, Anda dapat menggunakan GPL atau benar-benar membukanya dengan lisensi BSD. Jika proyek Anda adalah perpustakaan yang orang lain akan tautkan menggunakan LGPL atau BSD lagi; tapi jangan gunakan GPL.

[sunting]

Adapun motivasi awal Anda untuk sumber terbuka perangkat lunak: Sayangnya hanya membuat perangkat lunak open source tidak berarti Anda akan mendapatkan gelombang tenaga kerja gratis berbakat. Ada ratusan ribu proyek sumber terbuka. Hanya sebagian kecil dari mereka yang memiliki anggota aktif yang berkontribusi. Alasan yang membuat proyek ini berhasil atau tidak beragam seperti mengapa bisnis berhasil dan gagal. Jika Anda ingin menjadi programmer yang baik dan menghasilkan perangkat lunak yang baik, Anda harus menghabiskan banyak waktu untuk belajar, menulis kode, dan berkomunikasi dengan orang lain di situs-situs seperti StackOverflow.

Sarel Botha
sumber
1
Mengapa Anda mengatakan bahwa svn adalah yang termudah? Harap benarkan pernyataan ini.
1
@ Richard: Saya pikir maksudnya sedikit lebih mudah untuk mengatur dan menggunakan untuk penggunaan dasar, setidaknya saya setuju dengan pengakuan itu. Saya tidak setuju dengan gagasan bahwa perpustakaan Anda tidak boleh menggunakan GPL, itu benar-benar sikap politik.
Kheldar
Gunakan GPL untuk perpustakaan jika Anda ingin menerapkan batasan tertentu pada penggunaannya. Gunakan LGPL jika Anda ingin menerapkan batasan yang lebih sedikit.
Keith Thompson
0

Tampak bagi saya bahwa sementara kebanyakan orang di sini menjawab bagaimana , tidak ada yang benar-benar menjawab mengapa dalam pertanyaan Anda.

Salah satu proyek open source pertama yang saya alami adalah proyek Fractint yang luar biasa , ini dikembangkan oleh Stone Soup Group yang terinspirasi oleh cerita rakyat sup batu kuno .

Bagi saya, ini merangkum semangat open source lebih baik daripada kata - kata kasar Stallman atau bahkan Manifesto GNU asli . Ini adalah bukti kekuatan komunitas itu bahwa Fractint masih dikembangkan 23 tahun setelah api dinyalakan di bawah pot kode memasak .

Mark Booth
sumber
0

Sumber terbuka berarti siapa pun dapat membaca, menyalin, memodifikasi, dan mendistribusikan kode Anda. Anda harus memiliki pemahaman yang kuat tentang implikasi ini sebelum melanjutkan. Mungkin Anda harus membaca buku atau setidaknya meramban artikel Wikipedia tentang topik itu dan / atau http://opensource.org/ hingga Anda merasa sudah memahami konsep tersebut.

(Buku Sumber Terbuka O'Reilly http://oreilly.com/openbook/opensources/book/index.html sangat membantu tetapi mungkin tidak persis apa yang Anda cari.)

Sistem kontrol kode sumber apa yang digunakan sepenuhnya sepenuhnya sekunder. Anda dapat menyalin / menempelkan kode Anda di halaman web dan selesai. Karena itu, kontrol versi adalah penting, dan kendaraan yang baik untuk menurunkan standar bagi pengembang untuk berkontribusi. Opsi apa pun yang ditawarkan oleh Google Code baik-baik saja; pergi dengan yang Anda suka, atau mungkin menunda pertanyaan sampai Anda dapat bertanya kepada kontributor Anda mana yang ingin mereka gunakan.

tripleee
sumber
0

Membuat kode atau proyek Anda sumber terbuka berarti bahwa semua orang dapat mengambil dan memodifikasinya sesuai keinginannya. Ini tergantung pada jenis lisensi yang Anda pilih untuk digunakan, tetapi secara umum open source berarti kode sumber tersedia untuk siapa saja untuk mengunduhnya, memodifikasinya dan menggunakannya sesuka mereka.

Pokoknya kode ini harus dapat dijangkau oleh orang lain untuk mendapatkannya.

Membawa kode Anda ke repositori online publik seperti GitHub adalah cara terbaik untuk melakukannya. Pertama, kode Anda sekarang dapat diakses oleh publik. Kemudian, karena layanan tersebut juga menawarkan Kontrol Versi, kode Anda diatur oleh proyek. Anda dapat melacak perubahan yang Anda dan orang lain lakukan. Karena itu juga memungkinkan percabangan (memisahkan) proyek menjadi proyek lain yang berbeda, Anda dapat melacak semua versi berbeda yang dibuat orang lain dari kode Anda.

Ini juga memastikan kode Anda disimpan di tempat yang aman, Anda tidak perlu khawatir hilang oleh hard disk yang rusak pada komputer Anda misalnya. Dan ketika Anda ingin mengerjakannya, Anda dapat bekerja dari mana saja karena kode Anda daring, Anda dapat menemukannya di mana saja.

Jika kemudian Anda memutuskan untuk memamerkan kode Anda ke dunia, itu hanya masalah mengirimkan tautan ke repositori proyek online Anda. Ini adalah teknologi yang digunakan orang, jadi karena semua orang mengetahuinya, lebih mudah untuk memahami cara mengunduhnya, memposting pesan, membuat versi yang berbeda, dll.

Ini seperti standar umum dalam melakukan sesuatu, praktik umum.

Beberapa tautan yang mungkin berguna untuk menjelaskan lebih lanjut tentang open source

Jose Faeti
sumber
-6

Tentang sistem kontrol versi, saya akan mengatakan bahwa Anda harus tetap dengan alternatif yang paling banyak digunakan dan lebih baru: Yaitu: "Git". Mercurial kurang populer, dan SVN tua, lambat, dan terpusat. Dengan GIT Anda akan mendapat manfaat dari sistem kontrol versi yang modern dan populer. Praktis tidak ada ruginya.

Sumber (berdasarkan popularitas DVCS):

/programming/tagged/git ~ 10k pertanyaan /programming/tagged/mercurial ~ 3k pertanyaan

http://www.googlefight.com/index.php?lang=en_GB&word1=git&word2=mercurial

11700000 hasil vs

1580000 hasil

Mengenai lisensi: Mungkin Anda harus melihat yang paling umum: GLP, MIT, LGPL, BSD, dan pilih yang sesuai dengan proyek Anda.

Pedro Rolo
sumber
7
Mercurial bukan milik ... itu open source persis seperti Git!
Christian Specht
4
Fanboy menjawab dengan argumen yang salah sebagian.
Oben Sonne
1
"paling sering digunakan" - harap berikan referensi ke sumber informasi Anda.
sylvanaar
Maaf orang .. Ini hanya persepsi saya tentang hal-hal: Saya kira Git lebih digunakan daripada Mercurial, dan saya tahu bahwa SVN sudah tua, lambat dan terpusat ... Saya bertanya-tanya apakah komentar Anda kurang dari komentar penggemar seperti yang saya sebut fanboy-answer. Ayo, git hub menggunakan git, kernel linux menggunakan git, setiap proyek di departemen saya menggunakan git ...
Pedro Rolo
2
Mungkin banyak pertanyaan tentang Git juga menggambarkan bahwa lebih sulit untuk digunakan? Beberapa orang telah menggunakan data serupa ketika menyelidiki kerangka pengembangan web apa yang paling 'populer' di mana poin yang sama diajukan (mengomentari ketidakakuratan).
Tim Post