Alessandro 'kLeZ' Accardo personal website

This is the personal website of an Italian developer once called 'kLeZ'.

Staticman c'è!

Posted on • by

Ecco lo sperato secondo articolo su Staticman, finalmente ho qualcosa da scrivere!

Le difficoltà ci sono state, ma devo dire che pensavo peggio, alla fine mi ci è voluta solo mezza giornata di lavoro per tirare su la baracca.
Anche se con un mucchio di se e ma e però, comunque il componente regge e io non ho speso un euro. Vittoria per me, ma amara.

Le basi: errori di programmazione per un progetto disorganizzato e fuori rotta

Il progetto Staticman, come ho detto altre volte è interessante, lo è molto, ma rimane dietro la barriera dell’interessante non riuscendo a fuggire dal blocco dei progetti destinati a morire. E se non cambia rotta succederà.

Inizio col dire che come ogni progetto molto piccolo le informazioni sono poche e difficili da reperire (anche dal sito “ufficiale”), questo perché lo vediamo nella sua fase embrionale. Il problema esiste perché il suo autore, il portoghese Eduardo Bouças, si è trovato a dover gestire una situazione che probabilmente non pensava di dover gestire, cioè una massa critica di utenti che ha permesso a questo progetto di uscire dalla bolla di invisibilità che copre ogni software prima che degli utenti si accorgano della sua esistenza e della sua (spesso relativa) utilità, esattamente come ancora succede al mio Wash Ideas.

Dal punto di vista puramente tecnico, ha incontrato e incontra ancora delle crisi di prestazioni che lo hanno portato a un cambio netto di implementazione e di approccio, come notificato nelle issues dagli utenti stessi. Vedo un tecnico con un approccio minimal working piece1 al servizio, un approccio che devo dire a me non piace.

Dal punto di vista organizzativo invece, poca è la documentazione del progetto, e minore ancora è la voglia di strutturare il lavoro in maniera adeguata, per far funzionare senza (troppi) disservizi questo software. Neanche dopo aver ricevuto uno sponsor, neanche dopo che qualche decina di persone ha iniziato a lavorare sul progetto, Eduardo ha dimostrato di voler fare di meglio: attualmente non c’è la minima ombra di organizzazione del team, degli sviluppi, non c’è una direzione, né delle milestone, né a dire la verità sembra esserci la volontà piena di far vedere la luce a questo piccolo progetto.

Tornando alla documentazione estremamente carente, sul sito ufficiale di Staticman si trovano informazioni per configurare (se mai ci sia la possibilità di riuscirci) quello che viene specificato come l’endpoint v2 mentre, come sembra dalle issues, gli endpoint v1 e v2 dovrebbero essere deprecati in favore dell’endpoint v3, che però non vuol saperne di funzionare adeguatamente e su cui chiaramente non c’è documentazione ufficiale per configurazione e manutenzione.

Inoltre, come se non bastasse, una volta scaricato il sorgente per configurare la mia istanza su Heroku (grazie al post non preciso ma almeno esistente sull’internet di Vincent Tam) sono riuscito anche a trovare un errore di programmazione che non avrebbe dovuto esserci, e che fortunatamente mi ha portato via solo mezz’ora, considerato tutto.

Questo è il prima:

  const github = new GitHub({
    username: req.params.username,
    repository: req.params.repository,
    branch: req.params.branch,
    token: config.get('githubToken')
  })

Questo è il dopo:

  const github = new GitHub({
    branch: req.params.branch,
    repository: req.params.repository,
    username: req.params.username,
    version: req.params.version,
    token: config.get('githubToken')
  })

Final thoughts

Insomma, in buona sostanza ho trovato un progetto molto utile, potenzialmente indispensabile, che ha raccolto solo grazie all’idea una massa critica di utenti, ma che purtroppo è mal gestito. A me funziona con un po’ di lavoro ma avrei preferito che funzionasse l’istanza pubblica, tutto sommato non è andata male.

  1. Concetto coniato da me in questa occasione, significa progettare solo il minimo della funzionalità, senza pensare a tematiche di buona progettazione come scalabilità e prestazioni.