1# vi:tw=72 2use 5.006; 3use strict; 4use warnings; 5package CPAN::Meta::History; 6 7our $VERSION = '2.150010'; 8 91; 10 11# ABSTRACT: history of CPAN Meta Spec changes 12 13__END__ 14 15=pod 16 17=encoding UTF-8 18 19=head1 NAME 20 21CPAN::Meta::History - history of CPAN Meta Spec changes 22 23=head1 VERSION 24 25version 2.150010 26 27=head1 DESCRIPTION 28 29The CPAN Meta Spec has gone through several iterations. It was 30originally written in HTML and later revised into POD (though published 31in HTML generated from the POD). Fields were added, removed or changed, 32sometimes by design and sometimes to reflect real-world usage after the 33fact. 34 35This document reconstructs the history of the CPAN Meta Spec based on 36change logs, repository commit messages and the published HTML files. 37In some cases, particularly prior to version 1.2, the exact version 38when certain fields were introduced or changed is inconsistent between 39sources. When in doubt, the published HTML files for versions 1.0 to 401.4 as they existed when version 2 was developed are used as the 41definitive source. 42 43Starting with version 2, the specification document is part of the 44CPAN-Meta distribution and will be published on CPAN as 45L<CPAN::Meta::Spec>. 46 47Going forward, specification version numbers will be integers and 48decimal portions will correspond to a release date for the CPAN::Meta 49library. 50 51=head1 HISTORY 52 53=head2 Version 2 54 55April 2010 56 57=over 58 59=item * 60 61Revised spec examples as perl data structures rather than YAML 62 63=item * 64 65Switched to JSON serialization from YAML 66 67=item * 68 69Specified allowed version number formats 70 71=item * 72 73Replaced 'requires', 'build_requires', 'configure_requires', 74'recommends' and 'conflicts' with new 'prereqs' data structure divided 75by I<phase> (configure, build, test, runtime, etc.) and I<relationship> 76(requires, recommends, suggests, conflicts) 77 78=item * 79 80Added support for 'develop' phase for requirements for maintaining 81a list of authoring tools 82 83=item * 84 85Changed 'license' to a list and revised the set of valid licenses 86 87=item * 88 89Made 'dynamic_config' mandatory to reduce confusion 90 91=item * 92 93Changed 'resources' subkey 'repository' to a hash that clarifies 94repository type, url for browsing and url for checkout 95 96=item * 97 98Changed 'resources' subkey 'bugtracker' to a hash for either web 99or mailto resource 100 101=item * 102 103Changed specification of 'optional_features': 104 105=over 106 107=item * 108 109Added formal specification and usage guide instead of just example 110 111=item * 112 113Changed to use new prereqs data structure instead of individual keys 114 115=back 116 117=item * 118 119Clarified intended use of 'author' as generalized contact list 120 121=item * 122 123Added 'release_status' field to indicate stable, testing or unstable 124status to provide hints to indexers 125 126=item * 127 128Added 'description' field for a longer description of the distribution 129 130=item * 131 132Formalized use of "x_" or "X_" for all custom keys not listed in the 133official spec 134 135=back 136 137=head2 Version 1.4 138 139June 2008 140 141=over 142 143=item * 144 145Noted explicit support for 'perl' in prerequisites 146 147=item * 148 149Added 'configure_requires' prerequisite type 150 151=item * 152 153Changed 'optional_features' 154 155=over 156 157=item * 158 159Example corrected to show map of maps instead of list of maps 160(though descriptive text said 'map' even in v1.3) 161 162=item * 163 164Removed 'requires_packages', 'requires_os' and 'excluded_os' 165as valid subkeys 166 167=back 168 169=back 170 171=head2 Version 1.3 172 173November 2006 174 175=over 176 177=item * 178 179Added 'no_index' subkey 'directory' and removed 'dir' to match actual 180usage in the wild 181 182=item * 183 184Added a 'repository' subkey to 'resources' 185 186=back 187 188=head2 Version 1.2 189 190August 2005 191 192=over 193 194=item * 195 196Re-wrote and restructured spec in POD syntax 197 198=item * 199 200Changed 'name' to be mandatory 201 202=item * 203 204Changed 'generated_by' to be mandatory 205 206=item * 207 208Changed 'license' to be mandatory 209 210=item * 211 212Added version range specifications for prerequisites 213 214=item * 215 216Added required 'abstract' field 217 218=item * 219 220Added required 'author' field 221 222=item * 223 224Added required 'meta-spec' field to define 'version' (and 'url') of the 225CPAN Meta Spec used for metadata 226 227=item * 228 229Added 'provides' field 230 231=item * 232 233Added 'no_index' field and deprecated 'private' field. 'no_index' 234subkeys include 'file', 'dir', 'package' and 'namespace' 235 236=item * 237 238Added 'keywords' field 239 240=item * 241 242Added 'resources' field with subkeys 'homepage', 'license', and 243'bugtracker' 244 245=item * 246 247Added 'optional_features' field as an alternate under 'recommends'. 248Includes 'description', 'requires', 'build_requires', 'conflicts', 249'requires_packages', 'requires_os' and 'excluded_os' as valid subkeys 250 251=item * 252 253Removed 'license_uri' field 254 255=back 256 257=head2 Version 1.1 258 259May 2003 260 261=over 262 263=item * 264 265Changed 'version' to be mandatory 266 267=item * 268 269Added 'private' field 270 271=item * 272 273Added 'license_uri' field 274 275=back 276 277=head2 Version 1.0 278 279March 2003 280 281=over 282 283=item * 284 285Original release (in HTML format only) 286 287=item * 288 289Included 'name', 'version', 'license', 'distribution_type', 'requires', 290'recommends', 'build_requires', 'conflicts', 'dynamic_config', 291'generated_by' 292 293=back 294 295=head1 AUTHORS 296 297=over 4 298 299=item * 300 301David Golden <dagolden@cpan.org> 302 303=item * 304 305Ricardo Signes <rjbs@cpan.org> 306 307=item * 308 309Adam Kennedy <adamk@cpan.org> 310 311=back 312 313=head1 COPYRIGHT AND LICENSE 314 315This software is copyright (c) 2010 by David Golden, Ricardo Signes, Adam Kennedy and Contributors. 316 317This is free software; you can redistribute it and/or modify it under 318the same terms as the Perl 5 programming language system itself. 319 320=cut 321