[rt-users] plugins link to module file, not package file

Alex Peters alex at peters.net
Tue Dec 9 08:10:19 EST 2014


I feel that there are actually several issues to discuss in this thread:

   1. Perl modules vs. Perl module distributions
   2. Perl module distribution sources
   3. Perl module distribution installation
   4. knowledge assumed by the CPAN site
   5. knowledge assumed by RT's documentation
   6. what documentation should actually change

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.


*Perl modules vs. Perl module distributions*

A Perl *module* is (for all intents and purposes of this thread) a single
.pm file.  A Perl module *distribution* 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.

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.

In summary, direct installation of single modules doesn't happen.


*Perl module distribution sources*

Distributions are typically (but not always) available on the CPAN site
(typically capitalised as "CPAN"), and can be downloaded as an *archive*.
Other distribution sources include (but are not limited to) GitHub,
Bitbucket, CD-ROMs, FTP sites and personal web pages.

In summary, distribution files can come from many different places.


*Perl module distribution installation*

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:

$ tar xzf My-Perl-Module-0.01.tar.gz
$ cd My-Perl-Module-0.01
$ perl Makefile.PL
$ make
$ make test
$ make install

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).

Other similar tools exist which do the job in a more streamlined fashion.
I personally prefer cpanm
<https://metacpan.org/pod/distribution/App-cpanminus/bin/cpanm>.

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.


*Knowledge assumed by the CPAN site*

Given that a CPAN module page
<http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm>
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.

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).

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.)


*Knowledge assumed by RT's documentation*

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.

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).


*What documentation should actually change*

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?

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?


On 9 December 2014 at 05:07, Jo Rhett <jrhett at netconsonance.com> wrote:

> 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.
>
> 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.
>
> 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.
>
> On Dec 3, 2014, at 2:09 AM, Alex Peters <alex at peters.net> wrote:
>
> I think I might be missing something crucial in what you are saying/asking.
>
> 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.
>
> The distribution is clearly linked to on the page of every module
> belonging to a particular distribution.
>
> "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:
>
>    1. the download link for the extension is available on that very page;
>    and
>    2. 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.
>
> 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.
>
> On 3 December 2014 at 18:40, Jo Rhett <jrhett at netconsonance.com> wrote:
>
>> As I said below, in the Extensions directory the links are broken. For
>> example,
>>
>> Homepage link takes you to:
>>>
>>> http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm
>>>
>>> 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:
>>>
>> http://search.cpan.org/dist/RT-Extension-MandatorySubject/
>>>
>>
>> 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.
>>
>> On Dec 2, 2014, at 11:34 PM, Alex Peters <alex at peters.net> wrote:
>>
>> Could you please clarify what you're asking here?  How to install the
>> plugins?
>>
>> The plugins can be installed like any other CPAN module.  Given a link to
>> a specific .pm file:
>>
>>
>> http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm
>>
>> 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.
>>
>> 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:
>>
>> $ RTHOME=/opt/rt-4.2.7 cpanm RT-Extension-MandatorySubject-0.05.tar.gz
>>
>> On 3 December 2014 at 16:19, Jo Rhett <jrhett at netconsonance.com> wrote:
>>
>>> 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.
>>>
>>> On Nov 26, 2014, at 2:22 PM, Jo Rhett <jrhett at netconsonance.com> wrote:
>>>
>>> Hey guys and gals, been a long time.
>>>
>>> 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.
>>>
>>> First, yay! I like the idea of what you’ve done with plugins, keeping
>>> them local and the simplified syntax in RT_SiteConfig.pm.
>>>
>>> [in which I wander in the wrong direction… read and giggle]
>>>
>>> However, I can’t find any plugins other than yours which are built in
>>> these new packages you document at
>>> https://www.bestpractical.com/docs/rt/4.2/writing_extensions.html
>>>
>>> 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.
>>>
>>> [forehead slap]
>>>
>>> I was almost done with this e-mail when I realized the problem.  If you
>>> go to http://bestpractical.com/rt/extensions.html 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
>>>
>>> Homepage link takes you to:
>>>
>>> http://search.cpan.org/dist/RT-Extension-MandatorySubject/lib/RT/Extension/MandatorySubject.pm
>>>
>>> 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:
>>> http://search.cpan.org/dist/RT-Extension-MandatorySubject/
>>>
>>> I did some random spot checking, and this appears to be true for every
>>> module shown there.
>>>
>>> --
>>> Jo Rhett
>>> +1 (415) 999-1798
>>> Skype: jorhett
>>> Net Consonance : net philanthropy to improve open source and
>>> internet projects.
>>>
>>>
>>> --
>>> Jo Rhett
>>> +1 (415) 999-1798
>>> Skype: jorhett
>>> Net Consonance : net philanthropy to improve open source and
>>> internet projects.
>>>
>>>
>>
>> --
>> Jo Rhett
>> +1 (415) 999-1798
>> Skype: jorhett
>> Net Consonance : net philanthropy to improve open source and
>> internet projects.
>>
>>
>
> --
> Jo Rhett
> +1 (415) 999-1798
> Skype: jorhett
> Net Consonance : net philanthropy to improve open source and
> internet projects.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20141210/ea5a741f/attachment.htm>


More information about the rt-users mailing list