1Date::Manip::History(3)User Contributed Perl DocumentatioDnate::Manip::History(3)
2
3
4
6 Date::Manip::History - Twenty years and still going strong
7
9 I just realized (Dec 2015) that Date::Manip turned twenty years old
10 earlier this year, so I wanted to write some thoughts I have about
11 Date::Manip.
12
13 The history of Date::Manip can be broken into several periods.
14
15 Birth of Date::Manip (1995-1996)
16 1995 was the year I really started using perl to automate some of
17 my common tasks. At the time, I was running programs using a
18 number of different batch systems that needed dates entered in a
19 variety of different formats. It was frustrating to remember what
20 format for what batch system, so I wrote some wrappers which would
21 take a few common formats that I wanted to use and would turn those
22 dates into whatever format the batch system needed.
23
24 After a few different wrapper scripts (where I copied the date
25 handling code between the scripts), I gathered all of the date
26 routines into one package.
27
28 This was the birth of Date::Manip.
29
30 I kept it that way for about half a year. By that time, I was
31 thoroughly in love with perl and wanted to contribute.
32
33 At the time, CPAN was just a fledgling site, but in October, I
34 released my first package. It wasn't really a module at that
35 time... it was crudely put together and extremely limited use.
36 Even so, it got some very positive initial feedback which spurred
37 the early growth.
38
39 There were several private versions followed by 4 public releases
40 (4.0 through 4.3) during this period.
41
42 Soon, I had adopted many of the best practices of the day and
43 converted it to a full-blown module.
44
45 Active development (1996-2001)
46 The next 5 years were extremely active. Based on suggestions and
47 requests, functionality increased dramatically, and before long,
48 Date::Manip was considered the goto module for Date operations.
49
50 During this period, a number of other modules came along that did a
51 small subset of the functions of Date::Manip (most of them
52 significantly faster), but none had the scope of Date::Manip.
53
54 During this period, I recognized that the single biggest weakness
55 was the inability to correctly handle timezones and daylight saving
56 time. Towards the end of this period (2000 I believe), I began a
57 project to rewrite Date::Manip, but I didn't not have the time
58 needed to really carry it out at that time.
59
60 Another weakness was that Date::Manip grew in a random way. As
61 ideas and suggestions came, I added them. There was little
62 planning or forethought involved, and that led to it not having a
63 consistent API.
64
65 1998 did see the addition of Recurrences. Although not an
66 extremely widely used piece of functionality, I regard this as the
67 single most important contribution I have ever made. I developed
68 the notation for specifying recurring events, and no other notation
69 has ever come close to matching it's power and flexibility.
70
71 This period, starting with the first release in a full module form,
72 included 26 releases (from 5.00 to 5.40).
73
74 Minimal maintenance (2001-2008)
75 During these years, I was able to devote time needed to maintain
76 the existing module, but not to do major development.
77
78 As a result, the rewrite project remained incomplete (and in fact,
79 it was barely started).
80
81 During this time, due to the fact that no other module could handle
82 timezones correctly, DateTime arrived in 2003. It featured a nice
83 object-oriented interface, and handled timezones.
84
85 Over the next few years, it became the de facto standard for date
86 handling in perl.
87
88 This period included only 8 releases (5.42 to 5.54).
89
90 Rewrite (2009-2010)
91 In 2009, I decided it was time to fix the timezone problems in
92 Date::Manip . Some people might see this as a waste of time due to
93 the fact that DateTime existed, but I had several thoughts.
94
95 First, many people continued to use Date::Manip. This was evident
96 by the number of emails I continued to receive.
97
98 Second, there were still things that Date::Manip did better than
99 DateTime including recurrences and parsing.
100
101 Third, I love my module, and didn't want to see it die. I'll
102 continue to use it, even if nobody else does.
103
104 So, I set out to fix it. It turned out to be a complete rewrite,
105 but in the end, version 6 was released with full timezone handling,
106 even better parsing, and quite a few other features.
107
108 Date::Manip was once again very much alive.
109
110 This period featured 13 releases (6.00 to 6.14) with an additional
111 2 maintenance releases of version 5.
112
113 Active maintenance (2010-present)
114 Although primarily in maintenance mode (due to the fact that
115 Date::Manip does pretty much everything that it was designed to
116 do), active maintenance continues. There is also some development
117 and a large number of significant improvements have been made in
118 this period.
119
120 I make regular releases to update the timezone information, fix
121 bugs, and add the occasional new features.
122
123 For the foreseeable future, Date::Manip will remain active, and
124 fully capable of handling any common date operation.
125
126 Since 6.14, there have been 36 releases to date (6.20 to 6.59)
127 which is averaging about 5 releases per year.
128
130 I was curious to see how many other modules are out there that have
131 survived as long as Date::Manip.
132
133 The first public release of Date::Manip (though it was not a module yet
134 of course) was version 4.0 on 13-Aug-1995. The first public release to
135 CPAN was version 4.2 released on 23-Oct-1995.
136
137 I got a list of all CPAN modules from the wayback machine for 2000 (the
138 earliest version of the list that I could find). Then I checked each
139 of these authors on backpan to see which of these authors had packages
140 (.tar.gz or .tgz files) released prior to 23-Oct-1995.
141
142 I found that at the time Date-Manip 4.2 was released there were
143
144 32 authors
145 70 packages
146
147 There are currently (Aug 2017) over 190,000 modules by over 13,000
148 authors. So Date::Manip got involved in CPAN very early.
149
150 Next, I tried to determine which of those authors and packages are
151 still active. I'm not completely sure about some of the packages
152 because frequently, those old packages have changed maintainers, been
153 renamed, or been incorporated into other packages. So the number of
154 active packages is actually a lower limit.
155
156 I found that:
157
158 13 authors are active today
159 21 of the packages are active today
160 7 of those packages are still maintained by the original author
161
162 An active author is one who has released something in the past 3 years.
163 An active module is one that has been updated in the past 3 years.
164
165 I apologize if I have missed anyone.
166
167 The 7 packages which are older than Date::Manip and are still actively
168 maintained by their original author (though they may have been renamed)
169 are:
170
171 ILYAZ MathPari 23-Jan-1995
172 ANDK Symdump 16-Aug-1995
173 PMQS Filter 28-Aug-1995
174 GAAS libwww-perl 16-Sep-1995
175 LDS GD 17-Sep-1995
176 MEWP sybperl 02-Oct-1995
177 TOMZO Quota 10-Oct-1995
178
179 Congratulations to those authors who have been with perl since the
180 beginning. I'm proud to be in their company! And congratulations to
181 ILYAZ for having the oldest module in CPAN!
182
183 Again, if I have missed anyone, please let me know.
184
186 Date::Manip - main module documentation
187
189 This script is free software; you can redistribute it and/or modify it
190 under the same terms as Perl itself.
191
193 Sullivan Beck (sbeck@cpan.org)
194
195
196
197perl v5.26.3 2017-08-25 Date::Manip::History(3)