Richesta consigli su package, reverse DNS notation e licensing per distribuire piccola libreria

9 views
Skip to first unread message

Marco Scarpa

unread,
Jan 12, 2024, 12:07:33 PM1/12/24
to JUG Padova
Ciao,

Mi piacerebbe diffondere open source una piccola libreria che ogni tanto faccio per lavoro (l'ho fatta quasi uguale in due posti), praticamente implementerebbe Map<List<K>,V> per usare chiavi composte (mi sembra abbastanza una banalità come cosa e mi stupisce che progetti come Apache non ci abbiano pensato). 

Come licenza pensavo alla licenza MIT per consentire liberamente di usarla in progetti open e closed source (anche per essere protetto visto che sarebbe codice simile a quanto ho fatto per lavoro che non è open source), avete suggerimenti a riguardo?

Per dare il nome ai package, nel libro di Informatica 1 suggerivano, se non si ha un proprio dominio, di usare il proprio indirizzo email al contrario, solo che non mi sento tanto a mio agio ad usare com.google.qwertyscar , un po'  perché non vorrei farmi passare per Google ed un po' per non rivelare a tutti l'email, lo stesso ma un po'meno se usassi it.tiscali.marco.scarpa (forse tiscali non è nota quanto Google ma lo stesso non vorrei farmi passare per loro e lo stesso sul non rivelare l'email), qualche idea? se ospito il progetto su github è ragionevole usare qualcosa tipo com.github.qwertyscar ?

P.S. ho visto delle volte usare come root dei package dei progetti com. perché tutti fcevano così senza avere contezza della notazione reverse DNS ...

Simone Bordet

unread,
Jan 12, 2024, 12:28:45 PM1/12/24
to jugp...@googlegroups.com
Ciao,

On Fri, Jan 12, 2024 at 6:07 PM Marco Scarpa <qwert...@gmail.com> wrote:
>
> Ciao,
>
> Mi piacerebbe diffondere open source una piccola libreria che ogni tanto faccio per lavoro (l'ho fatta quasi uguale in due posti), praticamente implementerebbe Map<List<K>,V> per usare chiavi composte (mi sembra abbastanza una banalità come cosa e mi stupisce che progetti come Apache non ci abbiano pensato).

Perché devi garantire l'immutabilità della chiave (in particolare
hashCode() e equals()) e usare `List` sembra incitare a chiamare
add().
Certo puoi rendere la lista immutabile, ma a quel punto usi un record,
che permette anche di avere componenti di tipo diverso (altrimenti
devi usare List<Object> -- yuck) e anche se sono dello stesso tipo
puoi dare loro un nome diverso: con record Key hai Key.street e
Key.number invece di list.get(0) e list.get(1).

> Come licenza pensavo alla licenza MIT per consentire liberamente di usarla in progetti open e closed source (anche per essere protetto visto che sarebbe codice simile a quanto ho fatto per lavoro che non è open source), avete suggerimenti a riguardo?

Devi verificare di poterla rendere open source.

Se l'hai sviluppata durante il tuo lavoro per una società (per esempio
sei un impiegato, oppure un professionista al quale è stato chiesto di
sviluppare codice), di solito il codice appartiene alla società (non a
te -- tu sei stato pagato per quel codice quindi è loro), quindi ti
raccomando di chiedere il permesso alla società per evitare guai
futuri: la società potrebbe attaccarsi al fatto che hai reso open
source del codice della società che era un segreto industriale, e
prendere provvedimenti.
Se è una piccola libreria non dovrebbero esserci problemi a parlarne
con la società, ma fai in modo che la società ne sia pienamente al
corrente.

> Per dare il nome ai package, nel libro di Informatica 1 suggerivano, se non si ha un proprio dominio, di usare il proprio indirizzo email al contrario, solo che non mi sento tanto a mio agio ad usare com.google.qwertyscar , un po' perché non vorrei farmi passare per Google ed un po' per non rivelare a tutti l'email, lo stesso ma un po'meno se usassi it.tiscali.marco.scarpa (forse tiscali non è nota quanto Google ma lo stesso non vorrei farmi passare per loro e lo stesso sul non rivelare l'email), qualche idea? se ospito il progetto su github è ragionevole usare qualcosa tipo com.github.qwertyscar ?

Non devi usare la tua email :)

Usa un qualsiasi prefisso "top level" the ti piace, tipo
io.qwertyscar, o dev.qwertyscar, org.qwertyscar,
io.shoemark.qwertyscar, ecc.
Ti consiglio di non usare niente di trademarked, quindi niente
"google" o "java", "github", ecc.

--
Simone Bordet
---
Finally, no matter how good the architecture and design are,
to deliver bug-free software with optimal performance and reliability,
the implementation technique must be flawless. Victoria Livschitz
Reply all
Reply to author
Forward
0 new messages