On Monday, June 23, 2014 10:34:00 AM UTC-5, Alessandro Franceschi wrote: > > First of all, let me thank you, John, for replying to this post and giving > a sense to the discussion. > At times I wonder if PuppetLabs' guys read the forum and, if they do, why > they don't express an opinion on these matters. > I might be obsessive about modules, but I think that it's here where we > play the most important game on user code reusability. > > On Friday, June 20, 2014 5:04:28 PM UTC+2, jcbollinger wrote: >> >> >> I have never accepted the premise that "reusable" as applied to Puppet >> modules has to mean "usable in any context, to achieve any end related to >> the module's area of application, via any conceivable style," which is >> pretty much how I read your reusability criteria for component modules. >> Certainly a module that satisfies those criteria can serve pretty much any >> purpose within its domain, but what matters to me at any given time is >> whether a module can serve *my* purpose, whatever that happens to be. >> > > Reusability is definitively a relative concept, and I agree it can have > different nuances, still, IMHO, there are a few reusability patterns that > are easy to introduce and add a great value (for example the possibility, > for the module's user to provide custom templates for configuration files > instead of the ones proposed by default by the module. This is easy to > introduce and should definitively be common practice). >
I think it's great that you are thinking about such questions, discussing them, and promoting your conclusions. And I agree that there are reusability patterns that can be applied fairly easily and add substantial value. But I suspect that if we compared lists, mine would differ from yours. > >> >> If some third-party modules are (re)usable for me but not for (say) >> Felix, and vise versa, then that doesn't change the fact that both our jobs >> are made easier by not having to write everything from scratch. If that >> means I need to study a module a bit before I decide whether to use it, >> then fine -- I ought to do that anyway. >> >> Moreover, I think it is harmful to the module ecosystem to promote a >> position that only Cadillac modules are "reusable," because that sets the >> bar very high for potential contributors. I don't think it helps anyone to >> tell people that their contributions are unwelcome (which branding them >> "not reusable" does). Most people who write modules do so for their own >> purposes first and foremost, and if the community is unwelcoming to them >> then they will just keep their work to themselves. >> > > I understand the point, but at the same time I find it harmful also to > have hundreds of modules, that are published on the forge but work only for > a specific case and are practically useless for others. > I disagree. It is not at all a problem -- in itself -- to have hundreds of narrowly-scoped modules on the forge. More modules means more chances to find something that serves my needs, or something I can learn from. The concern is presumably about how easy or hard it is to find 'the' right module for me, but I don't think the solution is to try to ensure that all modules published there meet specific, high API and functionality criteria. Rather, the solution is the same as ever in an open-source community: documentation, reputation (both of the code and of the author), popularity (mostly of the code), and support and recommendations from the community, especially (but not exclusively) from thought leaders. I daresay, for example, that many people choose *your* modules in large part just because they are yours. You and your modules have strong reputations, which are reinforced when users find that your modules work well for them (or undermined in the unlikely event that they find otherwise). Perhaps the Forge platform could be enhanced to make those tools easier to apply in its context, but at least some of them are already reasonably accessible. > It's not a matter of preventing or discouraging users from publishing > their work, but to have a good overall quality of public modules and to > encourage good practices. I'd rather work on trying to convey and promote > basic reusability patterns that can be used and embraced by everybody. > I understand that it's not your intention to discourage authors, and as I said, I think it's great that you are thinking about these things and promoting the practices you find good. But if the point of publishing a module on the forge is for others to be able to (re)use it, then how we characterize whether a module is "reusable" has deep influence on participation and the community dynamic. Reusability is not a boolean condition, it is a qualitative, analog measure. > Also, I don't think that a reusable module is necessarily a good one or > viceversa, actually in most the cases reusability features add complexity > and overheads. > I agree. But if you say that my module is not "reusable" then why should I not take that as a rebuff -- an assertion that my module is not useful to the community and therefore should not be shared? If someone else were to use it in any way, then would that not be "reuse"? If there's a reasonable chance of that happening, then does that not on its face prove that the module is indeed reusable? John -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/ec939bc5-b5e3-4752-9490-565aa7867c46%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.