Açık kaynaklı bir projede sürüm denetimini kullanmaya başlamamın en iyi yolu nedir?


10

Büyüklüğüm ve beceri eksikliğimden dolayı projemi açık kaynak almam önerildi, bu yüzden Google Code'u kontrol ettim ve bir proje yapmaya başladım ve şimdi projenin Git, Mercurial veya Subversion'a sahip olmasını isteyip istemediğimi soruyor. kod barındırma.

Kod barındırmanın ne olduğunu bile bilmiyorum ve bir arama tüm bunları arasındaki tartışmalarla daha fazla karıştırdı ve Google Code bana ne tür bir lisans istediğimi sorduğu için bu daha da kötüleşti.

Sanırım açık kaynağın gerçekte ne anlama geldiğini tam olarak anlamadım, birisi hemen hemen tüm bunların ne olduğu hakkında hızlı bir layman hile sayfası yapabilir mi? Çok takdir etmek.

Düzenleme Kod üç bu sürümleri üzerinde çok büyük yanıtlar oldu, ama ben gerçek soru iletişim kuramadı düşünüyorum: Temelde bu açık kaynak şeyler nasıl çalıştığını hiçbir fikrim yok, neden böyle bir yerde kodu barındırmak istiyorum? ? Bu, sitemi mevcut barındırma durumumdan çıkarmak zorunda olduğum anlamına mı geliyor yoksa bu tamamen farklı bir hosting türü mi? Sitemi açık kaynak haline getirdiğimde ne olur, hangi haklara sahibim, hangi hakları vereceğim. Nasıl çalışır, insanlar gelip bana ücretsiz kod atıyorlar mı? Belki de bu aptalca sorular ve sanırım bu durumda aptalca cevaplara ihtiyacım var, kod paylaşma kavramı dışında açık kaynağın ne olduğu hakkında ciddi bir fikrim yok ...



Bu harika bir slayt gösterisi oldu, bence paylaştığım için temelleri kavramamı sağladı, şimdi daha clueless beni daha ayrıntılı şeyler.

1
Bu gerçekten 2 soru ve her ikisi de muhtemelen yineleniyor. stackoverflow.com/questions/2303136/… ve stackoverflow.com/questions/3859/…
sylvanaar

2
"Beceri eksikliği" bir şeyi açık kaynak yapmak için korkunç bir neden gibi geliyor. Muhteşem bir fikriniz varsa, ancak teknik becerileriniz yoksa, belki. Kodun ilk kesimini yapmaya hazır ve açık kaynak yapmak isteyen teknik açıdan yetenekli bir ortak bulana kadar açık kaynak yapmam.
üçlü

Tripleee, ortak olabileceğim birini bulabileceğim bir ağ ya da o türden bir şey önerebilir misiniz?
Nathan

Yanıtlar:


7

Neden kodu böyle bir yerde barındırıyorum?

Açık kaynak yazılım geliştirmenin kilit noktası kaynak kodunu paylaşmaktır. Bir web veya ftp sunucusuna tar / zip dosyaları koymak gibi bunu yapmanın birkaç yolu vardır. Google kodu (veya sourceforge.net, gitorious.org, bitbucket.org ve diğerleri) gibi hizmetler, bu amaçla kendi sunucularınızı çalıştırma ihtiyacını ortadan kaldırır.

Bu, sitemi mevcut barındırma durumumdan çıkarmak zorunda olduğum anlamına mı geliyor yoksa bu tamamen farklı bir hosting türü mi?

Bu hizmetler genel amaçlı web barındırıcıları değildir, ancak çok özel hizmetler çalıştırır. Bunlar bir ürünün ana sayfası değil, daha çok bir geliştirici gösterge panosu olmalıdır.

Google kodu ile

  • bir wiki
  • bir böcek avcısı
  • düzenli dosya indirme alanı
  • bir sürüm kontrol sunucusu

Tabii ki bu yazılımı normal bir web sunucusunda kurabilirsiniz (sürüm kontrolü işleri zor olabilir, ancak bu ayrıntılara çok bağlıdır), ancak bir geliştirme barındırıcısı kullanmanın ana yararı, dikkat etmeniz gerekmemesidir. bu sistemlerin sizin için. Ana dezavantajı, sunucuda hangi yazılımın kullanıldığı konusunda hiçbir kontrole sahip olmamanız, o ana bilgisayarda mevcut olanlarla yaşamak zorunda olmanızdır. Ayrıca hizmet işten çıkarsa ne olacağını da düşünmelisiniz (tamam, google asla başarısız olmaz) ve verileri mevcut ana bilgisayardan başka bir sunucuya veya kendi sunucunuza götürebiliyorsanız (yedeklemeleri düşünün).

Sitemi açık kaynak haline getirdiğimde ne olur, hangi haklara sahibim,

Yaşadığınız ülkenin yasalarına bağlı olduğu için bu zor bir sorudur.

hangi hakları vereceğim.

Bu, ürüne verdiğiniz lisansa bağlıdır. Kullanıcının kodla hiçbir şey yapamayacağı özel açık kaynaklı (PGP'yi düşünün), ölçeğin diğer ucunda herkesin istediği her şeyi yapabileceği kamu malı olabilir.

Nasıl çalışır, insanlar gelip bana ücretsiz kod atıyorlar mı?

Bunun olması pek olası değildir, çünkü ürününüzün diğer geliştiricileri çekmek için yeterli popülerliğe ihtiyacı vardır.

[...] ve şimdi bana projenin Git, Mercurial veya Subversion kodunu barındırmasını isteyip istemediğimi soruyor.

Bunlar, Subversion'un merkezi bir sistem olduğu üç farklı versiyon kontrol sistemidir, Git ve Mercurial dağıtılır.

Hangisinin kullanılacağı konusunda dini savaşlar var, ama asıl mesele birini kullanmak. Daha fazla bilgi için http://martinfowler.com/bliki/VersionControlTools.html adresine bakın.

Subversion ne zaman seçilir:

  • Kolayca birleştirilemeyen ikili dosyalarınız var ve yıkımın desteklediği kilit-> değiştir-> taahhüt-> kilit açma iş akışına ihtiyacınız var¹
  • Dizin yapısının yalnızca bir bölümüne göz atmanız gerekir.

C Merkür için bir kilit uzantısı var, ancak onunla ilgili hiçbir deneyimim yok ve kullanılabilir olup olmadığını söyleyemem.

Önceki özelliklere ihtiyacınız olmadığında Mercurial veya Git kullanmak daha iyidir. Her ikisi de Subversion'a göre aşağıdaki avantajlara sahiptir:

  • hızlı (ve hızlı ile gerçekten hızlı demek istiyorum )
  • kolay dallanma ve birleştirme (Subversion> = 1.5'ten beri daha iyi oldu, ancak aynı değil)
  • taahhüt ve yayın ayrılmıştır, böylece bir özellik üzerinde herhangi bir sorun yaşamadan çalışabilir ve yapıldığında işi yayınlayabilirsiniz
  • bütün olarak ürün dizininin durumunu izlerler
  • uzak bir deposu klonladığınızda tüm sürüm geçmişinin tam bir kopyasını alırsınız
  • kriptografik olarak korunan revizyon numaraları, yani birisi sunucuda kırılsa bile, düzeltme geçmişini değiştirmeden kodu yerine koyamayacağı anlamına gelir

    • ancak kimse bu düzeltmeleri kontrol etmediğinden, bu özellik pratik olarak etkili değildir

9

Kod barındırma tam olarak bu - bir yerde kodunuzu barındırmak (veya tutmak).

Git, Mercurial ve Subversion kod geçmişinizi yönetmek için kullandığınız kaynak kontrol araçlarıdır. Git ve Mercurial dağıtılmış sistemlerdir, Subversion ise daha geleneksel bir sunucu tabanlı kurulumdur.

Wikipedia'ya ya da benzerlerine bir göz atın ve size en çok hitap edenleri görün. Şahsen Mercurial kullanıyoruz ve bu bizim için çok iyi çalışıyor.


6

Joel Spolsky, Hg (Mercurial) hakkında harika bir öğretici yazdı ve tanıtım bölümünün Mercurial'a yükseltmenizin nedenleri de dahil olmak üzere Subversion'u kapsadığına inanıyorum. Bunu okuyun, genel olarak Mercurial ve DVCS hakkında çok şey anlamama yardımcı oldu.

Oh, ve barındırmaya hazır olduğunuzda Google Code, BitBucket , Github ( bu mükemmel uzantının yardımıyla ) veya diğerlerini kullanabilirsiniz.


Mercurial mükemmel bir sistem, sadece birkaç dakikalık kullanımdan sonra beni yıkımdan kazandı.
Jim In Texas

3

Dağıtılmış kontrol nedeniyle yönetimi daha kolay bulduğum git'i kullanıyorum. Hg bu özel amaç için de iyidir, ama size hiç kullanmadığınız için tavsiyede bulunamam. SVN merkezi bir sistemdir ve bu nedenle daha az pratiktir, ancak biraz daha basit olabilir.

Açık kaynak temelde, herhangi birine çalışmanızı kullanma ve üzerinde çalışma yeteneği verdiğiniz anlamına gelir. Bu kullanımın sınırlarını belirleyebilirsiniz: GPL, kullanıcının ek çalışmasını açık kaynak haline getirmesi gerektiği anlamına gelir, LGPL, örneğin yapmadığı anlamına gelir.


2

Subversion en kolay seçenek olurdu çünkü bu bir VCS'dir. Git ve Mercurial DVCS sistemleridir. Daha modern ve daha güçlü ama anlaşılması daha zor. TortoiseSVN veya TortoiseHG (Mercurial aka HG için) gibi bir ön uç kullanmak da gerçekten yardımcı olur.

Yazılımınız bağımsız bir programsa, GPL'yi kullanabilir veya gerçekten bir BSD lisansı ile açabilirsiniz. Projeniz, başkalarının LGPL veya tekrar BSD ile bağlantı kuracağı bir kütüphane ise; ancak GPL kullanmayın.

[Düzenle]

Yazılımın açık kaynak kullanımı konusundaki orijinal motivasyonunuza gelince: Maalesef sadece yazılımı açık kaynak yapmak yetenekli bir serbest emek akışı alacağınız anlamına gelmez. Yüz binlerce açık kaynaklı proje var. Sadece küçük bir yüzdesi aktif katkıda bulunan üyelere sahiptir. Bu projeleri başarılı kılan ya da başarısız kılan nedenler, işletmelerin neden başarılı ve başarısız olduğu kadar çeşitlidir. İyi bir programcı olmak ve iyi bir yazılım üretmek istiyorsanız, StackOverflow gibi sitelerde öğrenmek, kod yazmak ve diğer insanlarla iletişim kurmak için çok zaman harcamanız gerekir.


1
Neden svn'in en kolay olduğunu söylüyorsun? Lütfen bu beyanı gerekçelendirin.

1
@Richard: Sanırım temel kullanım için kurulum ve kullanım biraz daha kolay, en azından bu kabulü kabul ediyorum. Kütüphanenizin GPL kullanmaması gerektiği fikrine katılmıyorum, bu gerçekten politik bir duruş.
Kheldar

Kullanımında belirli kısıtlamalar uygulamak istiyorsanız, bir kütüphane için GPL kullanın. Daha az kısıtlama uygulamak istiyorsanız LGPL kullanın.
Keith Thompson

0

Bana öyle geliyor ki, buradaki çoğu kişi nasıl cevap verirken , hiç kimse sorunuzun nedenini gerçekten cevaplamadı.

İlk açık kaynak projelerimden biri muhteşem Fractint projesiydi, bu eski taş çorba halk hikayesinden esinlenilen Taş Çorbası Grubu tarafından geliştirildi .

Benim için bu, açık kaynak ruhunu herhangi bir Stallman rantından veya hatta orijinal GNU Manifestosundan daha iyi kapsülliyor . Ateşin o özel tencerenin altında yandıktan 23 yıl sonra Fractint'in hala geliştirildiği bu topluluğun gücünün bir kanıtıdır .


0

Açık kaynak kodunu herkes okuyabilir, kopyalayabilir, değiştirebilir ve dağıtabilir. Devam etmeden önce bunun etkileri hakkında sağlam bir anlayışa sahip olmalısınız. Belki de bir kavram okumalı veya en azından konu hakkındaki Wikipedia makalelerine ve / veya http://opensource.org/ adresine göz atmalısınız .

(O'Reilly Açık Kaynaklar kitabı http://oreilly.com/openbook/opensources/book/index.html yararlıdır, ancak tam olarak aradığınız şey değildir.)

Hangi kaynak kodu kontrol sisteminin kullanılacağı tamamen ikincil öneme sahiptir. Kodunuzu bir web sayfasına kopyalayıp yapıştırabilir ve işinizi yapabilirsiniz. Bunu söyledikten sonra, sürüm kontrolü önemlidir ve geliştiricilerin katkıda bulunması için çıtayı düşürmek için iyi bir araç. Google Code tarafından sunulan seçeneklerden herhangi biri iyidir; Beğendiğiniz kişiyle gidin ya da katkıda bulunanlarınıza hangisini kullanmak istediklerini sorana kadar soruyu erteleyin.


0

Kodunuzu veya projenizi açık kaynak yapmak, herkesin onu alıp istediği gibi değiştirebileceği anlamına gelir. Bu, hangi lisans türünü kullanmayı seçtiğinize bağlıdır, ancak genel olarak açık kaynak kodunda kaynak kodun herkes tarafından indirilmesi, değiştirilmesi ve istendiği gibi kullanılması anlamına gelir.

Her neyse, bu kodun alabilmesi için diğer insanlar tarafından erişilebilir olması gerekir.

Kodunuzu GitHub gibi herkese açık bir çevrimiçi depoya götürmek, bunu yapmanın en iyi yoludur. İlk olarak, kodunuza artık herkes erişebilir. Daha sonra, bu tür servisler Sürüm Kontrolü de sunduğundan, kodunuz proje organize edilir. Siz ve diğer kişilerin yaptığı değişiklikleri takip edebilirsiniz. Ayrıca, projenin diğer farklı projelere dallanmasına (ayrılmasına) izin verdiği için, diğer kişilerin kodunuzdan yaptığı tüm farklı sürümleri takip edebilirsiniz.

Bu ayrıca kodunuzun güvenli bir yerde saklanmasını sağlar, örneğin bilgisayarınızda hatalı bir sabit disk tarafından kaybolması konusunda endişelenmenize gerek yoktur. Ve üzerinde çalışmak istediğinizde, kodunuz çevrimiçi olduğu için herhangi bir yerden çalışabilirsiniz, istediğiniz yerde bulabilirsiniz.

Daha sonra kodunuzu dünyaya gösterme zamanına karar verirseniz, sadece çevrimiçi proje deponuza bağlantı gönderme meselesi. İnsanların alıştığı bir teknoloji, bu yüzden herkes bildiği için, nasıl indirileceğini, mesaj göndereceğini, farklı sürümler oluşturduğunu vb.

Bu, ortak bir standart yapma işi, ortak uygulama gibi.

Açık kaynağı daha fazla açıklamak için yararlı bulabileceğiniz bazı bağlantılar:


-6

Sürüm kontrol sistemi hakkında, en çok kullanılan ve daha yeni bir alternatif ile sopa gerektiğini söyleyebilirim: Yani: "Git". Mercurial daha az popülerdir ve SVN eski, yavaş ve merkezidir. GIT ile modern ve popüler bir versiyon kontrol sisteminden yararlanacaksınız. Kaybedecek neredeyse hiçbir şey yok.

Kaynaklar (DVCS'nin popülerliği ile ilgili):

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

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

11700000 sonuç vs

1580000 sonuç

Lisansla ilgili olarak: Belki de en yaygın olanlara bakmalısınız: GLP, MIT, LGPL, BSD ve projenize daha uygun olanı seçin.


7
Mercurial tescilli değildir ... Açık kaynak Git!
Christian Specht

4
Fanboy kısmen yanlış argümanlarla cevap veriyor.
Oben Sonne

1
"en çok kullanılan" - lütfen bu bilgilerin kaynağına bir referans verin.
sylvanaar

Üzgünüm insanlar .. Bu sadece benim algılarım: Git'in Mercurial'dan daha fazla kullanıldığı ve SVN'nin eski, yavaş ve merkezi olduğunu biliyorum ... Yorumlarınızın sözümden daha az fanboy yorumu olup olmadığını merak ediyorum fanboy-cevap. Hadi git git hub git kullanıyor, linux kernel git kullanıyor, bölümümdeki her proje git kullanıyor ...
Pedro Rolo

2
Belki de Git ile ilgili soruların bolluğu, kullanımının daha zor olduğunu gösteriyor? Birkaç kişi, aynı noktanın ortaya çıktığı en `` popüler '' web geliştirme çerçevelerini araştırırken benzer verileri kullanmıştır (yanlışlıklar hakkında yorum yapmak).
Tim Post
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.