On Mon, 31 Jan 2011 00:19:11 -0800, Luke Kanies <[email protected]> wrote: > Hi all, > > I think there are a few classes or subsystems in Puppet that could, and > maybe should, be extracted into separate projects so they can be more > widely used; at worst, they could at least be shared by our other projects. > I'd love to be able to pull functional bits out of Puppet and use them > elsewhere -- e.g., I'd love to have mcollective, Puppet, PMT, and Facter > all share the code that creates their applications. > > I'm thinking of, at the least, our graphing stuff and the application > classes (plus the Interface classes I'm working on[1]). > > The problem with doing this, of course, is that it introduces that > external code as a dependency, which doesn't really work. > > I expect the only real choices are to list them as dependencies, or do a > kind of vendoring, like we're doing with Event::Loop and JSON. > > How do other projects solve this? Does anyone have any experience doing > so?
Two datapoints: 1) distro packages will need to split out the dependencies to reap the benefits of code sharing in the package dependencies too. This in turn requires that current versions of the apps always use (work together with) the same version of the library. 2) Ayende recommends git subtree: http://ayende.com/Blog/archive/2011/01/10/git-subtree.aspx I've no personal experience with it though. The experience sounds good though, since: > it is only me that have to use this, everyone else can just work with the usual git tools, and not have to be aware that I am sharing code between projects in this manner. Best Regards, David -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.
