<div dir="ltr"><div><div>I feel that there are actually several issues to discuss in this thread:</div><div><ol><li>Perl modules vs. Perl module distributions</li><li>Perl module distribution sources</li><li>Perl module distribution installation</li><li>knowledge assumed by the CPAN site</li><li>knowledge assumed by RT's documentation</li><li>what documentation should actually change</li></ol><div>Based on your description of the steps you performed in an attempt to install a Perl module from CPAN, with all due respect, I believe you've been improperly advised on Perl module installation and possibly haven't been made aware of some crucial things about how Perl's modules work.  I'll go over some of those things, then with everything in mind, maybe we can agree on what documentation changes are needed where.</div></div><div><br></div><div><br></div><div><b>Perl modules vs. Perl module distributions</b></div><div><b><br></b></div><div>A Perl <b>module</b> is (for all intents and purposes of this thread) a single .pm file.  A Perl module <b>distribution</b> consists of a number of Perl modules (which can be just one), a Makefile (or more commonly, a Makefile generator in Makefile.PL), and instructions for installation of the distribution and hence its modules (usually in README or INSTALL).  Distributions exist because often, a single module isn't enough to provide some meaningful form of functionality.</div><div><br></div><div>Modules are never installed directly.  Modules are always made available as a side effect installing module distributions.  The distribution (not the module) is the smallest unit involved in the action of installation.  Installation of a distribution might result in the installation of only one module, but nonetheless, it's the distribution that's acted upon directly for installation rather than the module.</div><div><br></div><div>In summary, direct installation of single modules doesn't happen.</div><div><br></div><div><br></div><div><b>Perl module distribution sources</b><br></div><div><b><br></b></div><div>Distributions are typically (but not always) available on the CPAN site (typically capitalised as "CPAN"), and can be downloaded as an <b>archive</b>.  Other distribution sources include (but are not limited to) GitHub, Bitbucket, CD-ROMs, FTP sites and personal web pages.</div><div><br></div><div>In summary, distribution files can come from many different places.</div><div><br></div><div><br></div><div><b>Perl module distribution installation</b><br></div><div><br></div><div>Every distribution includes installation instructions in README or INSTALL, and the most typical experience for installing a Perl module distribution (after obtaining an archive of it) goes like this:</div><div><br></div><div>$ tar xzf My-Perl-Module-0.01.tar.gz</div><div>$ cd My-Perl-Module-0.01</div><div>$ perl Makefile.PL</div><div>$ make</div><div>$ make test</div><div>$ make install</div><div><br></div><div>Distributions on CPAN can be installed without first downloading an archive, using the CPAN installation tool (typically capitalised as "cpan").  cpan is actually smart enough to take a module name (rather than a distribution name) on the command line, determine the distribution to which that module belongs, and install that distribution.  Since one distribution generally depends on others ("prerequisites") being installed in advance, cpan also manages the installation of prerequisite distributions.  This makes the use of a tool like cpan the generally preferred means of installing distributions (and by extension, modules).</div><div><br></div><div>Other similar tools exist which do the job in a more streamlined fashion.  I personally prefer <a href="https://metacpan.org/pod/distribution/App-cpanminus/bin/cpanm">cpanm</a>.</div><div><br></div><div>In summary, distribution installation tools function on distributions, not modules—although some tools have the ability to infer the right distribution if given a module name.</div><div><br></div><div><br></div><div><b>Knowledge assumed by the CPAN site</b></div><div><b><br></b></div><div>Given that <a href="http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm">a CPAN module page</a> only offers a single Download link, and that link points to an archive of the module's distribution, it's safe to say that the CPAN site assumes that its users already know the distinction between modules and distributions, and expects that the user then refer to the documentation found within the downloaded archive.  I suppose the reasoning is that anyone who knows about CPAN already knows about Perl modules, and how to install module distributions.</div><div><br></div><div>I don't feel that the installation of Perl modules/distributions is within the domain of RT's documentation.  However, given RT's use of Perl modules as extensions, and that CPAN would probably be the main source for RT extensions, I feel that perhaps RT's documentation could benefit from at least pointing RT users to the required prerequisite knowledge for using CPAN (i.e. what modules are, what distributions are, and what to do with a distribution archive).</div><div><br></div><div>The CPAN site explicitly doesn't offer downloading of individual module (.pm) files, because direct installation of single modules doesn't happen.  (In my general experience I've found that if something is not making a particular process easy for me, usually my process is invalid and I'm doing something wrong.)</div><div><div><br></div></div><div><br></div><div><b>Knowledge assumed by RT's documentation</b><br></div><div><b><br></b></div><div>RT's documentation clearly assumes that the user knows that RT extensions are just Perl modules.  That's obvious to anyone who is well-versed in reading/writing Perl code.  I don't think it's reasonable to assume that of everyone administering RT.  Therefore, I suppose RT's documentation could be enhanced to explicitly state this.</div><div><br></div><div>RT's documentation doesn't explicitly state how to install Perl module distributions.  My view on this is that RT's documentation should document RT.  Installation of Perl module distributions is a Perl concern.  At most, RT's documentation could link to some reputable Perl source on the matter (as already mentioned above).</div><div><br></div><div><br></div><div><b>What documentation should actually change</b><br></div><div><b><br></b></div><div>Jo, taking the above information into account, how would you personally adjust RT's documentation such that others in future wouldn't experience what you experienced?</div><div><br></div><div>As far as I can see, the only real amendments that concern RT's documentation would be to explicitly state that RT extensions are just Perl modules, and to link to further reading on how Perl modules work and how Perl module distributions are sourced and installed.  What are your thoughts?</div></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 9 December 2014 at 05:07, Jo Rhett <span dir="ltr"><<a href="mailto:jrhett@netconsonance.com" target="_blank">jrhett@netconsonance.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">So here’s my perspective. As someone with 25 years of sysadmin experience, who has both used RT for many years (but not in the last three years) and someone who uses CPAN fairly often, when sent to the pm module directly, I did the operations directly in front of me and downloaded the .pm and tried to figure out how to install it.<div><br></div><div>There is nothing in the documentation as it stands today to inform a new or dead-brained returning user that they need to download a package, not the .pm file —which in CPAN is often the sum total of an extension. Yes, there is a link to the package file on the page — off on the right, out of the “actionable” area of the screen, if you spend any time with usability experts. Given that the link is not in the user working area, and there’s no reason given to the user to search for the link, I suspect many others will make the same mistake.</div><div><br></div><div><div>I outlined this confusion in detail in my original post, showing how I had misunderstood. I believe that any change which makes it clear to the user that they should download the entire package, not just the .pm file, would significantly improve the user experience.</div><div><div class="h5"><div><br><div><div>On Dec 3, 2014, at 2:09 AM, Alex Peters <<a href="mailto:alex@peters.net" target="_blank">alex@peters.net</a>> wrote:</div><blockquote type="cite"><div dir="ltr">I think I might be missing something crucial in what you are saying/asking.<div><br></div><div>Linking to the main module within a distribution is a very common practice, because that module is likely to have the most relevant documentation for that distribution.</div><div><br></div><div>The distribution is clearly linked to on the page of every module belonging to a particular distribution.</div><div><br></div><div>"Asking the user to edit the URL in their browser window to be able to find the extension to download doesn’t make a lot of sense" is essentially a fallacy, because:</div><div><ol><li>the download link for the extension is available on that very page; and</li><li>the home page for the extension itself (which in my opinion is generally far less informational anyway) is available as a link on that very page.</li></ol><div>Can you please rephrase why you feel that the links in the directory should be changed?  Your assertion that these links are "broken" in their current form is confusing to me.</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 3 December 2014 at 18:40, Jo Rhett <span dir="ltr"><<a href="mailto:jrhett@netconsonance.com" target="_blank">jrhett@netconsonance.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">As I said below, in the Extensions directory the links are broken. For example,<div><br></div><div><span><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div style="word-wrap:break-word"><div>Homepage link takes you to:</div><div><span style="white-space:pre-wrap">  </span><a href="http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm" target="_blank">http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm</a></div><div><br></div><div>If you’re a bit tired and under-caffeniated, or just plain new to RT, it may not be clear to you that you need to remove a bunch from the URL to find the extension package. In my opinion, it would be much better to link to the package instead of the module file, like so:</div></div><div style="word-wrap:break-word"></div></div></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div style="word-wrap:break-word"><span style="white-space:pre-wrap">    </span><a href="http://search.cpan.org/dist/RT-Extension-MandatorySubject/" target="_blank">http://search.cpan.org/dist/RT-Extension-MandatorySubject/</a></div></div></blockquote></div></div><blockquote type="cite"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><blockquote type="cite"></blockquote></div></blockquote></div></div></blockquote><div><br></div></span><div>As I just said, asking the user to edit the URL in their browser window to be able to find the extension to download doesn’t make a lot of sense. The links in the directory should be fixed.</div><div><div><div><br></div><div><div><div>On Dec 2, 2014, at 11:34 PM, Alex Peters <<a href="mailto:alex@peters.net" target="_blank">alex@peters.net</a>> wrote:</div><blockquote type="cite"><div dir="ltr"><div>Could you please clarify what you're asking here?  How to install the plugins?</div><div><br></div><div>The plugins can be installed like any other CPAN module.  Given a link to a specific .pm file:</div><div><br></div><a href="http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm" target="_blank">http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm</a><br><div><br></div><div>you can hit the Download link on the right side of the page to receive a .tar.gz file of the distribution, which can either be fed directly into the cpan or cpanm utilities, or unpacked and installed manually using Makefile.PL and make.</div><div><br></div><div>With RT extensions, you may find it useful to set environment variable RTHOME to the root directory of your RT installation before installing the plugin:</div><div><br></div><div>$ RTHOME=/opt/rt-4.2.7 cpanm RT-Extension-MandatorySubject-0.05.tar.gz<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 3 December 2014 at 16:19, Jo Rhett <span dir="ltr"><<a href="mailto:jrhett@netconsonance.com" target="_blank">jrhett@netconsonance.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">Hey, dunno if this got overlooked during the short vacation week. This is a pretty serious issue…  asking users to manually hack up the URL in their browser bar is not accessible.<div><br><div><div>On Nov 26, 2014, at 2:22 PM, Jo Rhett <<a href="mailto:jrhett@netconsonance.com" target="_blank">jrhett@netconsonance.com</a>> wrote:</div><blockquote type="cite"><div style="word-wrap:break-word">Hey guys and gals, been a long time.<div><br></div><div>I’m doing an upgrade from 3.8.5 to 4.2. It seems to be going well. I’m liking the changes. Other than some confusion about what order to do things in (see my other message) the one thing I can’t seem to wrap my head around is the new plugin setup.</div><div><br></div><div>First, yay! I like the idea of what you’ve done with plugins, keeping them local and the simplified syntax in RT_SiteConfig.pm.</div><div><br></div><div>[in which I wander in the wrong direction… read and giggle]</div><div><br></div><div>However, I can’t find any plugins other than yours which are built in these new packages you document at <a href="https://www.bestpractical.com/docs/rt/4.2/writing_extensions.html" target="_blank">https://www.bestpractical.com/docs/rt/4.2/writing_extensions.html</a></div><div><br></div><div>What is the fallback method for installing the other style modules? How do I get from a .pm file to an installed module. Can I manually create the directory structures and copy these into place? I see some details there but it doesn’t inspire confidence that everything I need to know is there. A breakout of the directory structure would be really helpful.</div><div><br></div><div>[forehead slap]</div><div><br></div><div>I was almost done with this e-mail when I realized the problem.  If you go to <a href="http://bestpractical.com/rt/extensions.html" target="_blank">http://bestpractical.com/rt/extensions.html</a> and you find the extension you are looking for, the link to the Homepage for the extension actually links to the main module, and not to the extension package. Example for one</div><div><br></div><div>Homepage link takes you to:</div><div><span style="white-space:pre-wrap">    </span><a href="http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm" target="_blank">http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm</a></div><div><br></div><div>If you’re a bit tired and under-caffeniated, or just plain new to RT, it may not be clear to you that you need to remove a bunch from the URL to find the extension package. In my opinion, it would be much better to link to the package instead of the module file, like so:</div><div><span style="white-space:pre-wrap">     </span><a href="http://search.cpan.org/dist/RT-Extension-MandatorySubject/" target="_blank">http://search.cpan.org/dist/RT-Extension-MandatorySubject/</a></div><div><br></div><div>I did some random spot checking, and this appears to be true for every module shown there.</div><div><br></div><div>-- </div><div><div>Jo Rhett<br>+1 (415) 999-1798<br>Skype: jorhett<br>Net Consonance : net philanthropy to improve open source and internet projects.

</div>
<br></div></div></blockquote></div><br><div>
-- <br>Jo Rhett<br>+1 (415) 999-1798<br>Skype: jorhett<br>Net Consonance : net philanthropy to improve open source and internet projects.

</div>
<br></div></div></blockquote></div><br></div>
</blockquote></div><br><div>
-- <br>Jo Rhett<br>+1 (415) 999-1798<br>Skype: jorhett<br>Net Consonance : net philanthropy to improve open source and internet projects.

</div>
<br></div></div></div></div></div></blockquote></div><br></div>
</blockquote></div><br><div>
-- <br>Jo Rhett<br>+1 (415) 999-1798<br>Skype: jorhett<br>Net Consonance : net philanthropy to improve open source and internet projects.

</div>
<br></div></div></div></div></div></blockquote></div><br></div>