Alessio Biancalana Grab The Blaster di Alessio Biancalana

Open source: come cambiano i business model

Open Source

The biggest driving factor for software developers to work together with open source is cost. It is much cheaper for them to cooperate through open source than it is to remain isolated with proprietary software, asserted Inktank VP of Product Management Neil Levine. “You can no longer rely on one particular vendor to provide everything you need with regard to technology.”

Un piccolo estratto da un articolo veramente interessante che ho letto oggi, sull’open source e la coopetition, dove viene mostrato come grazie ai nuovi business model portati avanti all’interno di un ecosistema simile i modelli comportamentali adottati dalle strutture di governance e gestione dei progetti divengano man mano più sagge, calibrate, e chiaramente collaborative (e come questo porti ad ammortizzare i costi colmando i debiti tecnici).

Consigliatissimo; specie il paragrafo “Opposing becomes joining”.

Photo courtesy of opensource.com

Twitter Bootstrap, l'interfaccia grafica del web

code

Oggi ho letto questo interessantissimo post di Dave Winer che espone un notevolissimo punto di vista per quello che riguarda Bootstrap, il framework per frontend development/design distribuito tramite GitHub (open source) da Twitter.

The idea of Bootstrap, as I see it, is to add a layer of standardization between the app developer and the "hardware," in this case, the user interface offered by the modern HTML 5 web browser. When you view it this way, there's nothing controversial about it. It's what engineers always do. When we see complicated chaos, we try to figure out what's really going on, and produce a simplified and rational view of it. Then all the code that rides on top of the new layer can also be rational and relatively simple.

Sostanzialmente Winer espone una tesi: con Bootstrap si sono venute a creare delle inconsapevoli HIG (Human Interface Guidelines), dato che l'utente riconosce un'applicazione creata con questo toolkit e ne identifica un certo design pattern che lo porta a cercare i menù e gli elementi familiari sempre negli stessi posti, un po' come funziona per le interfacce grafiche dei computer.

Questo viene stimolato in un certo senso dalla replicazione degli stessi elementi grafici (ad esempio l'aspetto dei bottoni) tra un sito e un altro. In poche parole, Bootstrap è diventato il GTK, il Cocoa del web: un toolkit con cui costruire interfacce, il più popolare, e probabilmente ciò che ha iniziato a definire un livello successivo (come dice anche il post originale) di come è possibile continuare la catena del software nel web.

Photo courtesy of Michael Imbeault

Red Hat / Fedora: RPMDB altered outside of yum

Fedora htop

Di recente sulla mia workstation con Fedora ho cominciato a pastrugnare con il package management in maniera indiscriminata, così invece di far fare tutto a Yum che mi dava qualche piccola incongruenza, per installare un pacchetto mi sono avvalso di RPM puro, cosa che ormai a quanto vedo non dovrebbe essere mai fatta, demandando a yum localinstall il compito di installare pacchetti singoli.

Fatto sta, che ho avuto un feedback "strano" dalla mia macchina provando a usare direttamente RPM: ha cominciato a rompermi le scatole ad ogni operazione di gestione dei pacchetti avvisandomi che il database di RPM era stato modificato senza che Yum lo avesse autorizzato.

Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.

Al di là di ogni presa di coscienza del fatto, e procurato allarme (ok, ho scardinato RPM, ho capito), può essere utile rimettere in marcia il nostro sistema senza che mostri più quel feedback che, con tutto il rispetto, ma mi ha fatto prendere un accidente. Mi sono guardato un po' intorno e ho notato che basta dare un singolo comando per liberarsi di questo peso sulla coscienza:

$ sudo yum clean all

Occultamento di cadavere? Forse si. Ma se la macchina la amministriamo noi, chi se ne importa. Buon lavoro :-)

Photo courtesy of Kaleb Fulgham

Registry npm privato: in cloud con Nodejitsu oppure in-house

Node.js

Proprio in questi giorni, ho letto che Nodejitsu ha cominciato a implementare il proprio modello per i registry privati di pacchetti npm in modo che le aziende possano mantenere i propri package privati su un server in cloud a prezzi comunque sostenibili. Il tutto si basa sull'utilizzo del modulo di Node smart-private-npm; di seguito, un esempio preso dal loro blog dove sfruttano Node.js per fornire un registry privato insieme alla loro libreria, da poco (immagino) resa open source per chi comunque non può permettersi un costo così elevato (perché in startup o per qualche altro motivo) e decide di sostituire al costo della cloud qualche ora di effort e una macchina - o una VPS. Ovviamente io consiglio DigitalOcean che permette l'hosting di droplet su SSD :D

var smartPrivateNpm = require("smart-private-npm"),
    url = require("url");

//
// Configure your private npm. You could load this in from a file
// somewhere.
//
var config = {
  rewrites: require("./config/rewrites"),
  proxy: {
    //
    // Location of the target public npm registry. 
    //
    npm: url.parse("http://user:[email protected]"),
    //
    // Private npm options.
    //
    policy: {
      npm: url.parse("http://user:[email protected]"),
      private: {
        //
        // This is the list of 'known private modules'
        // that will always be proxied to the private npm.
        // It is built over time by remembering 'publish' requests.
        //
      },
      blacklist: {
        //
        // This is the list of modules that will ALWAYS be proxies
        // to the private npm, no matter what.
        //
      },
      whitelist: {
        //
        // If enabled: only requests for these modules will be served
        // by the proxy (unless they are 'known private modules').
        //
      },
      //
      // In 'transparent mode' the proxy will always forward to
      // the public registry.
      //
      transparent: false
    }
  },
  //
  // Server options (from 'create-servers')
  //
  http: 80
  https: {
    port: 443,
    root: "/path/to/your/ssl/files",
    key: "your-ssl.key",  // or .pem
    key: "your-ssl.cert", // or .pem
  }
};

smartPrivateNpm.createServer(config, function (err, servers) {
  if (err) {
    console.log("Error starting private npm: %j", servers);
    return process.exit(1);
  }

  console.log("Private npm running on %j servers.", Object.keys(servers));
});

Per l'operazione di pubblicazione dei pacchetti npm su un registry diverso, va semplicemente riadattato poi il comando che andiamo a dare nella shell:

npm publish some-private-code --reg http://localhost/

Ho trovato con cosa giocare stasera dopo il lavoro. In bocca al lupo a chiunque si voglia cimentare, e come sempre grazie a Nodejitsu per tutto l'open source che ci regala.

Photo courtesy of Trygve Lie

Flow: il mio nuovo tema per WordPress è open source

github open source

In due o tre, dall'ultimo restyle del blog che risale a questo capodanno, mi hanno fatto i complimenti per il nuovo tema; effettivamente non c'è voluto molto, ma ho dovuto mettere insieme qualche tassello per permettere la modifica della foto nell'header e qualche altra cosetta. È anche la mia prima esperienza diretta con il responsive web design: finora avevo demandato tutto a framework come Foundation o Bootstrap, ma ho deciso di fare tutto da zero e scrivermi un po' di media query da solo (con stili associati).

Flow (ho deciso di chiamarlo così) è su GitHub sotto licenza GPL2 per motivi di fork dal tema padre, Lean, a sua volta basato su Underscores; mi sono trovato molto bene a costruire un tema su Underscores, tuttavia anche le opzioni che ha elencato Francesco recentemente non sono niente male, e se dovessi ripartire da zero oggi userei BlankSlate.

Cosa c'è e cosa non c'è

  • Per il momento all'interno del tema è presente la possibilità (implementata nel functions.php con delle specifiche precise) di cambiare l'immagine dell'header, che in questo caso è banalmente la foto circolare. In questo blog c'è la mia, ma di default ho inserito un simpatico capibara.
  • Il codice è quello che è, è mio e ogni scarafone è bello a mamma sua. Ogni lamentela che non alleghi una pull request non verrà presa in considerazione. :D
  • L'aspetto meno simpatico è che ho fatto hardcoding su un paio di cosette come il mio nome e il "gdb ./life" presente nella testata. Al momento non ho in programma di portare questi aspetti ad un livello più pulito e di backend, quindi chi vuole usare il tema lo modifichi tranquillamente. Chi invece ha tempo e voglia di perderci una mezz'ora a implementare un pannellino di configurazione, ha una birra pagata quando ci vediamo.
  • Flow è responsive!
  • Alla batteria, Mike Mangini.

Che altro dire: divertitevi. :)

Photo courtesy of Brennan Bearness

Member of

Previous Random Next