La mia esperienza nell’open source

Nel 2011,  per studiare node js creai un progetto chiamato OrgModeParser.

Org Mode è un package per l’editor Emacs, ed è pensato per tenere note strutturate, pianificare progetti con una schedulazione, mantenere una lista di cose da fare e generare poi documenti word o html da tali file in modo piuttosto efficace.

Il package è di nicchia, nel senso che devi saper usare emacs per apprezzarlo, ed è molto più comodo di MS-OneNote una volta che ci avete preso mano. Ha inoltre il grosso vantaggio che i file che manipolate sono semplici file di testo strutturati, per cui possono essere aperti senza problemi anche con semplici file di testo.

Nel 2011 NodeJS era alla versione 0.4 ed era una “novità”.  Si trattava di un software pensato per far girare applicazioni javascript lato server, basato sulla versione Crankshaft (2010) di V8, il compilatore Javascript di Google, a cui Google lavorava almeno dal 2008. In particolare NodeJS integrava anche delle librerie asincrone, che lo rendevano un linguaggio ideal per sviluppare server “mono-processo multi-richiesta ad eventi asincroni”, il sistema più veloce che c’è per gestire molte connessioni consumando poche risorse.
L’importaza di V8 era dovuta al fatto che ai tempi JavaScript non era ancora dotato di una tecnologia così raffinata come quella messa in campo da Crankshaft, che in sintesi era in grado di compilare il codice dinamico di JavaScript in linguaggio macchina in modo piuttosto efficiente. Crankshaft prendeva spunto da StrongTalk, una variante di SmallTalk in grado di “tipizzare in modo forte” un linguaggio come Smalltalk, e quindi rendere più efficiente la sua compilazione in linguaggio macchina.

Per cui nel 2010 V8 era la tecnologia più avanzata, JavaScript stava diventando sempre più importante e NodeJS era una novità che aveva parecchia trazione.

Creai il progetto per OrgModeParser su GitHub. Il mio obiettivo era approfondire lo studio del modello asincrono di NodeJs, e difatti la prima versione del parser derivava da un parser scritto in python da tal Harles Cave.

Ai tempi JavaScript era un linguaggio piuttosto…bizzarro, in rapida evoluzione e non proprio lineare (per usare un eufemismo) per cui decisi di tapezzare il parser di test di unità, anche per ripassare gli idiomi più in voga.

Continuai ad aggiornare OrgModeParser ad intervalli irregolari, con una grossa pausa tra il settembre 2013 e l’aprile 2014.

Su Github iniziarono a fiorire subito un paio di fork al mio codice, e l’interesse per il progetto era piuttosto buono, considerato che altri miei progetti che ritenevo più utili erano quasi ignorati. In parte penso che questo fosse dovuto all’interesse intorno a nodejs, al fatto che JavaScript è molto immediato, e che il codice fosse organizzato in modo molto “standard” e pubblicato sul repository di nodejs chiamato NPM.

Ho ridotto le dipendenze al minimo e ho sempre fatto in modo che l’API fosse retro compatibile, per incoraggiare le persone ad aggiornare il software.

 

Senza particolare sforzo il mio parser è finito nella pagina del sito di OrgMode dedicata ai tools scritti in altri linguaggi.

Nel dicembre 2015 ho sviluppato un piccolo motore di rendering in html, e poi non ho avuto più tempo di occuparmi del progetto per un anno.

A fine 2016 mi sono accorto che erano fioriti parecchi fork ed estensioni del motore di rendeting html, per un totale di sei contribuzioni separate. Così ho inziato a fondere i vari contributi, sia quelli suggeriti (le “pull request”) che quelli più “timidi”.
Il 17 dicembre 2016 ho quindi rilasciato la versione 0.1.2

Nel frattempo ho ricevuto un paio di bug report, e avendo un po’ di tempo extra, ho continuato a lavorarci, per fare un nuovo rilascio prima di primavera…

Lesson Learned

Per alimentare facilmente un progetto open source è fondamentale generare interesse attorno ad esso. OrgModeParser non è stato molto pubblicizzato, ma la community intorno a NodeJS è così attiva che ha ricevuto più attenzioni di altri miei progetti scritti in Erlang, Java o Ruby.

GitHub (ma anche GitLab) è uno strumento fantastico per attirare contributi.

E’ vera la regola del “10 volte” sulle community: per ottenere un contributo bisogna avere almeno 10 persone interessate. A fronte di 100 “stelle” di interesse su github, org mode paser ha ricevuto un totale di circa 11 contributi sotto forma di bug report (3) e pull requests (8) e ha un totale di circa 28 fork separati.

Considerato che è un progetto che fa appena 1-2 rilasci all’anno, è un ottimo risultato.

 

Org Mode parser 0.1.2 is out!

After  a lot of time, I am very happy and excited to announce a new release of org mode parser!

I thank a lot the contributors. In short, we have a stronger parser and a new html rendering based on jade template engine.

Also code blocks Support for source block enclosed in  #+begin_src / #+end_src are supported and marked with special CSS class and data attribute.

Continue reading “Org Mode parser 0.1.2 is out!”

Org Mode Parser 0.0.6 is OUT

Hi all,

I have released version 0.0.6 of org-mode-parser for nodejs

Org mode parser is a parser for reading org-mode files in nodejs.

It features more then 80 unit tests, and support also for :DRAWER: and archive tag.

The parser can query on the structure, extract subtrees, regenerate the original input via an handy toOrgString() method.

It is quite fast: I have done some small optimizations, and it seems good for general use.

Enjoy and send me your feedback!

Do you have some feature request?

Version 0.0.7 is due soon, so if you have some idea, let me know!

 

Org Mode parser for nodejs is here, right now!

If you love Emacs Org Mode, and you are looking for a JavaScript parser for it, you are in the right place!

I have just published an org-mode parser for Node.js, the Javascript based server a lot of guys talk about.

This first revision spot more then 20 non-regression tests, and it is ready for a prime time use. Anyway, production use is still discouraged because additional testing is needed. Feel free to email me or to leave a comment.