1Pinto::Manual::IntroducUtsieorn(C3o)ntributed Perl DocumPeinnttaot:i:oMnanual::Introduction(3)
2
3
4

NAME

6       Pinto::Manual::Introduction - Why Pinto exists
7

VERSION

9       version 0.14
10

GOALS

12       Pinto has two primary goals.  First, Pinto seeks to address the problem
13       of instability in the CPAN mirrors.  Distribution archives are
14       constantly added and removed from the CPAN, so if you use it to build a
15       system or application, you may not get the same result twice. Second,
16       Pinto seeks to encourage developers to use the CPAN toolchain for
17       building, testing, and dependency management of their own local
18       software, even if they never plan to release it to the CPAN.
19
20       Pinto accomplishes these goals by providing tools for creating and
21       managing your own custom repositories of distribution archives.  These
22       repositories can contain any distribution archives you like, and can be
23       used with the standard CPAN toolchain.  The tools also support various
24       operations that enable you to deal with common problems that arise
25       during the development process.
26

PRIOR ART

28       Over the last few years, I personally used various combinations of
29       those modules to create custom repositories at several organizations.
30       But they always required some wrapping and/or glue to make them usable
31       in the development process.  And none of them seemed to be designed for
32       extension.
33
34       I wanted a tool that would work out-of-the-box, would accommodate a
35       wide range of use cases, would scale to a large number of users, and
36       could grow in unexpected directions.  And so, Pinto was born.
37

COMPONENTS

39       The Pinto suite consists of several components, which are all included
40       in this distribution.  For most use cases, you should treat Pinto as
41       an external application rather than a library that is integrated with
42       your own application code.  I strongly recommend reading
43       Pinto::Manual::Installing for tips on installing Pinto in the manner
44       that is most appropriate for your needs.
45
46   pinto
47       pinto is a command line application for creating and managing a Pinto
48       repository.  It works transparently with both remote and local
49       repositories.  However, repositories can only be created locally.
50
51   pintod
52       pintod provides a web service interface to your Pinto repository. This
53       allows multiple (possibly remote) developers to manage a central
54       repository.  pintod also functions as the back end HTTP server for
55       installer clients like cpan, cpanp, and cpanm.
56
57   Pinto and Pinto::Remote
58       Pinto and Pinto::Remote are the backend libraries for the pinto
59       application.  These are fairly stable, but not officially public and
60       not documented.  If you want to hack on Pinto's internals, or create a
61       new application around Pinto, you should start looking at these.
62
63   Pinto::Server
64       Pinto::Server is the backend library for the pintod server application.
65       It is still immature, and subject to radical change. It is based on raw
66       Plack, so if you are brave you could wrap it with various middlewares
67       to do interesting things.
68

TERMINOLOGY

70       Some of the terminology related to the CPAN is overloaded, which can
71       lead to some confusion.  So I'll try to define some of the key terms
72       that I use throughout the documentation and the code.
73
74   Archive
75       An "archive" is the file that developers ship, which contains all their
76       application/library code, test cases, build scripts etc. Conversely,
77       the archive is the file that users must fetch to install the
78       application/library.  Sometimes I also refer to these as
79       "distributions".
80
81   Package
82       A "package" is something inside a distribution archive that provides
83       some unit of functionality.  In Perl, packages are declared with the
84       "package" keyword.  Some folks call these "modules" but I try to avoid
85       that term because it is frequently misused.
86
87   Prerequisite
88       A "prerequisite" is a package that must be installed for the sake of
89       another distribution archive.  Sometimes I call these "dependencies".
90       Pinto does not currently distinguish between different flavors of
91       prerequisites, such as "build-time" or "run-time" prerequisites.
92

CONCEPTS

94   Stack
95       All CPAN-like repositories have an index which maps the latest version
96       of each package to the archive that contains it.  Usually, there is
97       only one such index.  But with Pinto, there can be many indexes.  Each
98       of these indexes is called a "stack".  This allows you to create
99       different stacks of dependencies within a single repository.  So you
100       could have a "development" stack and a "production" stack.  Whenever
101       you add a distribution or upgrade a prerequisite, it only affects one
102       stack.
103
104   Pin
105       Only one version of a package can exist within a stack.  So when you
106       upgrade a package in a stack, the newer version replaces the older one.
107       But sometimes, you discover that a newer version of package is
108       incompatible with your application, and you want to stay with the older
109       version until you have an opportunity to fix the problem.  In those
110       situations, Pinto allows you to "pin" a particular version of a package
111       to the stack.  This prevents the package from being upgraded (either
112       directly or as a prerequisite for some other package).
113

WHY IS IT CALLED PINTO

115       Pinto is a name that I sometimes use for my son Wesley (as in "pinto
116       bean").  Daddy loves you, Wes!
117

SEE ALSO

119       Pinto::Manual::Tutorial
120           Presents a narrative explanation of how to use Pinto.
121
122       Pinto::Manual::QuickStart
123           Presents a condensed summary of pinto commands.
124

AUTHOR

126       Jeffrey Ryan Thalhammer <jeff@stratopan.com>
127
129       This software is copyright (c) 2015 by Jeffrey Ryan Thalhammer.
130
131       This is free software; you can redistribute it and/or modify it under
132       the same terms as the Perl 5 programming language system itself.
133
134
135
136perl v5.36.0                      2022-07-22    Pinto::Manual::Introduction(3)
Impressum