[librecat-dev] collaborate with Catmandu ?
    Marc Chantreux 
    mc at unistra.fr
       
    Tue Jan  8 15:26:13 CET 2019
    
    
  
Hi Patrick,
(happy new year to everyone if i didn't already whished it)
> Thanks Marc for this,
you're very welcome: you made an amazing job with catmandu and finally
had no opportunity to work with you guys.
> I’ve created for myself a reminder to look at your code.
Please feel very welcome to ask any question: it's probably easier for
me to dig into my memory than for you to read undocumented and
uncommented code.
> I still hope you will find somewhere your way back into
> library stuff a bit ;)
i really appreciate. thanks but no thanks: this is really
improbable as i love my current job here at Renater (FLOSS evangelist
and developer) and there isn't even an opportunity to work on library
related topics.
however, it doesn't mean we can't collaborate:
* catmandu is a multipurpose ETL and can be used to manipulate any
  business object... probably including emails.
* in the sympa project (http://www.sympa.org), we have a system (called
  "scenario") that provides a DSL to drive the dispatch of incoming emails.
  my current work is a complete refactor of it to become
    * extendable (as every keyword is bound to a function)
    * composable (a scenario can contain other scenarii)
    * easy to compose (everything will be stored as a IR (lisp alike)
      format for a VM. as it's just data, scenarii can be build via
      a web interface).
* maybe it could rely Catmandu components.
using our new DSL, we could implement the missing keyworkds
* importer to declare a source
* exporter to declare a destination
* fix to declare a fix
* from to open a stream of items from a source
* to to record the items of the current stream in an exporter
* iso-2709 to stream the content of some raw files to an importer
* a specification to CRUD the records. like
    -999 to delete to remove all the 999 fields
    999$a to get the value of the 999$a subfield
we could write things like:
    (importer 'old-libraries
        (iso-2709 ('
            faculty-medecine.raw
            faculty-math.raw
            faculty-physic.raw))
    (exporter 'transfered
        (iso-2709 'to-be-transfered.utf8.raw ))
    (exporter 'removed
        (iso-2709 'new-library.utf8.raw ))
    (fix 'to-utf8 (encoding-> marc8 utf8))
    (fix 'dispatch-in-files
        (if (~ .999$a /damaged|rejected/ )
            (do (-999)
                (to 'removed))
            (to 'transfered)))
    (from 'old-libraries
        (do (fix 'to-utf8 (encoding-> marc8 utf8))
            (fix 'dispatch-in-files))
the very begining of the code is here:
    https://framagit.org/eiro/work_on_sympa/tree/master/poc/DataVM/lib
Also, we work on a boilerplate for our perl coding style:
    https://metacpan.org/pod/Sympatic
If you see any way to share ideas, code, work between the two projects,
let us run a hackathon! ;) (or at least have a video conference about it).
regards,
marc
    
    
More information about the librecat-dev
mailing list