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

15

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

Lo sviluppo Java / Maven richiede l'utilizzo di un groupId unico (ad es. "com.mydomain") e una struttura package (directory) unica, in genere contenente groupId mentre lo sviluppo .NET incoraggia%% escluso% in cui utilizzo convenzioni simili al concetto di namespaces di Java. Per garantire unicità, di solito uso solo uno dei miei nomi di dominio con le parti invertite (ad esempio "ca.jessewebb"); Credo che questa sia una pratica molto comune.

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

Mi è venuto in mente che la presenza della mia identità personale nel codice e come parte della casa del progetto (nell'URL GitHub) probabilmente causerà a un potenziale contributore di pensarci due volte prima 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 è davvero un grosso problema perché dubito che i miei progetti guadagneranno molto coinvolgimento della comunità, ma considero anche questo più di un motivo per evitare qualsiasi possibilità di scoraggiare potenziali contributori.

Per un altro esempio, ho creato un progetto Google Code alcuni anni fa (chiamiamolo "oldproj"). Quando ho creato il progetto, sapevo che stavo per ospitarlo su Google Code, quindi ho utilizzato package e il nome del pacchetto di "com.googlecode.oldproj", che è il contrario del nome di dominio predefinito Google Code fornisce ogni nuovo progetto. Questa risultò essere un'idea non tanto eccezionale; circa un anno dopo, ho spostato il codice su un repository diverso e ho dovuto rinominare questi identificatori (beh, non ho ho ma ...). All'epoca non possedevo alcun nome di dominio e alla fine ho comprato il nome di dominio "oldproj.com" e l'ho usato. Mi è piaciuto perché ha dato al progetto una sua identità e non stavo stampando il mio nome sul codice ovunque. Avrei potuto registrare con la stessa facilità il nome di dominio "jessewebb.ca" e usare "ca.jessewebb.oldproj" come nome del pacchetto, ma non l'ho fatto perché avevo gli stessi dubbi anche in quel momento.

Quindi la mia domanda è ...

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

Poiché i progetti acquistano più slancio, è logico 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 che si sente sbagliato e può portare a un abusivo che lo strappa da sotto di te nel frattempo. Cosa fanno gli altri riguardo a questo dilemma? Ci sono esempi di progetti open source popolari (ampiamente usati, di grandi dimensioni, ecc.) Che contengono l'identità dello sviluppatore originale come parte dei propri identificatori?

    
posta Jesse Webb 01.02.2013 - 22:17
fonte

3 risposte

5

Nei miei progetti, do loro un nome ma non necessariamente un dominio. Quindi i miei nomi di pacchetti (e spazi dei nomi) sono in genere solo "nomeprogramma.braryname", indipendentemente da dove il codice è ospitato.

Sono abituato a .NET dove questo è gestito liberamente.

    
risposta data 01.02.2013 - 23:26
fonte
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 come un dominio che possiedi, il tuo (alquanto unico) alias internet, ecc. ecc. Il nome del componente è rimasto 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

etc etc. Il tuo alias online nella maggior parte dei casi è 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 registrato formalmente come azienda o altro (o anche un dominio). Ad esempio, la famosa libreria Json.Net utilizza lo spazio dei nomi Newtonsoft.Json . Ovviamente si basa sul cognome degli autori "newton", ma non credo che a nessuno importa davvero. E se hai una società formale registrata, allora puoi ovviamente usarla. La maggior parte delle API pubbliche prodotte dalla mia azienda, ad esempio, ha spazi dei nomi che iniziano con PreEmptiveSolutions , il nome della società

    
risposta data 02.02.2013 - 05:17
fonte
1

Non c'è alcuna regola che i nomi dei pacchetti Java o spazi dei nomi .NET siano nomi di dominio. Non c'è nemmeno il requisito che siano unici, sebbene sia certamente una buona idea. In realtà penso che tu abbia ragione a usare com.googlecode.oldproj , e nei tuoi panni non sarei passato a com.oldproj a meno che non stavo cercando di ottenere pubblicità per il nuovo nome di dominio.

    
risposta data 02.02.2013 - 04:14
fonte

Leggi altre domande sui tag