Jaki jest najlepszy sposób na rozpoczęcie korzystania z kontroli wersji w projekcie typu open source?

10

Sugerowano, że biorę mój projekt jako open source ze względu na jego rozmiar i brak umiejętności, więc sprawdziłem kod Google i zacząłem tworzyć projekt, a teraz pyta mnie, czy chcę, aby projekt miał Git, Mercurial lub Subversion hosting kodu.

Nie wiem nawet, czym jest hosting kodu, a wyszukiwanie po prostu bardziej pomieszało mnie z debatami między tymi wszystkimi rzeczami, a jest jeszcze gorzej, ponieważ Google Code pyta mnie, jakiego rodzaju licencji chcę.

Wydaje mi się, że nie do końca rozumiem, co tak naprawdę oznacza open source, czy ktoś może zrobić szybkie oszustwo laika na temat tego, co to wszystko? Bardzo mile widziane.

Edycja Na te trzy wersje hostingu kodu pojawiło się wiele świetnych odpowiedzi, ale myślę, że nie udało mi się odpowiedzieć na prawdziwe pytanie: Zasadniczo nie mam pojęcia, jak działa to oprogramowanie typu open source, dlaczego miałbym przechowywać kod w takim miejscu ? Czy to oznacza, że ​​muszę usunąć witrynę z mojego obecnego hostingu, czy jest to zupełnie inny rodzaj hostingu? Co się stanie, gdy utworzę witrynę o otwartym kodzie źródłowym, jakie mam prawa, jakie prawa daję. Jak to działa, czy ludzie po prostu przychodzą i rzucają we mnie kodami za darmo? Być może są to głupie pytania, a jeśli tak jest, to chyba potrzebuję głupich odpowiedzi, poważnie nie mam pojęcia, co to jest open source, z wyjątkiem koncepcji udostępniania kodu ...

Nathan
źródło
to był niesamowity pokaz slajdów, myślę, że pomógł mi zrozumieć podstawy dzięki za dzielenie się, teraz jest to bardziej szczegółowy materiał, który sprawia, że ​​nie mam pojęcia.
1
To naprawdę 2 pytania i oba są prawdopodobnie duplikatami. stackoverflow.com/questions/2303136/… oraz stackoverflow.com/questions/3859/…
sylvanaar
2
„Brak umiejętności” brzmi jak okropny powód do stworzenia czegoś typu open source. Jeśli masz świetny pomysł, ale brakuje Ci umiejętności technicznych, być może. Nie przejdę do oprogramowania typu open source, dopóki nie znajdę wykwalifikowanego technicznie partnera, który jest gotowy zaangażować się w opracowanie pierwszego cięcia kodu i który chciałby przejść do oprogramowania typu open source.
tripleee
Potrójny, czy byłbyś w stanie zasugerować sieć lub coś takiego, w którym mógłbym znaleźć kogoś do współpracy?
Nathan

Odpowiedzi:

7

dlaczego miałbym przechowywać kod w takim miejscu?

Kluczowym punktem rozwoju oprogramowania typu open source jest udostępnianie kodu źródłowego. Można to zrobić na kilka sposobów, na przykład umieszczając pliki tar / zip na serwerze WWW lub ftp. Usługi takie jak kod Google (lub sourceforge.net, gitorious.org, bitbucket.org i wiele innych) eliminują potrzebę uruchamiania własnych serwerów w tym celu.

Czy to oznacza, że ​​muszę usunąć witrynę z mojego obecnego hostingu, czy jest to zupełnie inny rodzaj hostingu?

Usługi te nie są hostami internetowymi ogólnego przeznaczenia, ale prowadzą bardzo wyspecjalizowane usługi. Nie mają one być stroną główną produktu, ale raczej pulpitem programisty.

Z kodem Google otrzymujesz

  • wiki
  • bugtracker
  • miejsce do regularnego pobierania plików
  • serwer kontroli wersji

Oczywiście możesz skonfigurować te oprogramowanie na zwykłym serwerze internetowym (kontrola wersji może być trudna, ale zależy to w dużej mierze od szczegółów), ale główną zaletą korzystania z hostingu dla programistów jest to, że nie musisz się tym przejmować tych systemów dla twojego własnego. Główną wadą jest to, że nie masz kontroli nad tym, jakie oprogramowanie jest używane na serwerze, musisz żyć z tym, co jest dostępne na tym hoście. Musisz także zastanowić się, co się stanie, jeśli usługa przestanie działać (ok, Google nigdy nie zawiedzie) i czy możesz przenieść dane z bieżącego hosta na inny lub własny serwer (pomyśl o kopiach zapasowych).

Co się stanie, gdy utworzę witrynę o otwartym kodzie źródłowym, jakie mam prawa,

To trudne pytanie, ponieważ zależy od prawa kraju, w którym mieszkasz.

jakie prawa daję.

Zależy to od licencji udzielonej produktowi. Może pochodzić z zastrzeżonego oprogramowania typu open source (pomyśl o PGP), w którym użytkownik w zasadzie nie może nic zrobić z kodem, z drugiej strony skali jest własnością publiczną, gdzie każdy może robić, co chce.

Jak to działa, czy ludzie po prostu przychodzą i rzucają we mnie kodami za darmo?

Jest to bardzo mało prawdopodobne, ponieważ twój produkt potrzebuje wystarczającej popularności, aby przyciągnąć innych programistów.

[...] i teraz pyta mnie, czy chcę, aby projekt miał hosting kodu Git, Mercurial lub Subversion.

Są to trzy różne systemy kontroli wersji, w których Subversion jest scentralizowany, podczas gdy Git i Mercurial są rozproszone.

Są wojny religijne, z których należy skorzystać, ale najważniejsze jest, aby użyć jednej. Więcej informacji można znaleźć na stronie http://martinfowler.com/bliki/VersionControlTools.html .

Kiedy wybrać Subversion:

  • Masz pliki binarne, których nie można łatwo scalić, i potrzebujesz przepływu pracy blokady-> modyfikuj-> zatwierdzaj-> odblokuj, który obsługuje subversion¹
  • Musisz sprawdzić tylko część struktury katalogów.

¹ Istnieje rozszerzenie blokady dla rtęci, ale nie mam z tym doświadczenia i nie mogę powiedzieć, czy jest użyteczne.

Jeśli nie potrzebujesz tych pierwszych funkcji, lepiej użyć Mercurial lub Git. Oba mają następujące zalety w stosunku do Subversion:

  • szybki (a przez szybki naprawdę mam na myśli szybki )
  • łatwe rozgałęzianie i scalanie (stało się to lepsze od Subversion> = 1,5, ale to nie to samo)
  • zatwierdzanie i publikowanie jest oddzielone, więc możesz pracować bez zakłóceń nad funkcją i publikować pracę, gdy zostanie wykonana
  • śledzą stan katalogu produktu jako całości
  • po sklonowaniu zdalnego repozytorium otrzymasz pełną kopię całej historii wersji
  • zabezpieczone kryptograficznie numery wersji, co oznacza, że ​​nawet jeśli ktoś włamie się na serwer, nie może wprowadzić kodu bez zmiany historii wersji

    • ale ponieważ nikt nie sprawdza tych poprawek, ta funkcja praktycznie nie jest skuteczna
Rudi
źródło
9

Hosting kodu jest dokładnie taki - gdzieś możesz przechowywać (lub przechowywać) swój kod.

Git, Mercurial i Subversion są narzędziami kontroli źródła używanymi do zarządzania historią kodu. Git i Mercurial są systemami rozproszonymi, podczas gdy Subversion jest bardziej tradycyjną konfiguracją opartą na serwerze.

Zajrzyj na Wikipedię lub inną i przekonaj się, która przemawia do Ciebie najbardziej. Osobiście korzystamy z Mercurial i działa dla nas bardzo dobrze.


źródło
6

Joel Spolsky napisał świetny samouczek na temat Hg (Mercurial) i uważam, że sekcja wprowadzająca obejmuje Subversion, w tym powody przejścia na Mercurial. Przeczytaj, to naprawdę pomogło mi zrozumieć wiele na temat Mercurial i ogólnie DVCS.

Aha, a kiedy będziesz gotowy do hostowania, możesz użyć Google Code, BitBucket , Github (z pomocą tego doskonałego rozszerzenia ) lub innych.

Jimmy Sawczuk
źródło
Mercurial to doskonały system, który przekonał mnie od subwersji już po kilku minutach użytkowania.
Jim In Texas
3

Korzystam z git, który jest łatwiejszy do zarządzania ze względu na rozproszoną kontrolę. Hg jest również dobry do tego konkretnego celu, ale nie mogę ci dać rady, ponieważ nigdy go nie użyłem. SVN jest systemem scentralizowanym i dlatego jest mniej praktyczny, ale może być nieco prostszy.

Open source w zasadzie oznacza, że ​​dajesz każdemu możliwość korzystania z twojej pracy i budowania na niej. Możesz ustawić granice tego użycia: GPL oznacza, że ​​użytkownik musi udostępnić swoją pracę open source, LGPL oznacza na przykład, że nie.

Kheldar
źródło
2

Subversion byłoby najłatwiejszą opcją, ponieważ jest to VCS. Git i Mercurial są systemami DVCS. Są bardziej nowoczesne i mocniejsze, ale trudniejsze do zrozumienia. Korzystanie z interfejsu, takiego jak TortoiseSVN lub TortoiseHG (dla Mercurial aka HG) również bardzo pomaga.

Jeśli twoje oprogramowanie jest samodzielnym programem, możesz użyć GPL lub naprawdę otworzyć go z licencją BSD. Jeśli twój projekt jest biblioteką, którą ktoś może połączyć za pomocą LGPL lub ponownie BSD; ale nie używaj GPL.

[edytować]

Jeśli chodzi o twoją oryginalną motywację do otwartego pozyskiwania oprogramowania: Niestety samo tworzenie oprogramowania open source nie oznacza, że ​​dostaniesz napływ utalentowanej darmowej siły roboczej. Istnieją setki tysięcy projektów open source. Tylko niewielki procent z nich ma aktywnych członków wnoszących wkład. Przyczyny, dla których te projekty są udane lub nie, są tak różne, jak powodzenie i porażka firm. Jeśli chcesz zostać dobrym programistą i produkować dobre oprogramowanie, musisz poświęcić dużo czasu na naukę, pisanie kodu i komunikowanie się z innymi osobami na stronach takich jak StackOverflow.

Sarel Botha
źródło
1
Dlaczego mówisz, że svn jest najłatwiejszy? Proszę uzasadnić to oświadczenie.
1
@Richard: Myślę, że ma na myśli, że konfiguracja i użytkowanie jest nieco łatwiejsze, przynajmniej zgadzam się z tą akceptacją. Nie zgadzam się z pomysłem, że twoja biblioteka nie powinna korzystać z GPL, to naprawdę postawa polityczna.
Kheldar
Użyj GPL dla biblioteki, jeśli chcesz nałożyć pewne ograniczenia na jej użycie. Użyj LGPL, jeśli chcesz nałożyć mniej ograniczeń.
Keith Thompson,
0

Wydaje mi się, że podczas gdy większość ludzi odpowiada na to pytanie , nikt tak naprawdę nie odpowiedział na pytanie dlaczego .

Jednym z pierwszych projektów open source, których doświadczyłem, był wspaniały projekt Fractint , opracowany przez grupę Stone Soup , zainspirowaną starą ludową historią zupy kamiennej .

Dla mnie to lepiej oddaje ducha open source niż jakikolwiek rant Stallmana, a nawet oryginalny Manifest GNU . Świadczy to o sile tej społeczności, że Fractint wciąż jest rozwijany 23 lata po rozpaleniu ognia pod tym szczególnym garnkiem do gotowania z kodem .

Mark Booth
źródło
0

Otwarte źródło oznacza, że ​​każdy może czytać, kopiować, modyfikować i rozpowszechniać Twój kod. Zanim przejdziesz dalej, powinieneś dobrze zrozumieć konsekwencje tego. Być może powinieneś przeczytać książkę lub przynajmniej przejrzeć artykuły Wikipedii na ten temat i / lub http://opensource.org/, dopóki nie poczujesz, że rozumiesz pojęcie.

(Książka O'Reilly Open Sources http://oreilly.com/openbook/opensources/book/index.html jest pomocna, ale może nie dokładnie to, czego szukasz.)

Jaki system kontroli kodu źródłowego ma być całkowicie drugorzędny. Możesz skopiować / wkleić kod na stronie internetowej i gotowe. Powiedziawszy to, kontrola wersji jest ważna i jest dobrym narzędziem do obniżenia poprzeczki dla programistów. Wszelkie opcje oferowane przez Google Code są w porządku; idź z tym, który ci się podoba, a może odłóż pytanie, aż będziesz mógł zadać swoim współautorom, którego z nich chcieliby użyć.

potrójny
źródło
0

Utworzenie kodu lub projektu w wersji open source oznacza, że ​​każdy może go wziąć i zmodyfikować tak, jak chce. Zależy to od tego, jakiego rodzaju licencji zdecydujesz się użyć, ale ogólnie rzecz biorąc, open source oznacza, że ​​kod źródłowy jest dostępny dla każdego, aby go pobrać, zmodyfikować i używać w dowolny sposób.

W każdym razie ten kod musi być dostępny dla innych osób, aby go zdobyć.

Najlepszym sposobem jest przeniesienie kodu do publicznego repozytorium online, takiego jak GitHub. Po pierwsze, twój kod jest teraz dostępny publicznie. Ponieważ takie usługi oferują również kontrolę wersji, Twój kod jest zorganizowany w projekcie. Możesz śledzić zmiany, które wprowadzasz Ty i inne osoby. Ponieważ pozwala również na rozgałęzianie (rozdzielanie) projektu na inne różne projekty, możesz śledzić wszystkie różne wersje kodu utworzone przez inne osoby.

Zapewnia to również, że kod jest przechowywany w bezpiecznym miejscu, więc nie musisz się martwić, że zostanie utracony na przykład przez uszkodzony dysk twardy w komputerze. A jeśli chcesz nad tym pracować, możesz pracować z dowolnego miejsca, ponieważ Twój kod jest online, możesz go znaleźć wszędzie.

Jeśli następnie zdecydujesz, że czas pokazać swój kod światu, wystarczy wysłać link do repozytorium projektów online. Jest to technologia, do której ludzie się przyzwyczajają, więc skoro wszyscy ją znają, łatwiej jest zrozumieć, jak ją pobrać, publikować wiadomości, tworzyć różne wersje itp.

To jak wspólny standard robienia rzeczy, powszechna praktyka.

Niektóre linki, które mogą ci się przydać w celu dalszego wyjaśnienia open source:

Jose Faeti
źródło
-6

Jeśli chodzi o system kontroli wersji, powiedziałbym, że powinieneś trzymać się najczęściej używanej i najnowszej alternatywy: To znaczy: „Git”. Mercurial jest mniej popularny, a SVN jest stary, wolny i scentralizowany. Dzięki GIT zyskasz na nowoczesnym i popularnym systemie kontroli wersji. Praktycznie nie ma nic do stracenia.

Źródła (dotyczące popularności DVCS):

/programming/tagged/git ~ 10k pytań /programming/tagged/mercurial ~ 3k pytań

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

11700000 wyników vs

1580000 wyników

Jeśli chodzi o licencję: być może powinieneś spojrzeć na najpopularniejsze: GLP, MIT, LGPL, BSD i wybrać ten, który najlepiej pasuje do twojego projektu.

Pedro Rolo
źródło
7
Mercurial nie jest zastrzeżony ... jest open source dokładnie tak jak Git!
Christian Specht,
4
Odpowiedź Fanboya z częściowo błędnymi argumentami.
Oben Sonne,
1
„najczęściej używane” - proszę podać odniesienie do źródła tych informacji.
sylvanaar
Przepraszam ludzi ... To tylko moja percepcja rzeczy: Wydaje mi się, że Git jest bardziej używany niż Mercurial i wiem, że SVN jest stary, powolny i scentralizowany ... Zastanawiam się, czy twoje komentarze są mniej komentarzami fanów niż moje tak zwane fanboy-odpowiedź. Chodź, git hub używa git, jądro Linuksa używa git, każdy projekt w moim dziale używa git ...
Pedro Rolo
2
Być może mnogość pytań dotyczących Gita pokazuje również, że jest trudniejszy w użyciu? Kilka osób wykorzystało podobne dane, badając, które platformy programistyczne były najbardziej „popularne”, w których poruszono ten sam punkt (komentując nieścisłości).
Tim Post