package Setup; # to make podweaver happy

our $VERSION = '1.0.2'; # VERSION

1;
# ABSTRACT: Specification for setup module


__END__
=pod

=head1 NAME

Setup - Specification for setup module

=head1 VERSION

version 1.0.2

=head1 SPECIFICATION VERSION

1.0

=head1 SPECIFICATION

This is a specification for setup modules. Setup modules are normal Perl modules
that live under the C<Setup::> namespace and contain setup functions. Setup
functions are normal Perl subroutines, typically named with C<setup_> prefix
(like C<setup_file>, C<setup_unix_user>, etc.) They are typically used for,
well, setting up stuffs, like software installation, system setup, or
configuration management.

Setup functions must have metadata, as specified in L<Rinci> specification.

Setup functions must support transactions, as described in
L<Rinci::function::Transaction>.

Setup functions should also be written with the helper module
L<Perinci::Sub::Gen::Undoable>, to make all Setup functions more consistent.

Aside from idempotency, setup functions must also check for acceptable initial
condition. There could be various state changes between the time of do and undo
action; a file can be deleted or modified by other processes. The undo action
must be flexible enough so it can reverse whatever state changes the previous do
phase did whenever it can, but not disrupt other processes' changes.

=head1 AUTHOR

Steven Haryanto <stevenharyanto@gmail.com>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Steven Haryanto.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=head1 CHANGES

=head2 Version 1.0.2 (2012-08-14)

=over 4

=item *

No functional changes. Simplify description. Follow Rinci 1.1.23.

=back

=head2 Version 1.0.1 (2012-05-31)

=over 4

=item *

Simplify description, as most functionality is now already described in

=item *

more detail by Rinci 1.1.17+ and Riap 1.1.13+'s transaction/undo

=item *

protocol.

=back

=head2 Version 1.0.0 (2012-03-28)

=over 4

=item *

First release, split from Setup-File.

=back

=cut

