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 ...
Odpowiedzi:
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.
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
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).
To trudne pytanie, ponieważ zależy od prawa kraju, w którym mieszkasz.
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.
Jest to bardzo mało prawdopodobne, ponieważ twój produkt potrzebuje wystarczającej popularności, aby przyciągnąć innych programistów.
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:
¹ 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:
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
źródło
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
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.
źródło
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.
źródło
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.
źródło
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 .
źródło
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ć.
źródło
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:
Definicja Open Source
Licencja Open Source
GPL
Fundacja Wolnego Oprogramowania
źródło
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.
źródło