La preziosa comunita’ Opensource, parte II.

Quando ho scritto la prima volta sulla presunta comunita’ linux il post ha girato un pochino di blog e ovviamente la risposta e’ stata “ma no, scherziamo, io quando ho avuto bisogno ho trovato persone bravissime gentilissime che mi hanno pure pagato l’ IRPEF, non e’ vero chei forum sono cosi’, marrano se hai il coraggio fai vedere un caso concreto”. Ebbene, ho un esempio da mostrarvi, fresco fresco.

 

Succede che qualcuno , laddove lavoro, e’ interessato a stabilire che tipo di difficolta’ tecnica (e di precedenti tecnologici)   possa avere la condivisione di musica su scala sociale, nel caso un’azienda telco che gia’ fornisce musica agli utenti possa ottenere  un DRM “speciale”.

 

Bene, mi faccio un giro per il mondo opensource e vedo che esiste (ANCHE) questo tomahawk, che viene descritto come la “next big thing” e che sembra essere tra i capostipiti di questa roba. Non nel senso che sia il migliore, ma nel senso che implementa i concetti del caso “cosi’ come vengono percepiti quando se ne parla”.

 

Cosi’ prendo il mio Ubuntu e me lo scarico, e cerco di farlo girare. Senonche’ , semplicemente e’ inutilizzabile perche’ crasha solo premendo un pulsante di forward. Cosi’ mi rivolgo al meraviglioso “forum della comunita’” che , secondo i fanatici, e’ cosi’ meraviglioso.

 

Ecco la prima risposta, che e’ una delle classiche risposte: sul mio pc (con le mie librerie) funziona, se non funziona sul tuo controlla:

 

This means, you either don’t have Phonon 4.5 or a too old / wrong Phonon backend.

Make sure to have Phonon-Gstreamer 4.5.1 or Phonon-VLC 0.4.0, and have one of them selected as your default Phonon backend. Otherwise you’ll end up in this situation and there’s not much we can do about it.

I problemi di questa risposta sono tre:

  1. Ubuntu arriva proprio con il pacchetto vlc sbagliato.
  2. Non e’ vero che basta averne “one of them” come default, perche’ solo vlc funziona.
  3. Il formato deb, in questi casi, permette di settare le librerie come dipendenze.
Morale della storia: quella risposta (che lo stesso tipo ripete quasi in continuazione a tutti), e’ sbagliata.

 

Innanzitutto c’e’ qualcosa che possono fare, ovvero inserire le librerie da cui il software dipende come dipendenze nel pacchetto deb. In secondo luogo c’era qualcosa che potevano fare, ovvero provare se per caso il problema fosse proprio quello, visto che parliamo di una beta 0.1.0

 

Questo pero’ non risolverebbe del tutto il problema, perche’ ubuntu 11.04 NON usa ancora quelle librerie, ed e’ necessario installarle come backport da uno specifico PPA. In pratica, Tomahawk funziona sul PC dello sviluppatore perche’ le librerie le ha installate insieme all’ambiente di sviluppo. Tutti gli altri utenti non potranno.

 

Terzo, lo sviluppatore NON ha provato ad andare a fondo nel problema, perche’ la sua risposta e’ FALSA: non e’ che qualsiasi tra GStreamer o VLC vada bene, bensi’ funziona SOLO con uno dei due, come ho dimostrato sotto.

 

Cosi’, la mia prima reazione e’ stata (non mi andava di polemizzare su come abbiano creato il pacchetto .deb senza le dipendenze) di procurarmi, attraverso il PPA dei backport, il giusto backend.

 

Tuttavia, anche cosi’ non funzionava, e gliel’ho detto. Al che, si e’ verificato il cosiddetto “bump”, e cioe’ “parla pure, tanto nessuno ti ascolta”, altro grosso problema della comunita’ Linux.

 

Siccome io vivo si truss, dtrace, sar & co (su Solaris) e di strace (su Linux), e il solito atteggiamento mi ha fatto girare i coglioni, ho deciso di andare un pelino a fondo in quella applicazione. Morale: a fallire e’ sistematicamente l’utilizzo del backend GStreamer. Ovvero, lo sviluppatore mi ha detto il FALSO (in buona fede o meno) quando mi ha detto che occorreva scegliere UNO DEI DUE come backend preferito: il loro software crasha , e i simboli di debug sono visibili chiaramente con tanto di riga del codice, quando tenta di riusare un backend specifico, che e’ GStreamer:

 

gettimeofday({1308257846, 466358}, NULL) = 0
stat64(“/etc/localtime”, {st_mode=S_IFREG|0644, st_size=2652, …}) = 0
write(1, “PHONON-GST 33[00;36mBEGIN:33[00;39″…, 82PHONON-GST BEGIN: void Phonon::Gstreamer::StreamReader::unlock()
) = 82
write(24, “22:57:26 Debug: PHONON-GST 33[00;”…, 98) = 98
gettimeofday({1308257846, 466657}, NULL) = 0
stat64(“/etc/localtime”, {st_mode=S_IFREG|0644, st_size=2652, …}) = 0
write(24, “22:57:26 Fatal: ASSERT: ”d->conn”…, 89) = 89
write(1, “ASSERT: ”d->connected” in file .”…, 73ASSERT: “d->connected” in file ../../phonon/streaminterface.cpp, line 89
) = 73
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
tgkill(17646, 17646, SIGABRT) = 0

A quanto pare, in “streamerinterface” c’e’ una singola chiamata (alla riga 89) che inizia il disastro. E’ abbastanza chiaro che la cosa avvenga durante una chiamata ad una sottoclasse di Phonon, che richiede il rilascio della connessione con il backend.

 

Osservando il codice, la cosa e’ abbastanza chiara: cosi’ come stanno facendo, il codice permette di rilasciare la connessione (unlock()) mentre ancora il pezzo sta suonando. Ma questo metodo di GStreamer sembra fatto per agire quando il flusso e’ chiuso. VLC lavora diversamente. Dunque, il risultato sara’ che non puoi premere “il tasto forward” mentre stai eseguendo un brano.

 

Cosi’, lo sviluppatore ha detto il falso. E la cosa IRRITANTE e’ che la stessa risposta, usata come copia-incolla , viene data praticamente a CHIUNQUE si lamenti di un problema col suono. Lo sviluppatore NON si e’ nemmeno degnato di riprodurre il problema e vedere se per caso le cose stessero come diceva lui: semplicemente ha dato la risposta di default. Appena ha visto che le librerie di Ubuntu (che loro NON indicano come dipendenza quando fanno il pacchetto) subito ha puntato quelle.

 

Ma avrei due domande:

 

  1. Fai un pacchetto per ubuntu senza chiederti che librerie siano installate , tutte uguali, su migliaia di macchine?
  2. Non indichi le dipendenze nel pacchetto .deb permettendo l’installazione “con un click?” anche a chi non sa come funzioni phonon?
  3. Dici il falso affermando che qualsiasi backend va ugualmente bene?

 

A voi sembreranno problemi triviali, ma se IO faccio una cosa simile e il mio gruppo rilascia un software da installare su un cellulare SENZA che verifichi i requisiti del cellulare e SENZA che verifichi i settaggi dello stesso, milioni di utenti chiameranno incazzati il customer care, con costi maggiori, eccetera.

 

Passi per la completa mancanza di professionalita’, ma c’e’ un altro punto: la risposta di default. Quella stessa merda viene data sempre uguale e assolutamente generica a tutti. La trovate, come risposta, a praticamente chiunque ponga un problema. Solo che dice il falso, e alla fine  bastava semplicemente installare il configuratore di KDE e configurare VLC come player, evitando che venga scelto GStreamer, e tutto funziona.

 

Ecco il vostro esempio. Bastava riprodurre il problema facendo partire un cavolo di istanza e usare il comando “strace” per vedere cosa stava succedendo. Due minuti -due- di test, ci ho messo. E io NON conosco il codice.

 

Ma il signore in questione, tanto per rappresentare la famosa “comunita’ opensource che ti aiuta e si fa in quattro per te” non ritiene di farlo.

 

La sua idea di “farsi in quattro per te” consiste nel farti un copia-incolla di una risposta superficiale  e peraltro falsa. E ripeto falsa, perche’ non posso scegliere liberamente quale backend usare: uno dei due va in crash anche quando viene portato alla release giusta.

 

Ovviamente non e’ sempre cosi’, nel senso che non si comportano sempre cosi’. Hanno altri modi per essere inutili. Forse ho preso io troppo alla lettera quando ha detto che il backend gstreamer o vlc “ and have one of them selected as your default Phonon backend.”

 

Tuttavia, per essere una “comunita’ che si fa in quattro per te” l’esperienza e’, ancora una volta, piuttosto deludente.

 

Faccio notare che non ho voluto essere irritante e sono stato MOLTO piu’ amichevole di quanto e’ mio solito essere. Un tizio che fa un pacchetto .deb (che non si installa se le dipendenze non sono soddisfatte) senza settare dipendenze (CHE CI SONO)  NON DEVE venirmi a dire che “il software dipende dalle librerie ma la dipendenza NON e’ soddisfatta”: normalmente la mia risposta e’ “BULLSHIT software”.MA semplicemente, non deve venirmi a dire “non c’e’ niente che ci possiamo fare”.

Certo che c’e’:

  • Testare il tuo software su una macchina ubuntu standard e non su quella ove hai l’ SDK, che magari aggiorni quotidianamente e contiene le ultime patch.
  • Configurare le dipendenze che ripeti a tutti in un noiosissimo messaggio di risposta  nelle dipendenze del pacchetto .deb che rilasci.
  • PROVARE a riprodurre il problema denunciato dall’utente per capire cosa succeda.
Avrei potuto incazzarmi SONORAMENTE e dargli del buffone sin dall’inizio, solo per la 1 e la 2.
Invece IO sono andato ad installarmi i due backend delle versioni giuste e ho riportato che non funzionava lo stesso, come se la colpa fosse effettivamente mia. Immagino cosa succederebbe se facessimo cosi’ in ambiente telco, e 250 milioni di persone ricevessero un software che si installa sul cellulare ma non va perche’ non hanno aggiornato il firmware, ma il software si installa ugualmente.Immagino la scena:  i call center delle telco impazziti, l’associazione dei consumatori che ci lincia, i manager che girano col pugnale per l’edificio, noi che facciamo nottate per risolvere il problema, e noi che rispondiamo: ma e’ colpa dell’utente che non aveva aggiornato le tali librerie! Certo il nostro software controlla le librerie ma non lo abbiamo settato per farlo, e peraltro non abbiamo nemmeno tentato di riprodurre il problema per vedere come avvenga, dando una risposta prestampata a tutti.

 

Ci licenzierebbero  e ci chiederebbero i danni.

 

Invece no. Loro puo’, perche’ loro opensource. E non si prendono  nemmeno la briga di scrivere “strace -p” su un terminale e riprodurre il problema.

 

Ripeto: sono stato fin troppo gentile, ho finto di essere un utente stupido, e gli ho pure regalato la soluzione. NON potete accusare ME di essere stato troppo duro.Non sono stato IO a violare le presunte regole della “preziosa comunita’ Opensource”. Io HO dato una mano. Potevo semplicemente tenermi la soluzione invece di postarla sul loro forum. Non sono IO quello che ha sbagliato ne’ sono IO quello che si e’ comportato male. Sono stato MOLTO piu’ gentile di quanto avrei dovuto, e peraltro ho accettato che la colpa di non avere le librerie giuste fosse mia, quando LORO conoscono la dipendenza e LORO non l’hanno inserita nelle dipendenze del .deb. Ho anche postato la cosa sul loro forum, quando potevo tenermela, valutare il valore del software e delle soluzioni scelte, e continuare con altri software. Anzi, l’ultimo MIO post del thread potrebbe essere utile ad ALTRI utenti che hanno lo stesso problema. Quello Opensource (secondo l’accezione comune) , nella vicenda, SONO IO.

 

Potete vedere, pero’, come siano LORO. Questo e’ il meraviglioso tipo di “supporto” che ottenete. E no, non vale il discorso “e’ gratis, o cosi’ o paghi”. Perche’ qualcuno , poi, potrebbe davvero riempirvi di merda qualsiasi cosa sia gratis. L’aria, per esempio.

 

 

Uriel

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *