Hi,
            
          
          In a recent issue, Chris proposed to factor out part of the
          code base into a stand-alone CPAN release (which would IMO
          mean into a more-or-less stand alone project). The same
          happened some years ago when he factored out DBObject into
          PGObject, so, we have precedence here. The other way around
          (refactored our code to use releases from CPAN) has happened
          as well.
 
        
        
        From my perspective, the reasons to refactor our code to
          make use of (pre-existing) CPAN code are clear:
         * Using pre-existing code from CPAN outsources maintenance
          (to an external maintainer)
        
         * Opens up opportunities for wider use in our own code
          base, because usually replaces specific with generic code
         * Ensures better testing of code in a wide variety of
          settings (hopefully with bugfixes)
         * Improves code-sharing in the wider Perl community
          (hopefully free-ing up resources to take Perl and its modules
          a step further)
        
        
        
        To me, the other way around would roughly work the same
          way. Meaning, that we should be thinking about placing our
          code on CPAN, if:
         * Our code is sufficiently generic to solve problems for
          others
         * Others can depend on us to do the maintenance of the
          code
         * Our code comes with sufficient quality assurance
          measures to be helpful to others
         * Our code is sufficiently stable not to require large
          refactorings to the projects (which would mean that people
          can't really depend on the code - yet)
        
        
        
        Especially the last point - I think - is tricky: when
          largish refactorings are in order, the fact that part of the
          code being refactored is loaded onto Travis CI through CPAN is
          a major limitation on the speed that can be had during the
          refactoring. The recent PGObject 1.x->PGObject 2.x
          refactoring showed that.
        
        
        
        
        
        I'm wondering: Is there anything else to be considered?
          (Reasons to factor out, problems to be met after having
          separated, etc...)
        
        
        
        
        Regards,
        
        
          
            
              
                -- 
                
                  Bye,
                    
                    
                    Erik.
                    
                    
                    
                    Robust and Flexible. No vendor lock-in.