alvisespano / Polygen

The famous random sentence generator.
Other
39 stars 9 forks source link

Grammatiche (submodule/cartelle) #8

Closed tajmone closed 6 years ago

tajmone commented 6 years ago

Ciao @alvisespano,

ho notato che con i commit caabec6 e 95c8706 hai (1) elimianto il submodule delle gramamtiche e (2) le hai sostituite con cartelle di grammatiche locali.

L'eliminazione del submodule non è di per sé problematico, anche se credo cha la centralizzazione delle grammatiche in un solo repository appositamente dedicato semplifichi mantenere aggiornati vari progetti che usufruiscono di tali file. Ma d'altronde non è che piovono decine di grammatiche nuove dal cielo ogni giorno, quindi il problema è più teorico che pratico.

Riguardo al punto (2), ho notato cha hai pubblicato tutte le grammatiche disponibili.

Nel mio repo polygen-grammars avevo implementato una exclusions-list tramite file .gitignore. Le motivazioni che mi avevano spinto a creare l'esclusion list sono spiegate nello README del progetto grammatiche. Ma le motivazioni lì esposte sono (volutamente) generiche.

Alcune delle grammatiche che avevo escluse sono in potenziale conflitto con i termini d'uso imposti da GitHub. Credimi, non lo dico per pedanteria o bigottismo, ma mi è capitato in passato di assistere ad una "flame war" che è scoppiata (proprio qui, allargandosi poi a tutto il web) perché era stato creato un progetto con un nome che venne considerato "politcamente scorretto" e misogeno (e, nota: non conteneva neanche una parolaccia, e il progetto era creato da una donna). A poco sono false le linee difensive dell'autrice, che non conosceva bene l'inglese e diceva di aver mal compreso il termine: oltre alla chiusura degli account, si è assistito a un vero linciaggio mediatico (i post erano così tanti che hanno dovuto bloccare e/o moderare quasi tutti i thread in cui se ne parlava). Morale della favola, quella (per altro nota) sviluppatrice si è ritirata dal mondo open source (dove per altro le rimanevano ormai pochi collaboratori disposti ad associarsi a lei).

Tutto questo per un nome di progetto che poteva (più o meno indirettamente) essere considerato sessista ed offensivo verso il genere femminile. Ti lascio immaginare l'enormità delle conseguenze per un progetto che utilizzasse termini che si riferiscono alle razze secondo il colore della pelle (cosa che in molti paesi rientra nell'ambito penale, e va ben oltre la violazione dei termini).

Non voglio neanche entrare nel merito di quel dibattito (ovunque stesse la ragione, il dibattito si è presto trasformato in linciaggio mediatico e diverticidio, ed anche con grossa risonanza). Era solo per sottolineare la necessità di mantenere toni neutri ed apolitici su GitHub.

D'altronde e ragionevole considerare che l'utenza di questo servizio è vastissima, ed abbraccia culture e nazionalità di ogni tipo.

La mia idea era quella di fornire alcune grammatiche a titolo di esempio (e anche dopo la filtrature della lista d'esclusioni, ne restano molte), e offrire link a siti esterni per chi volesse scaricare le restanti.

Alcune grammatiche, a mio avviso, non andrebbero assolutamente condivise su GitHub. Altre le escluderei più che altro per mantenere una linea sicura, e non urtare la sensibilità di nessuno. I link esterni sono sempre disponibili (in realtà anche interni, dato che la collezione completa è disponibile anche in un altro progetto su GitHub).

E credimi, questo non ha niente a che vedere con forme di bigottismo e censura. Per me la libertà di parola e pensiero valgono sempre e comunque (e non solo quando mi trovo d'accordo), ma questo è un servizio privato, non pubblico. Perlopiù, vorrei evitare contrasti con il servizio ed i suoi utenti.

Possiamo tranquillamente condividere le gramamtiche su qualche spazio privato (occupano pochissimi mega), e saremmo in una botte di ferro (i link non contano).

Che ne pensi?

alvisespano commented 6 years ago

Mi hai convinto. Hai più esperienza di me nelle questioni social/community/open source ecc e mi sembra molto ragionevole ciò che dici. Superficialmente avevo pensato di includerle tutte, ma in realtà, come dici tu, non è così semplice. Il polygen inteso come programma teniamolo pure separato dalle grammatiche e dai toni comici di polygen.org: anche se è nato per far ridere, in realtà il programma è sufficientemente sofisticato e formalmente rilevante da avere una sua dignità come progetto puramente informatico-linguaggistico, senza metterci dentro le grammatiche. Vada per la selezione di grammatiche "innocue", che comunque sono un buon numero lo stesso. E le altre le metteremo da qualche parte: da qualche parte dobbiamo metterle però, perché alla fin fine la gente ride grazie alle grammatiche più fetenti :) Come si crea il submodule?

Il giorno 15 gennaio 2018 13:36, Tristano Ajmone notifications@github.com ha scritto:

Ciao @alvisespano https://github.com/alvisespano,

ho notato che con i commit caabec6 https://github.com/alvisespano/Polygen/commit/caabec6c37815b932e464e69d1c95df13d1ab542 e 95c8706 https://github.com/alvisespano/Polygen/commit/95c870610f8b4efda092cb0a27156a40ab15f9ae hai (1) elimianto il submodule delle gramamtiche e (2) le hai sostituite con cartelle di grammatiche locali.

L'eliminazione del submodule non è di per sé problematico, anche se credo cha la centralizzazione delle grammatiche in un solo repository appositamente dedicato semplifichi mantenere aggiornati vari progetti che usufruiscono di tali file. Ma d'altronde non è che piovono decine di grammatiche nuove dal cielo ogni giorno, quindi il problema è più teorico che pratico.

Riguardo al punto (2), ho notato cha hai pubblicato tutte le grammatiche disponibili.

Nel mio repo polygen-grammars https://github.com/tajmone/polygen-grammars avevo implementato una exclusions-list https://github.com/tajmone/polygen-grammars#exclusions-list tramite file .gitignore https://github.com/tajmone/polygen-grammars/blob/master/.gitignore. Le motivazioni che mi avevano spinto a creare l'esclusion list sono spiegate nello README https://github.com/tajmone/polygen-grammars#exclusions-list del progetto grammatiche. Ma le motivazioni lì esposte sono (volutamente) generiche.

Alcune delle grammatiche che avevo escluse sono in potenziale conflitto con i termini d'uso imposti da GitHub. Credimi, non lo dico per pedanteria o bigottismo, ma mi è capitato in passato di assistere ad una "flame war" che è scoppiata (proprio qui, allargandosi poi a tutto il web) perché era stato creato un progetto con un nome che venne considerato "politcamente scorretto" e misogeno (e, nota: non conteneva neanche una parolaccia, e il progetto era creato da una donna). A poco sono false le linee difensive dell'autrice, che non conosceva bene l'inglese e diceva di aver mal compreso il termine: oltre alla chiusura degli account, si è assistito a un vero linciaggio mediatico (i post erano così tanti che hanno dovuto bloccare e/o moderare quasi tutti i thread in cui se ne parlava). Morale della favola, quella (per altro nota) sviluppatrice si è ritirata dal mondo open source (dove per altro le rimanevano ormai pochi collaboratori disposti ad associarsi a lei).

Tutto questo per un nome di progetto che poteva (più o meno indirettamente) essere considerato sessista ed offensivo verso il genere femminile. Ti lascio immaginare l'enormità delle conseguenze per un progetto che utilizzasse termini che si riferiscono alle razze secondo il colore della pelle (cosa che in molti paesi rientra nell'ambito penale, e va ben oltre la violazione dei termini).

Non voglio neanche entrare nel merito di quel dibattito (ovunque stesse la ragione, il dibattito si è presto trasformato in linciaggio mediatico e diverticidio, ed anche con grossa risonanza). Era solo per sottolineare la necessità di mantenere toni neutri ed apolitici su GitHub.

D'altronde e ragionevole considerare che l'utenza di questo servizio è vastissima, ed abbraccia culture e nazionalità di ogni tipo.

La mia idea era quella di fornire alcune grammatiche a titolo di esempio (e anche dopo la filtrature della lista d'esclusioni, ne restano molte), e offrire link a siti esterni per chi volesse scaricare le restanti.

Alcune grammatiche, a mio avviso, non andrebbero assolutamente condivise su GitHub. Altre le escluderei più che altro per mantenere una linea sicura, e non urtare la sensibilità di nessuno. I link esterni sono sempre disponibili (in realtà anche interni, dato che la collezione completa è disponibile anche in un altro progetto su GitHub).

E credimi, questo non ha niente a che vedere con forme di bigottismo e censura. Per me la libertà di parola e pensiero valgono sempre e comunque (e non solo quando mi trovo d'accordo), ma questo è un servizio privato, non pubblico. Perlopiù, vorrei evitare contrasti con il servizio ed i suoi utenti.

Possiamo tranquillamente condividere le gramamtiche su qualche spazio privato (occupano pochissimi mega), e saremmo in una botte di ferro (i link non contano).

Che ne pensi?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/alvisespano/Polygen/issues/8, or mute the thread https://github.com/notifications/unsubscribe-auth/ACcZxuNhKpK3XGEDeHRm_V7fa0HN5YXqks5tK0ZpgaJpZM4ReWk5 .

tajmone commented 6 years ago

L'diea sarebbe quella di riscrivere la storia dei commit, elminandone alcuni e preservandone altri.

Lo stato attuale è visibile su:

https://github.com/alvisespano/Polygen/commits/master

i commit in questione sono (dove la spunta indica i commit da preservare, e l'assenza di essa quelli da spurgare):

Praticamente servirebbe fare un rebase interattivo degli ultimi 5 commit, scartandoli tutti tranne 6dbc98a e 17f01e5. Questo rimuoverebbe definitivamente dalla storia ogni traccia delle modifiche alle grammatiche, e riporterebbe il progetto allo stato del submodle che avevo aggiunto.

Ma dovrei guardare bene i dettagli di tutti i commit per assicurarmi che non ci siano anche altre modifiche nel mazzo.

Se no, cosa più semplice, sarebbe fare una copia della cartella attuale, e fare un hard reset del progetto al mio ultimo pull request (52983fe, Add Windows Precompiled Binaries), e poi ci ributti dentro la cartella tutti i contenuti che avevi copiato, tranne le cartelle che riguardano le grammatiche.

tajmone commented 6 years ago

In teoria dovrei poterlo fare anche io, a meno che non hai impostato il progetto per la protezione contro i commit distruttivi e gli hard reset (nel qual caso queste operazioni richiederebbero il tuo intervento manuale). Se vuoi ci provo.

alvisespano commented 6 years ago

I settaggi permettono i fare rebase e merge di ogni tipo. Dovresti poterlo fare, quindi. Vai, prova.

tajmone commented 6 years ago

Ok. dammi un attimo e ti aggiorno quando ho fatto (devo clonare anche il tuo repo, finora lavoravo solo con la mia fork).

tajmone commented 6 years ago

Ok, ho riscritto la storia con successo:

https://github.com/alvisespano/Polygen/commits/master

come vedi siamo ritornati al punto in cui avevo aggiunto le grammatiche filtrate tramite submodule.

Poi ho sovrascritto il tutto con le tue modifiche (sorgenti, README, ecc.) e fatto un nuovo commit.

Dovrai aggiornare la tua copia locale. E poi controlla se le tue modifiche sono tutte recuperate.

alvisespano commented 6 years ago

Allora le grammatiche (filtrate come dici, intendo) le hosti sul tuo repo o le mettiamo su un mio repo? Cosa dici?

Il giorno 15 gennaio 2018 15:25, Tristano Ajmone notifications@github.com ha scritto:

Ok, ho riscritto la storia con successo:

https://github.com/alvisespano/Polygen/commits/master

come vedi siamo ritornati al punto in cui avevo aggiunto le grammatiche filtrate tramite submodule.

Poi ho sovrascritto il tutto con le tue modifiche (sorgenti, README, ecc.) e fatto un nuovo commit.

Dovrai aggiornare la tua copia locale. E poi controlla se le tue modifiche sono tutte recuperate.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/alvisespano/Polygen/issues/8#issuecomment-357696785, or mute the thread https://github.com/notifications/unsubscribe-auth/ACcZxvK6wE8VMauY7-htCBx5hNXqRRiQks5tK1_LgaJpZM4ReWk5 .

tajmone commented 6 years ago

Mhhh... vedo che sono ricomparsi i commit.

Si vede che non avevi aggiornato la tua copia locale e li hai di nuovo pubblicati.

Avevo riportato il repository ad uno stato in cui le grammatiche erano presenti come submodules, ma ora sono ricomparse.

Facciamo così, resetto di nuovo il progetto al punto di prima, e poi aggiorni la tua copia locale con:

git reset --hard origin/master
tajmone commented 6 years ago

Resettato. Ora resetta la tua copia locale:

git reset --hard origin/master

PS: non so cosa usi per lavorare con Git, se la linea di comando o una qualche GUI, ma con quel comando vai sul sicuro.

tajmone commented 6 years ago

Purtoppo Git è lo strumento meno user-friendly della storia dell'informatica (basta leggere i titoli di manuali come Git for Humans per capire che qualcosa non va). Un sacco di comandi dai nomi esotici, presi a prestito ora dalla botanica (branch, tree, prune, ecc.) ora dall'idraulica (porcellain, plumbing, ecc.), è a dir poco confusionale.

Se non fosse che Git è così famoso e usato, VCS come Fossil sono molto più potenti (checkout di branch multipli in cartelle diverse), e necessitano di un solo file binario (e offre anche il Wiki per ogni progetto). Solo che per Fossil c'è solo Chisel come piattaforma per condividere progetti, e non è così usata come GitHub.

Sigh!

alvisespano commented 6 years ago

Ti chiedo scusa, è colpa mia. Non sono esperto di git: uso github desktop e di solito mi limito a committare/pushare ecc. Le cose base.

alvisespano commented 6 years ago

Programmo da quando ho 8 anni, ho fatto di tutto, tutta la vita, dalle demo in assembly su Amiga ai compilatori per linguaggi inventati da me. E non capisco UN CAZZO di git!

alvisespano commented 6 years ago

Ho appena mergiato e ripushato tutti i commit Sparami se vuoi, me lo merito

alvisespano commented 6 years ago

Spiegami cos'è il subcommand reset e cos'è un hard reset del repo, perché sennò mi tocca leggere 5 terabyte di documentazione

tajmone commented 6 years ago

Sono tornati i commit!

No prob. resetto di nuovo.

Il problema sembra avere a che fare con la tua copia locale, e il fatto che fai il merge.

Io ho di nuovo resettato, tu devi solo aprire la tua copia locale del repo e dalla riga di comando scrivere:

git reset --hard origin/master

questo dovrebbe forzare nella tua copia locale le modifiche che ho fatto, e quindi cancellare i commit che ho tolto.

E non serve un merge in questo caso (il progetto è tuo, non devi mergiare nulla)

tajmone commented 6 years ago

Il brutto dello riscrivere la storia di un repository (che è anche il motivo per cui non andrebbe fatto a meno che non serva davvero, come nel nostro caso) è che varie persone hanno già scaricato il repository, e se riscrivo la storia (modifico i commit) è necessario che tutti quelli che hanno clonato facciano un hard reset locale.

Se no, ogni volta che fanno un push riscrivono i commit che sono stati cancellati.

Ovviamente questo avviene perché entrambi abbiamo diritti di scrittura su master qui, e quindi non devo per forza fare una pull request per le modifiche.

Facendo l'hard reset locale tu forzi Git a riscrivere il tuo indice locale, di modo che sia identico a quello su GitHub (che io ho modificato eliminando gli ultimi 6 commit). Questa è un'operazione distruttiva, nel senso che l'hard reset rimuove del tutto quei commit dalla storia del repo.

tajmone commented 6 years ago

PS: in parole povere, git reset --hard origin/master è equivalente all'aver cancellato la cartella del repository locale e averla clonata di nuovo, da zero (solo in parte, perché questo comando resetta solo master, e non altera eventuali tue branch locali di lavoro, ma il concetto è quello).