Skip to content

Commit

Permalink
update doc
Browse files Browse the repository at this point in the history
  • Loading branch information
miyagawa committed Apr 21, 2018
1 parent c848b2e commit 11246a2
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 46 deletions.
37 changes: 14 additions & 23 deletions Menlo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,20 @@ Menlo - A CPAN client

# DESCRIPTION

Menlo is a code name for _cpanm 2.0_, developed with the goal to
replace [cpanm](https://metacpan.org/pod/cpanm) and its backend with a more flexible, extensible and
easier to use APIs.
Menlo is a backend for _cpanm 2.0_, developed with the goal to
replace [cpanm](https://metacpan.org/pod/cpanm) internals with a set of modules that are more
flexible, extensible and easier to use.

# COMPATIBILITY

Menlo is developed within [cpanm](https://metacpan.org/pod/cpanm) git repository at the `menlo`
branch. It keeps the developer test suite intact, which means all of
the features implemented as of cpanm 1.7032 are supposed to work in
Menlo with `cpanm-menlo` command line tool and its backend,
Menlo::CLI::Compat.
Menlo is developed within [cpanm](https://metacpan.org/pod/cpanm) git repository at `Menlo`
subdirectory.

Menlo::CLI::Compat started off as a copy of App::cpanminus::script,
but will go under a big refactoring to extract all the bits out of
it. Hopefully the end result will be just a shim and translation layer
to interpret command line options.

A new client, possibly called `menlo`, and object oriented APIs will
be added later in the development phase.

# MOTIVATION

cpanm has been a popular choice of CPAN package installer for many
Expand All @@ -35,9 +29,10 @@ modules are packaged in one script with fatpacker) makes it difficult
to extend, or modify the behaviors at a runtime, unless you decide to
fork the code or monkeypatch its hidden backend class.

cpanm also has no scriptable API or hook points, which means you have
to work around its behavior by writing a shell wrapper, or parsing the
output of its standard out or a build log file.
cpanm also has no scriptable API or hook points, which means if you
want to write a tool that works with cpanm, you basically have to work
around its behavior by writing a shell wrapper, or parsing the output
of its standard out or a build log file.

Menlo will keep the best aspects of cpanm, which is dependencies free,
configuration free, lightweight and fast to install CPAN modules. At
Expand All @@ -49,18 +44,14 @@ interfaces, or writing plugins to hook into its behaviors.

- Dependencies free? I see many prerequisites in Menlo.

Right now, Menlo is in the development phase and is released as a
standard perl module distribution, and has a few runtime
dependencies. Actually most of these modules were consumed by cpanm as
well, and they aren't new.

When I decide it's ready for production and to replace cpanm, I'll
make a fatpacked version of the script, which will bundle all the
dependencies into one file, just like cpanm does.
Menlo is a set of libraries and uses non-core CPAN modules as its
dependencies. App-cpanminus distribution embeds Menlo and all of its
runtime dependencies into a fatpacked binary, so that you can install
App-cpanminus or Menlo without having any CPAN client to begin with.

- Is Menlo a new name for cpanm?

Right now it's just a code name, but I'm comfortable calling this a
Right now it's just a library name, but I'm comfortable calling this a
new package name for cpanm 2's backend.

# AUTHOR
Expand Down
37 changes: 14 additions & 23 deletions Menlo/lib/Menlo.pm
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,20 @@ Menlo - A CPAN client
=head1 DESCRIPTION
Menlo is a code name for I<cpanm 2.0>, developed with the goal to
replace L<cpanm> and its backend with a more flexible, extensible and
easier to use APIs.
Menlo is a backend for I<cpanm 2.0>, developed with the goal to
replace L<cpanm> internals with a set of modules that are more
flexible, extensible and easier to use.
=head1 COMPATIBILITY
Menlo is developed within L<cpanm> git repository at the C<menlo>
branch. It keeps the developer test suite intact, which means all of
the features implemented as of cpanm 1.7032 are supposed to work in
Menlo with C<cpanm-menlo> command line tool and its backend,
Menlo::CLI::Compat.
Menlo is developed within L<cpanm> git repository at C<Menlo>
subdirectory.
Menlo::CLI::Compat started off as a copy of App::cpanminus::script,
but will go under a big refactoring to extract all the bits out of
it. Hopefully the end result will be just a shim and translation layer
to interpret command line options.
A new client, possibly called C<menlo>, and object oriented APIs will
be added later in the development phase.
=head1 MOTIVATION
cpanm has been a popular choice of CPAN package installer for many
Expand All @@ -44,9 +38,10 @@ modules are packaged in one script with fatpacker) makes it difficult
to extend, or modify the behaviors at a runtime, unless you decide to
fork the code or monkeypatch its hidden backend class.
cpanm also has no scriptable API or hook points, which means you have
to work around its behavior by writing a shell wrapper, or parsing the
output of its standard out or a build log file.
cpanm also has no scriptable API or hook points, which means if you
want to write a tool that works with cpanm, you basically have to work
around its behavior by writing a shell wrapper, or parsing the output
of its standard out or a build log file.
Menlo will keep the best aspects of cpanm, which is dependencies free,
configuration free, lightweight and fast to install CPAN modules. At
Expand All @@ -60,18 +55,14 @@ interfaces, or writing plugins to hook into its behaviors.
=item Dependencies free? I see many prerequisites in Menlo.
Right now, Menlo is in the development phase and is released as a
standard perl module distribution, and has a few runtime
dependencies. Actually most of these modules were consumed by cpanm as
well, and they aren't new.
When I decide it's ready for production and to replace cpanm, I'll
make a fatpacked version of the script, which will bundle all the
dependencies into one file, just like cpanm does.
Menlo is a set of libraries and uses non-core CPAN modules as its
dependencies. App-cpanminus distribution embeds Menlo and all of its
runtime dependencies into a fatpacked binary, so that you can install
App-cpanminus or Menlo without having any CPAN client to begin with.
=item Is Menlo a new name for cpanm?
Right now it's just a code name, but I'm comfortable calling this a
Right now it's just a library name, but I'm comfortable calling this a
new package name for cpanm 2's backend.
=back
Expand Down

0 comments on commit 11246a2

Please sign in to comment.