Jak mogę uniknąć używania własnego nazwiska w identyfikatorach, pakietach lub przestrzeniach nazw projektów, które tworzę?

15

W swoim czasie robię dużo rozwoju. Te projekty, nad którymi pracuję, służą wyłącznie do zabawy i nauki (do tej pory). Często robię programowanie w Javie z Maven, ale jestem również znany z tego, że dabble w .NET i Python. Wszystkie projekty, nad którymi pracuję, wykorzystują licencje typu open source, chociaż większość z nich nie znajduje się w publicznych repozytoriach kodów.

groupIdProgramowanie w Javie / Maven wymaga ode mnie używania unikalnej (np. „Com.mydomain”) i unikalnej package(katalogowej) struktury, zwykle zawierającej groupIdpodczas gdy programowanie .NET zachęca do unikatowości, namespacesw której używam podobnych konwencji do packagekoncepcji Java . Aby zapewnić unikalność, zwykle używam tylko jednej z moich nazw domen z odwróconymi częściami (np. „Ca.jessewebb”); Uważam, że jest to bardzo powszechna praktyka.

Jestem na początkowym etapie tworzenia nowego projektu Java / Maven typu open source (nazwijmy go „newproj”) i chciałbym umieścić go na GitHub. Moja nazwa użytkownika na GitHub jest „jessewebb”, więc to daje mu adres URL, takich jak: https://github.com/jessewebb/newproj. Nie chcę zawracać sobie głowy rejestracją nazwy domeny „newproj.com”, dlatego postanowiłem użyć „ca.jessewebb” i „ca.jessewebb.newproj” odpowiednio jako groupIdi package.

Przyszło mi do głowy, że obecność mojej osobistej tożsamości w kodzie i jako części domu projektu (w adresie URL GitHub) prawdopodobnie spowoduje, że potencjalny współpracownik pomyśli dwa razy o zaangażowaniu się w mój projekt. To jest problem, nie chcę, żeby to był mój projekt. Wolałbym, gdybym mógł zamiast tego przekazać wiadomość, że nie jestem właścicielem projektu. Teraz, szczerze mówiąc, tak naprawdę nie jest to wielka sprawa, ponieważ wątpię, aby moje projekty wzbudziły duże zaangażowanie społeczności, ale widzę to również jako kolejny powód, aby unikać jakiejkolwiek możliwości odstraszania potencjalnych współpracowników.

Na inny przykład stworzyłem projekt Google Code kilka lat temu (nazwijmy go „oldproj”). Kiedy tworzyłem projekt, wiedziałem, że będę go hostować w Google Code, więc użyłem nazwy groupIdi pakietu „com.googlecode.oldproj”, która jest odwrotnością domyślnej nazwy domeny, którą Google Code udostępnia przy każdym nowym projekcie. To okazało się niezbyt dobrym pomysłem; rok później przeniosłem kod na inne repozytorium i musiałem zmienić nazwy tych identyfikatorów (no cóż, nie miałemale ...). W tym czasie nie posiadałem żadnych nazw domen i ostatecznie kupiłem nazwę domeny „oldproj.com” i używałem jej. Podobało mi się to, ponieważ nadawało projektowi własną tożsamość i nie wstawiałem wszędzie swojego nazwiska na kodzie. Mógłbym równie łatwo zarejestrować nazwę domeny „jessewebb.ca” i użyć nazwy „ca.jessewebb.oldproj” jako nazwy pakietu, ale nie zrobiłem tego, ponieważ miałem wtedy te same obawy.

Więc moje pytanie brzmi ...

Jak mogę uniknąć używania własnych nazw (domen) podczas tworzenia projektów typu open source, jednocześnie zachowując unikalność pakietów / przestrzeni nazw?

Ponieważ projekty nabierają tempa, warto zarejestrować nazwy domen, ale wydaje się to głupie i marnowanie pieniędzy na robienie tego wcześniej. Zdaję sobie sprawę, że tak naprawdę nie muszę posiadać nazwy domeny, aby użyć jej w kodzie, ale wydaje mi się, że jest to złe i może w międzyczasie doprowadzić do tego, że spodoba ci się. Co inni ludzie robią z tym dylematem? Czy istnieją przykłady popularnych (szeroko używanych, dużych społeczności itp.) Projektów open source, które zawierają tożsamość oryginalnego dewelopera jako część własnego identyfikatora (identyfikatorów)?

Jesse Webb
źródło
2
Zaraz, dość długo, ale wciąż dobre pytanie!
Marcel
1
Używać UUID w swoich pakietach / przestrzeniach nazw? ;-)
Jeroen

Odpowiedzi:

5

W moich projektach nadaję im nazwę, ale niekoniecznie domenę. Więc moje nazwy pakietów (i przestrzenie nazw) to zwykle po prostu „nazwa_projektu.libraryname”, niezależnie od tego, gdzie znajduje się kod.

Jestem przyzwyczajony do .NET, gdzie handel jest dość swobodny.

Marcel
źródło
Myślę, że to dobre rozwiązanie, gdy nie mam lub (od razu) chcę domeny zarejestrowanej dla projektu. Mógłbym to zrobić nawet, gdy mam domenę. Pomogłoby to nawet upewnić się, że używam unikalnych nazw projektów, co nigdy nie jest złe. Prawdopodobnie wkrótce zaakceptuję tę odpowiedź, chyba że pojawią się jakieś lepsze. Dzięki!
Jesse Webb
Tak, programiści .NET to robią, ale nie jest to dobry pomysł. Jeśli nazwa projektu jest wymyślonym słowem, może się udać, ale chciałbym mieć dolara za każdy projekt „Downloader” lub „Browser”, który widziałem.
Ross Patterson
1
Zacząłem używać tej strategii do wszystkich moich projektów. Wymyślam unikalną nazwę dla projektów, prawie kryptonim (wybacz pun) i używam go do moich pakietów / przestrzeni nazw. Oszczędza mi martwienia się o nazwy domen, przynajmniej do momentu, kiedy nadejdzie taka potrzeba.
Jesse Webb
2

Nie pamiętam, gdzie go widziałem, ale widziałem, że sugeruje użycie takiej struktury:

YourIdentifier.YourProduct.YourComponent

YourIdentifier może być czymś w rodzaju domeny, którą posiadasz, (dość unikalnym) aliasem internetowym itp. Nazwa komponentu jest pomijana dla „podstawowego” kodu produktu. Na przykład mam małą platformę MVC o nazwie BarelyMVC, więc mam w niej takie przestrzenie nazw:

Earlz.BarelyMVC
Earlz.BarelyMVC.Authentication
Earlz.BarelyMVC.Caching

itp. itp. Twój alias online jest w większości przypadków unikalny, aby uniknąć konfliktów między innymi programistami

Jeśli boisz się użyć własnego aliasu online, utwórz dla siebie „etykietę”. Nie musi być formalnie zarejestrowany jako firma ani nic (ani nawet domena). Na przykład popularna Json.Netbiblioteka używa przestrzeni nazw Newtonsoft.Json. Oczywiście opiera się na nazwisku autora „newton”, ale nie sądzę, żeby ktokolwiek naprawdę się tym przejmował. A jeśli masz zarejestrowaną firmę, możesz oczywiście z niej skorzystać. Na przykład większość publicznych interfejsów API produkowanych przez moją firmę ma przestrzenie nazw zaczynające się PreEmptiveSolutionsod nazwy firmy

Earlz
źródło
1
Bardzo powszechne w świecie .NET, w którym nazwa wstecznej nazwy domeny nigdy tak naprawdę się nie przyjęła. I dopóki „YourIdentifier” jest naprawdę wyjątkowy, działa. Ale nawet Newtonsoft jest wyjątkowy tylko przypadkowo - James Newton-King tak naprawdę nie prowadzi takiej firmy, a jego znak towarowy istniałby tylko w Nowej Zelandii, gdyby to zrobił.
Ross Patterson
1

Nie ma reguły, że nazwy pakietów Java lub przestrzenie nazw .NET są nazwami domen. Nie ma nawet wymogu, aby były wyjątkowe, chociaż z pewnością jest to dobry pomysł. Właściwie uważam, że miałeś rację com.googlecode.oldproj, a w twoich butach nie zmieniłbym się, gdyby nie com.oldprojpróbowałem uzyskać reklamy nowej nazwy domeny.

Ross Patterson
źródło
Zdaję sobie sprawę, że nie ma zasady, że musisz używać nazw domen, ale myślę, że jest to bardzo powszechna praktyka, przynajmniej w świecie Java i .NET, tylko dlatego, że pomaga zapewnić wyjątkowość. Powiedziałeś też, że uważasz, że miałem rację com.googlecode.oldproj, dlaczego uważasz, że to był dobry pomysł? Patrząc z perspektywy czasu, pomyślałem, że to trochę głupie wiązać kod z dostawcą hostingu.
Jesse Webb
1
Nie chodzi o to, że wiąże cię on z jakimś dostawcą hostingu, chodzi o to, że jest to unikatowy dla konwencji identyfikator, który jest specyficzny dla tego projektu. Technicznie jest to wszystko „com.jesseweb.oldproj”. Ponieważ nie chciałeś, aby twoje imię było do niego dołączone, była to dobra decyzja. Pakiety Java i przestrzenie nazw .NET nie powinny być drogowskazami kierującymi do strony pobierania itp. , A jedynie identyfikatorem, który jest unikalny z założenia.
Ross Patterson