Come posso evitare di usare il mio nome negli identificatori, pacchetti o spazi dei nomi dei progetti open source che creo?


15

Faccio molto sviluppo nel mio tempo. Questi progetti a cui lavoro sono tutti solo per divertimento e apprendimento (finora). Faccio comunemente sviluppo Java con Maven ma sono anche conosciuto per dilettarmi con .NET e Python. Tutti i progetti su cui lavoro utilizzano licenze open source, sebbene la maggior parte di essi non si trovi su nessun repository di codice pubblico.

Lo sviluppo di Java / Maven mi richiede di utilizzare una struttura unica groupId(ad es. "Com.mydomain") e una package(directory) unica , che di solito contiene groupIdmentre lo sviluppo .NET incoraggia univoco namespacesin cui utilizzo convenzioni simili al packageconcetto Java . Per garantire unicità, di solito uso solo uno dei miei nomi di dominio con le parti invertite (ad es. "Ca.jessewebb"); Credo che questa sia una pratica molto comune.

Sono nelle fasi iniziali della creazione di un nuovo progetto Java / Maven open source (chiamiamolo "newproj") e vorrei metterlo su GitHub. Il mio username su GitHub è "jessewebb" quindi questo darà un URL del tipo: https://github.com/jessewebb/newproj. Non voglio disturbare la registrazione del "newproj.com" nome di dominio così ho deciso di usare "ca.jessewebb" e "ca.jessewebb.newproj" come groupIde package, rispettivamente.

Mi è venuto in mente che la presenza della mia identità personale nel codice e come parte della home del progetto (nell'URL GitHub) probabilmente farà pensare due volte a un potenziale collaboratore di essere coinvolto nel mio progetto. Questo è un problema, non voglio che sia il mio progetto. Preferirei se potessi, invece, trasmettere il messaggio che non possiedo il progetto. Ora, in tutta onestà, non è poi così grande di un affare perché dubito miei progetti raccogliere il coinvolgimento della comunità molto, ma vedo anche questo come ancora di più di una ragione per evitare ogni possibilità di dissuadere gli aspiranti collaboratori.

Per un altro esempio, alcuni anni fa ho creato un progetto Google Code (chiamiamolo "oldproj"). Quando ho creato il progetto, sapevo che lo avrei ospitato su Google Code, quindi ho usato il groupIdnome del pacchetto e "com.googlecode.oldproj", che è il contrario del nome di dominio predefinito che Google Code fornisce ogni nuovo progetto. Questa si è rivelata un'idea non così eccezionale; un anno più tardi, ho spostato il codice per un repo diversa e ho dovuto rinominare questi identificatori (beh non ho avutoa ma ...). All'epoca non possedevo alcun nome di dominio e ho finito per acquistare il nome di dominio "oldproj.com" e l'ho usato. Mi è piaciuto perché ha dato al progetto la propria identità e non ho impresso il mio nome sul codice ovunque. Avrei potuto facilmente registrare il nome di dominio "jessewebb.ca" e usare "ca.jessewebb.oldproj" come nome del pacchetto, ma non l'ho fatto perché allora avevo le stesse preoccupazioni.

Quindi la mia domanda è ...

Come posso evitare di usare i miei nomi (dominio) durante la creazione di progetti open source pur mantenendo l'unicità di pacchetti / spazi dei nomi?

Man mano che i progetti guadagnano più slancio, ha senso registrare i nomi di dominio, ma sembra sciocco e uno spreco di denaro farlo prima. Mi rendo conto che in realtà non devo possedere il nome di dominio per usarlo nel codice, ma questo sembra sbagliato e può portare a un abusante a strapparlo da sotto di te nel frattempo. Cosa fanno le altre persone su questo dilemma? Esistono esempi di progetti open source popolari (ampiamente utilizzati, di grandi dimensioni, ecc.) Che contengono l'identità dello sviluppatore originale come parte dei propri identificativi?


2
Whoa, abbastanza lungo, ma comunque una buona domanda!
Marcel,

1
Utilizzare un UUID nei pacchetti / spazi dei nomi? ;-)
Jeroen,

Risposte:


5

Nei miei progetti, do loro un nome ma non necessariamente un dominio. Quindi i nomi dei miei pacchetti (e spazi dei nomi) di solito sono solo "projectname.libraryname", indipendentemente da dove sia ospitato il codice.

Sono abituato a .NET, dove questo è gestito abbastanza liberamente.


Penso che questa sia una buona soluzione quando non ho o (immediatamente) voglio un dominio registrato per il progetto. Potrei persino farlo quando ho un dominio. Sarebbe anche utile assicurarsi di utilizzare nomi di progetto univoci, il che non è mai una cosa negativa. Probabilmente accetterò presto questa risposta, a meno che non ne emergano di migliori. Grazie!
Jesse Webb,

Sì, i programmatori .NET lo fanno, ma non è una buona idea. Se il nome del progetto è una parola inventata, può funzionare bene, ma vorrei avere un dollaro per ogni progetto "Downloader" o "Browser" che ho visto.
Ross Patterson,

1
Ho iniziato a usare questa strategia per tutti i miei progetti. Trovo un nome univoco per i progetti, quasi un nome in codice (scusate il gioco di parole), e lo uso per i miei pacchetti / spazi dei nomi. Mi evita di dovermi preoccupare dei nomi di dominio, almeno fino al momento in cui ne voglio uno.
Jesse Webb,

2

Non ricordo dove l'ho visto, ma ho visto che suggeriva di usare una struttura come questa:

YourIdentifier.YourProduct.YourComponent

YourIdentifier può essere qualcosa di simile a un dominio di tua proprietà, il tuo alias Internet (piuttosto unico), ecc. Ecc. Il nome del componente viene lasciato fuori per il codice "core" del tuo prodotto. Ad esempio, ho un piccolo framework MVC chiamato BarelyMVC, quindi ho spazi dei nomi come questi:

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

ecc. ecc. Il tuo alias online nella maggior parte dei casi è molto unico per evitare conflitti tra altri sviluppatori

Se hai paura di usare il tuo alias online, crea una "etichetta" per te stesso. Non deve essere formalmente registrato come società o altro (o anche un dominio). Ad esempio, la Json.Netlibreria popolare utilizza lo spazio dei nomi Newtonsoft.Json. È ovviamente basato sul cognome degli autori "newton", ma non credo che a nessuno importi davvero. E se hai una società formale registrata, puoi ovviamente usarla. La maggior parte delle API pubbliche prodotte dalla mia azienda, ad esempio, ha spazi dei nomi che iniziano con PreEmptiveSolutionsil nome dell'azienda


1
Molto comune nel mondo .NET, dove la cosa con il nome di dominio all'indietro non ha mai preso piede. E fintanto che "YourIdentifier" è davvero unico, funziona. Ma anche Newtonsoft è solo accidentalmente unico: James Newton-King non gestisce effettivamente una società del genere e il suo marchio esisterebbe in Nuova Zelanda solo se lo facesse.
Ross Patterson,

1

Non esiste alcuna regola che i nomi dei pacchetti Java o gli spazi dei nomi .NET siano nomi di dominio. Non c'è nemmeno il requisito di essere unici, anche se è sicuramente una buona idea. In realtà penso che avessi ragione da usare com.googlecode.oldproje nei tuoi panni non sarei passato a com.oldprojmeno che non stessi cercando di ottenere pubblicità per il nuovo nome di dominio.


Mi rendo conto che non c'è alcuna regola che devi usare i nomi di dominio, ma penso che sia una pratica molto comune, almeno nel mondo Java e .NET, solo perché aiuta a garantire l'unicità. Inoltre, hai detto che pensi che avessi ragione di usare com.googlecode.oldproj, perché pensi che sia stata una buona idea? In retrospettiva, ho pensato che fosse un po 'sciocco legare il codice al provider di hosting.
Jesse Webb,

1
Il punto non è che ti lega a qualche provider di hosting, il punto è che è un identificatore univoco convenzionale che è peculiare di questo progetto. Che è tutto "com.jesseweb.oldproj" tecnicamente. Quindi, dal momento che non volevi che il tuo nome fosse associato, è stata una buona decisione. I pacchetti Java e gli spazi dei nomi .NET non dovrebbero essere segni che indirizzano verso un sito di download ecc. , Ma solo un identificatore univoco per convenzione.
Ross Patterson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.