Blame lib/Date/Manip/History.pod

Packit 95306a
# Copyright (c) 2015-2017 Sullivan Beck. All rights reserved.
Packit 95306a
# This program is free software; you can redistribute it and/or modify it
Packit 95306a
# under the same terms as Perl itself.
Packit 95306a
Packit 95306a
=pod
Packit 95306a
Packit 95306a
=head1 NAME
Packit 95306a
Packit 95306a
Date::Manip::History - Twenty years and still going strong
Packit 95306a
Packit 95306a
=head1 TWENTY YEARS
Packit 95306a
Packit 95306a
I just realized (Dec 2015) that Date::Manip turned twenty years old
Packit 95306a
earlier this year, so I wanted to write some thoughts I have about
Packit 95306a
Date::Manip.
Packit 95306a
Packit 95306a
The history of Date::Manip can be broken into several periods.
Packit 95306a
Packit 95306a
=over 4
Packit 95306a
Packit 95306a
=item Birth of Date::Manip (1995-1996)
Packit 95306a
Packit 95306a
1995 was the year I really started using perl to automate some of
Packit 95306a
my common tasks.  At the time, I was running programs using a number
Packit 95306a
of different batch systems that needed dates entered in a variety
Packit 95306a
of different formats.  It was frustrating to remember what format for
Packit 95306a
what batch system, so I wrote some wrappers which would take a few
Packit 95306a
common formats that I wanted to use and would turn those dates into
Packit 95306a
whatever format the batch system needed.
Packit 95306a
Packit 95306a
After a few different wrapper scripts (where I copied the date handling
Packit 95306a
code between the scripts), I gathered all of the date routines into
Packit 95306a
one package.
Packit 95306a
Packit 95306a
This was the birth of Date::Manip.
Packit 95306a
Packit 95306a
I kept it that way for about half a year.  By that time, I was thoroughly
Packit 95306a
in love with perl and wanted to contribute.
Packit 95306a
Packit 95306a
At the time, CPAN was just a fledgling site, but in October, I released
Packit 95306a
my first package.  It wasn't really a module at that time... it was
Packit 95306a
crudely put together and extremely limited use.  Even so, it got some
Packit 95306a
very positive initial feedback which spurred the early growth.
Packit 95306a
Packit 95306a
There were several private versions followed by 4 public releases (4.0
Packit 95306a
through 4.3) during this period.
Packit 95306a
Packit 95306a
Soon, I had adopted many of the best practices of the day and converted
Packit 95306a
it to a full-blown module.
Packit 95306a
Packit 95306a
=item Active development (1996-2001)
Packit 95306a
Packit 95306a
The next 5 years were extremely active.  Based on suggestions and requests,
Packit 95306a
functionality increased dramatically, and before long, Date::Manip was
Packit 95306a
considered the goto module for Date operations.
Packit 95306a
Packit 95306a
During this period, a number of other modules came along that did a small
Packit 95306a
subset of the functions of Date::Manip (most of them significantly faster),
Packit 95306a
but none had the scope of Date::Manip.
Packit 95306a
Packit 95306a
During this period, I recognized that the single biggest weakness was
Packit 95306a
the inability to correctly handle timezones and daylight saving time.
Packit 95306a
Towards the end of this period (2000 I believe), I began a project to
Packit 95306a
rewrite Date::Manip, but I didn't not have the time needed to really
Packit 95306a
carry it out at that time.
Packit 95306a
Packit 95306a
Another weakness was that Date::Manip grew in a random way.  As ideas
Packit 95306a
and suggestions came, I added them.  There was little planning or
Packit 95306a
forethought involved, and that led to it not having a consistent
Packit 95306a
API.
Packit 95306a
Packit 95306a
1998 did see the addition of Recurrences.  Although not an extremely
Packit 95306a
widely used piece of functionality, I regard this as the single most
Packit 95306a
important contribution I have ever made.  I developed the notation for
Packit 95306a
specifying recurring events, and no other notation has ever come close
Packit 95306a
to matching it's power and flexibility.
Packit 95306a
Packit 95306a
This period, starting with the first release in a full module form,
Packit 95306a
included 26 releases (from 5.00 to 5.40).
Packit 95306a
Packit 95306a
=item Minimal maintenance (2001-2008)
Packit 95306a
Packit 95306a
During these years, I was able to devote time needed to maintain the
Packit 95306a
existing module, but not to do major development.
Packit 95306a
Packit 95306a
As a result, the rewrite project remained incomplete (and in fact, it
Packit 95306a
was barely started).
Packit 95306a
Packit 95306a
During this time, due to the fact that no other module could handle
Packit 95306a
timezones correctly, DateTime arrived in 2003.  It featured a nice
Packit 95306a
object-oriented interface, and handled timezones.
Packit 95306a
Packit 95306a
Over the next few years, it became the de facto standard for date
Packit 95306a
handling in perl.
Packit 95306a
Packit 95306a
This period included only 8 releases (5.42 to 5.54).
Packit 95306a
Packit 95306a
=item Rewrite (2009-2010)
Packit 95306a
Packit 95306a
In 2009, I decided it was time to fix the timezone problems in Date::Manip .
Packit 95306a
Some people might see this as a waste of time due to the fact that DateTime
Packit 95306a
existed, but I had several thoughts.
Packit 95306a
Packit 95306a
First, many people continued to use Date::Manip.  This was evident by
Packit 95306a
the number of emails I continued to receive.
Packit 95306a
Packit 95306a
Second, there were still things that Date::Manip did better than DateTime
Packit 95306a
including recurrences and parsing.
Packit 95306a
Packit 95306a
Third, I love my module, and didn't want to see it die.  I'll continue to
Packit 95306a
use it, even if nobody else does.
Packit 95306a
Packit 95306a
So, I set out to fix it.  It turned out to be a complete rewrite, but in
Packit 95306a
the end, version 6 was released with full timezone handling, even better
Packit 95306a
parsing, and quite a few other features.
Packit 95306a
Packit 95306a
Date::Manip was once again very much alive.
Packit 95306a
Packit 95306a
This period featured 13 releases (6.00 to 6.14) with an additional
Packit 95306a
2 maintenance releases of version 5.
Packit 95306a
Packit 95306a
=item Active maintenance (2010-present)
Packit 95306a
Packit 95306a
Although primarily in maintenance mode (due to the fact
Packit 95306a
that Date::Manip does pretty much everything that it was designed to do),
Packit 95306a
active maintenance continues.  There is also some development and
Packit 95306a
a large number of significant improvements have been made in this
Packit 95306a
period.
Packit 95306a
Packit 95306a
I make regular releases to update the timezone information, fix bugs,
Packit 95306a
and add the occasional new features.
Packit 95306a
Packit 95306a
For the foreseeable future, Date::Manip will remain active, and fully
Packit 95306a
capable of handling any common date operation.
Packit 95306a
Packit 95306a
Since 6.14, there have been 36 releases to date (6.20 to 6.59) which is
Packit 95306a
averaging about 5 releases per year.
Packit 95306a
Packit 95306a
=back
Packit 95306a
Packit 95306a
=head1 ONE OF THE OLDEST
Packit 95306a
Packit 95306a
I was curious to see how many other modules are out there that have
Packit 95306a
survived as long as Date::Manip.
Packit 95306a
Packit 95306a
The first public release of Date::Manip (though it was not a module
Packit 95306a
yet of course) was version 4.0 on 13-Aug-1995.  The first public
Packit 95306a
release to CPAN was version 4.2 released on 23-Oct-1995.
Packit 95306a
Packit 95306a
I got a list of all CPAN modules from the wayback machine for 2000
Packit 95306a
(the earliest version of the list that I could find).  Then I checked
Packit 95306a
each of these authors on backpan to see which of these authors had
Packit 95306a
packages (.tar.gz or .tgz files) released prior to 23-Oct-1995.
Packit 95306a
Packit 95306a
I found that at the time Date-Manip 4.2 was released there were
Packit 95306a
Packit 95306a
   32 authors
Packit 95306a
   70 packages
Packit 95306a
Packit 95306a
There are currently (Aug 2017) over 190,000 modules by over 13,000 authors.
Packit 95306a
So Date::Manip got involved in CPAN very early.
Packit 95306a
Packit 95306a
Next, I tried to determine which of those authors and packages are
Packit 95306a
still active.  I'm not completely sure about some of the packages because
Packit 95306a
frequently, those old packages have changed maintainers, been renamed,
Packit 95306a
or been incorporated into other packages.  So the number of active
Packit 95306a
packages is actually a lower limit.
Packit 95306a
Packit 95306a
I found that:
Packit 95306a
Packit 95306a
   13 authors are active today
Packit 95306a
   21 of the packages are active today
Packit 95306a
   7 of those packages are still maintained by the original author
Packit 95306a
Packit 95306a
An active author is one who has released something in the past 3 years.
Packit 95306a
An active module is one that has been updated in the past 3 years.
Packit 95306a
Packit 95306a
I apologize if I have missed anyone.
Packit 95306a
Packit 95306a
The 7 packages which are older than Date::Manip and are still actively
Packit 95306a
maintained by their original author (though they may have been renamed)
Packit 95306a
are:
Packit 95306a
Packit 95306a
   ILYAZ  MathPari     23-Jan-1995
Packit 95306a
   ANDK   Symdump      16-Aug-1995
Packit 95306a
   PMQS   Filter       28-Aug-1995
Packit 95306a
   GAAS   libwww-perl  16-Sep-1995
Packit 95306a
   LDS    GD           17-Sep-1995
Packit 95306a
   MEWP   sybperl      02-Oct-1995
Packit 95306a
   TOMZO  Quota        10-Oct-1995
Packit 95306a
Packit 95306a
Congratulations to those authors who have been with perl since the
Packit 95306a
beginning.  I'm proud to be in their company!  And congratulations to
Packit 95306a
ILYAZ for having the oldest module in CPAN!
Packit 95306a
Packit 95306a
Again, if I have missed anyone, please let me know.
Packit 95306a
Packit 95306a
=head1 SEE ALSO
Packit 95306a
Packit 95306a
L<Date::Manip>        - main module documentation
Packit 95306a
Packit 95306a
=head1 LICENSE
Packit 95306a
Packit 95306a
This script is free software; you can redistribute it and/or
Packit 95306a
modify it under the same terms as Perl itself.
Packit 95306a
Packit 95306a
=head1 AUTHOR
Packit 95306a
Packit 95306a
Sullivan Beck (sbeck@cpan.org)
Packit 95306a
Packit 95306a
=cut