Oluşturduğum açık kaynak projelerinin tanımlayıcılarında, paketlerinde veya ad alanlarında kendi adımı kullanmaktan nasıl kaçınabilirim?


15

Kendi zamanımda çok fazla gelişme yapıyorum. Üzerinde çalıştığım bu projeler sadece eğlence ve öğrenme amaçlı (şimdiye kadar). Genellikle Maven ile Java geliştirme yapıyorum ama aynı zamanda .NET ve Python'da dabble bilindim. Üzerinde çalıştığım tüm projeler açık kaynak lisansları kullanıyor, ancak bunların çoğu herhangi bir genel kod deposunda bulunmuyor.

Java / Maven geliştirme, benzersiz bir groupId(örn. "Com.alanim") ve benzersiz package(dizin) bir yapı kullanmamı gerektirir; genellikle groupId.NET geliştirme namespaces, Java packagekonseptine benzer kurallar kullandığım benzersizliği teşvik eder . Benzersizliği sağlamak için, genellikle alan adlarımdan birini yalnızca parçaları ters çevrilmiş halde kullanıyorum (örneğin, "ca.jessewebb"); Bunun çok yaygın bir uygulama olduğuna inanıyorum.

Yeni, açık kaynak kodlu bir Java / Maven projesi oluşturmanın ilk aşamalarındayım (buna "newproj" diyelim) ve GitHub'a koymak istiyorum. Böyle it a URL verecektir böylece GitHub'dan My kullanıcı adı "jessewebb" dir: https://github.com/jessewebb/newproj. Ben olarak "ca.jessewebb" ve "ca.jessewebb.newproj" kullanmaya karar "newproj.com" alan adının tescili rahatsız etmek istemiyoruz groupIdve packagesırasıyla.

Kodda ve projenin evinin bir parçası olarak (GitHub URL'sinde) kişisel kimliğimin varlığının, potansiyel bir katkının projeme dahil olma konusunda iki kez düşünmesine neden olacağı aklıma geldi. Bu bir sorun, benim projem olmasını istemiyorum . Bunun yerine, projeye sahip olmadığım mesajı iletebilsem tercih ederim. Şimdi, tüm dürüstlükte, bu gerçekten büyük bir anlaşma değil çünkü projelerimin toplum katılımını artıracağından şüpheliyim, ancak bunu katkıda bulunanları caydırma olasılığını önlemek için daha da bir neden olarak görüyorum .

Başka bir örnek olarak, birkaç yıl önce bir Google Code projesi oluşturdum (buna "oldproj" diyelim). Projeyi oluşturduğumda, Google Code'da barındıracağımı biliyordum groupId, bu nedenle Google Code'un her yeni projede sağladığı varsayılan alan adının tersi olan "com.googlecode.oldproj" ve paket adını kullandım . Bu o kadar da harika bir fikir değildi; Bir yıl kadar sonra, ben farklı repo kod taşındı ve ben bu tanımlayıcıları yeniden adlandırmak zorunda (iyi ben vermedi varAma...). O zamanlar, herhangi bir alan adına sahip değildim ve "oldproj.com" alan adını satın aldım ve kullandım. Bunu sevdim çünkü projeye kendi kimliğini verdi ve ismimi her yere koda basmıyordum. Kolayca "jessewebb.ca" alan adını kaydettirebilir ve paket adı olarak "ca.jessewebb.oldproj" kullanabilirsiniz ama o zamanlar da aynı endişeleri yaşadım.

Benim sorum ...

Paketlerin / ad alanlarının benzersizliğini korurken açık kaynak projeleri oluştururken kendi (alan adı) adlarımı kullanmaktan nasıl kaçınabilirim?

Projeler daha fazla ivme kazandıkça, alan adlarını kaydetmek mantıklıdır, ancak daha önce yapmak aptalca ve para kaybıdır. Ben aslında gerek yok olduğunu fark kendi kodunda kullanmak için alan adı ama bu yanlış geliyor ve bu arada size altından onu kapış bir gecekondu yol açabilir. Diğer insanlar bu ikilem hakkında ne yapıyor? Kendi tanımlayıcılarının bir parçası olarak orijinal geliştiricinin kimliğini içeren popüler (yaygın olarak kullanılan, büyük topluluk vb.) Açık kaynak projelerine örnekler var mı?


2
Vay, oldukça uzun, ama yine de iyi bir soru!
Marcel

1
Paketlerinizde / ad alanlarınızda bir UUID mi kullanıyorsunuz? ;-)
Jeroen

Yanıtlar:


5

Projelerimde onlara bir isim veriyorum ama mutlaka bir alan adı değilim. Bu nedenle, paket adlarım (ve ad alanlarım), kodun nerede barındırıldığına bakılmaksızın genellikle yalnızca "projectname.libraryname" dir.

Ben oldukça serbestçe handeled .NET için alışkınım.


Proje için kayıtlı bir alan adı olmadığında veya (hemen) istediğimde bunun iyi bir çözüm olduğunu düşünüyorum. Bir alanım olduğunda bunu bile yapabilirim. Asla kötü bir şey olmayan benzersiz proje adları kullandığımdan emin olmama bile yardımcı olur. Daha iyi yanıtlar gelmedikçe, muhtemelen bu yanıtı kabul edeceğim. Teşekkürler!
Jesse Webb

Evet, .NET programcıları bunu yapar, ancak bu iyi bir fikir değildir. Proje adı tamamlanmış bir kelimeyse, bu işe yarayabilir, ancak keşke gördüğüm her "Downloader" veya "Browser" projesi için bir dolarım olsaydı.
Ross Patterson

1
Bu stratejiyi tüm projelerim için kullanmaya başladım. Projeler için benzersiz bir isim, neredeyse bir kod adı (pardon pun) ve paketleri / ad alanlarım için kullanıyorum. En azından bir tane istediğim zaman gelene kadar, alan adları hakkında endişelenmekten kurtulmamı sağlıyor.
Jesse Webb

2

Nerede gördüğümü hatırlayamıyorum, ancak bunun gibi bir yapı kullanılmasını önerdiğini gördüm:

YourIdentifier.YourProduct.YourComponent

Kimliğiniz, sahip olduğunuz bir alan adı, (oldukça benzersiz) internet takma adınız vb. Olabilir. Bileşen adı, ürününüzün "temel" kodu için bırakılmıştır. Örneğin, BarelyMVC adlı küçük bir MVC çerçevem ​​var, bu yüzden içinde böyle ad alanları var:

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

vb. Çoğu durumda çevrimiçi takma adınız diğer geliştiriciler arasındaki çakışmaları önlemek için oldukça benzersizdir.

Kendi çevrimiçi takma adınızı kullanmaktan korkuyorsanız, kendiniz için bir "etiket" oluşturun. Bir şirket ya da herhangi bir şey (ya da bir alan adı) olarak resmi olarak kaydedilmesi gerekmez. Örneğin, popüler Json.Netkütüphane ad alanını kullanır Newtonsoft.Json. Açıkçası yazarların soyadı "newton" dayanmaktadır, ama kimsenin bunu gerçekten önemsediğini sanmıyorum. Kayıtlı resmi bir şirketiniz varsa, elbette bunu kullanabilirsiniz. Örneğin şirketim tarafından üretilen herkese açık API'ların başında PreEmptiveSolutions, şirketin adı ile başlayan ad alanları vardır .


1
Geriye doğru etki alanı adı olan şeyin asla yakalanmadığı .NET dünyasında çok yaygın. Ve "YourIdentifier" gerçekten benzersiz olduğu sürece çalışır. Ancak Newtonsoft bile sadece tesadüfen benzersizdir - James Newton-King aslında böyle bir şirket yönetmez ve ticari marka sadece olsaydı Yeni Zelanda'da mevcut olurdu.
Ross Patterson

1

Java paket adlarının veya .NET ad alanlarının etki alanı adları olma kuralı yoktur. Kesinlikle iyi bir fikir olmasına rağmen, benzersiz olmaları bile gerekmez. Aslında kullanmakta haklı olduğunuzu düşünüyorum ve yeni alan adı için tanıtım yapmaya çalışmadıkça com.googlecode.oldprojayakkabılarınızda geçiş yapmazdım com.oldproj.


Etki alanı adlarını kullanmanız gerektiğine dair bir kural olmadığını anlıyorum, ancak bence benzersizliği sağlamaya yardımcı olduğu için en azından Java ve .NET dünyasında çok yaygın bir uygulama. Ayrıca, kullanma hakkım olduğunu düşündüğünü söyledin com.googlecode.oldproj, bunun neden iyi bir fikir olduğunu düşünüyorsun? Geçmişe bakıldığında, kodu barındırma sağlayıcısına bağlamanın aptalca olduğunu düşündüm.
Jesse Webb

1
Mesele, sizi bazı barındırma sağlayıcılarına bağlaması değil, mesele, bu projeye özgü geleneksel olarak benzersiz bir tanımlayıcı olmasıdır. Hangisi teknik olarak "com.jesseweb.oldproj" dir. Bu yüzden isminizin ona eklenmesini istemediğiniz için iyi bir karardı. Java paketleri ve .NET ad alanlarının sizi bir indirme sitesine vb. Yönlendiren tabelalar olması gerekmez , yalnızca kuralla benzersiz bir tanımlayıcıdır.
Ross Patterson
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.