Як я можу уникати використання власного імені в ідентифікаторах, пакетах чи просторах імен відкритих джерел, які я створюю?


15

Я багато часу займаюся розробкою. Ці проекти, над якими я працюю, - це лише для розваги та навчання (поки що). Я зазвичай займаюся розробкою Java разом з Maven, але мені також відомо, що я бавлюсь у .NET та Python. Усі проекти, над якими я працюю, використовують ліцензії з відкритим кодом, хоча більшість з них не є у жодних сховищах публічного коду.

Розробка Java / Maven вимагає від мене , щоб використовувати унікальний groupId(наприклад , «com.myDomain») і унікальну package(каталог) структуру, як правило , містить у groupIdтой час як розвиток .NET підтримує унікальне , namespacesв якому я використовую аналогічні угоди з Java packageконцепції. Щоб забезпечити унікальність, я зазвичай просто використовую одне з моїх доменних імен із перевернутими частинами (наприклад, "ca.jessewebb"); Я вважаю, що це дуже поширена практика.

Я перебуваю на початкових етапах створення нового, відкритого коду, проекту Java / Maven (назвемо це "newproj"), і я хотів би поставити його на GitHub. Моє ім'я користувача на GitHub є «jessewebb» , так що це дасть йому URL , як: https://github.com/jessewebb/newproj. Я не хочу перейматися реєстрацією доменного імені "newproj.com", тому я вирішив використовувати "ca.jessewebb" і "ca.jessewebb.newproj" як groupIdі package, відповідно.

Мені прийшло в голову, що присутність моєї особистої ідентичності в коді та в частині будинку (в URL-адресі GitHub), ймовірно, змусить потенційного учасника задуматися про те, щоб долучитися до мого проекту. Це проблема, я не хочу, щоб це був мій проект. Я вважаю за краще, якби міг натомість передати повідомлення, що я не є власником проекту. Тепер, чесно кажучи, це насправді не така вже й велика угода, тому що я сумніваюся, що мої проекти будуть значною мірою залучати громадськість, але я також вважаю це ще більшою причиною уникати будь-якої можливості стримувати потенційних учасників.

Для іншого прикладу я створив проект Google Code кілька років тому (назвемо це "oldproj"). Коли я створював проект, я знав, що збираюся розмістити його в Google Code, тому застосував назву groupIdта пакет "com.googlecode.oldproj", який є зворотним доменним іменем Google Code, яке надає кожному новому проекту. Це виявилося не дуже великою ідеєю; через рік або близько того, я перемістив код на інше репо, і мені довелося перейменувати ці ідентифікатори (ну, у мене не булодо але ...). У той час у мене не було жодних доменних імен, і я нарешті купив доменне ім’я "oldproj.com", і я ним користувався. Мені це сподобалось, тому що він надав проекту свою власну ідентичність, і я не скрізь скріплював своє ім’я кодом. Я міг так само легко зареєструвати доменне ім'я "jessewebb.ca" і використав "ca.jessewebb.oldproj" як назву пакета, але я цього не зробив, тому що в мене теж були проблеми.

Отже, моє запитання ...

Як я можу уникати використання власних (доменних) імен під час створення проектів з відкритим кодом, зберігаючи унікальність пакетів / просторів імен?

Оскільки проекти набувають все більшої швидкості, є сенс реєструвати доменні імена, але це здається дурним і марно витрачати гроші на це раніше. Я усвідомлюю, що насправді не потрібно володіти доменним іменем, щоб використовувати його в коді, але це відчуває себе неправильно і може призвести до того, що тимчасовий скутер вирве його з-під вас. Що роблять інші люди щодо цієї дилеми? Чи є приклади популярних (широко використовуваних, великих спільнот тощо) проектів з відкритим кодом, які містять оригінальну особу розробника як частину власного ідентифікатора (ів)?


2
Ого, досить довго, але все-таки гарне запитання!
Марсель

1
Використовуєте UUID у ваших пакунках / просторах імен? ;-)
Jeroen

Відповіді:


5

У своїх проектах я даю їм ім’я, але не обов'язково домен. Тож імена моїх пакетів (і простори імен), як правило, є лише "ім'ям проекту.бібліотека", незалежно від того, де розміщений код.

Я звик до .NET, де це обробляється досить вільно.


Я думаю, що це гарне рішення, коли я не маю або (негайно) хочу зареєструвати домен для проекту. Я навіть міг би це зробити, коли в мене є домен. Це навіть допоможе переконатися, що я використовую унікальні назви проектів, що ніколи не є поганим. Я, мабуть, скоро прийму цю відповідь, якщо не з’являться якісь кращі. Спасибі!
Джессі Вебб

Так, .NET програмісти роблять це, але це не дуже гарна ідея. Якщо назва проекту - це складне слово, воно може спрацювати нормально, але я б хотів, щоб я мав долар за кожен проект "Завантажувач" або "Браузер", який я бачив.
Росс Паттерсон

1
Я почав використовувати цю стратегію для всіх своїх проектів. Я придумав унікальну назву проектів, майже кодове ім'я (вибачте за каламбур) і використовую його для своїх пакунків / просторів імен. Врятує мене від турботи про доменні імена, принаймні, поки не настане час, коли я хочу його.
Джессі Вебб

2

Я не можу згадати, де я це бачив, але я бачив, як він запропонував використовувати таку структуру:

YourIdentifier.YourProduct.YourComponent

YourIdentifier може бути чимось на зразок домену, яким ви володієте, вашого (досить унікального) інтернет-псевдоніма тощо тощо. Назва компонента залишається для "основного" коду вашого продукту. Наприклад, у мене є невелика рамка MVC під назвою BarelyMVC, тому в ній є такі простори імен:

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

тощо. Ваш Інтернет-псевдонім у більшості випадків є досить унікальним, щоб уникнути конфліктів між іншими розробниками

Якщо ви боїтеся використовувати власний псевдонім в Інтернеті, то створіть для себе "етикетку". Вона не повинна бути офіційно зареєстрована як компанія чи що-небудь (або навіть домен). Наприклад, популярна Json.Netбібліотека використовує простір імен Newtonsoft.Json. Очевидно, це засноване на прізвищі авторів "ньютон", але я не думаю, що це насправді переймається. А якщо у вас зареєстрована офіційна компанія, то, звичайно, ви можете скористатися цим. Більшість публічних API, створених моєю компанією, наприклад, мають простори імен, починаючи з PreEmptiveSolutionsназви компанії


1
Дуже поширений у світі .NET, де річ із зворотним доменним іменем ніколи не дісталася. І поки "YourIdentifier" серйозно унікальний, він працює. Але навіть Newtonsoft унікальний лише випадково - Джеймс Ньютон-Кінг насправді не керує такою компанією, і ця торгова марка існувала б лише в Новій Зеландії, якби він був.
Росс Паттерсон

1

Немає правила, щоб імена пакетів Java або простори імен .NET були доменними іменами. Навіть не існує вимоги, щоб вони були унікальними, хоча це, безумовно, хороша ідея. Я насправді вважаю, що ти правильно користувався com.googlecode.oldproj, і в твоїх черевиках я б не перейшов, com.oldprojякщо б я не намагався отримати рекламу нового доменного імені.


Я усвідомлюю, що не існує правила, що вам потрібно використовувати доменні імена, але я думаю, що це дуже поширена практика, принаймні у світі Java та .NET, лише тому, що це допомагає забезпечити унікальність. Крім того, ви сказали, що вважаєте, що я маю рацію використовувати com.googlecode.oldproj, чому ви вважаєте, що це була гарна ідея? Зрештою, я подумав, що було якось нерозумно прив’язати код до хостинг-провайдера.
Джессі Вебб

1
Справа не в тому, що вона пов’язує вас з деяким хостинг-провайдером, справа в тому, що це умовно-унікальний ідентифікатор, властивий цьому проекту. Що це все "com.jesseweb.oldproj" - це технічно. Отже, оскільки ви не хотіли, щоб ваше ім’я було прикріплене до нього, це було гарним рішенням. Пакети Java та простори імен .NET не повинні бути покажчиками, що спрямовують вас на сайт завантаження тощо. Це лише ідентифікатор, який є унікальним за умовами.
Росс Паттерсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.