“Perl” is the coding language we develop our web based room booking and resource scheduling software, MIDAS, in.
Most Linux and Mac OS based operating systems come with Perl pre-installed, yet, Windows operating systems do not.
We test MIDAS on a range of operating systems, servers and platforms. Our in-house development of MIDAS is primarily within a Windows-based environment. This means that we needed to install a Perl distribution on Windows.
ActivePerl
When MIDAS development started back in 2005, there was really only one mainstream solution for running Perl on Windows. This was a Perl distribution named “ActivePerl“, produced by ActiveState.
The reason we liked ActivePerl was two-fold; firstly, a completely free “Community Edition” was available. Secondly ActivePerl came with a handy tool called the “Perl Package Manager” (PPM). This made installing and updating Perl modules easy. It provided a graphical interface where modules could be quickly installed, updated, or uninstalled with just a few clicks:
ActivePerl included a number of “default” Perl modules. MIDAS requires some additional modules not included within the standard ActivePerl distribution. The PPM tool allowed easy and quick installation of any such modules as required.
Many of our “self hosted” customers intended to install our MIDAS booking software on their Windows-based server. Therefore, we would recommend ActivePerl due to its availability, regular updates, and ease of use.
Strawberry Perl
Since 2005, other Perl distributions built for Windows have come along. Perhaps the most notable of these being “Strawberry Perl“, which first appeared in 2008.
Back then we explored what Strawberry Perl had to offer when compared to ActivePerl. After evaluating Strawberry Perl, we decided ActivePerl would continue to be the Perl distribution we developed under and would recommend to our Windows-based customers.
What initially made ActivePerl better than Strawberry Perl?
When we first evaluated the newcomer Strawberry Perl in 2008 against the more established ActivePerl, differences became clear from an ease of installation and use perspective.
Firstly, Strawberry Perl didn’t include a visual “Perl Package Manager”-type tool for installing and maintaining Perl modules. Rather, Perl modules required installation via the command line. On Linux-based servers, installing modules via the command line is the norm, but many of Windows-based users were less familiar with command line use. Consequently, a graphical Windows application which allowed easy installation of Perl modules was preferable.
Another difference was that ActivePerl was established and more stable. Strawberry Perl was still the newcomer and felt a bit “rough around the edges”. Some Perl modules were also not fully supported or failed to install easily/correctly in Strawberry Perl.
As such, because we continued to only recommend ActivePerl to Windows customers, it was logical to continue to develop under ActivePerl ourselves. We would however keep an open mind and keen interest in the ongoing development of Strawberry Perl.
For the most part, our Windows-based customers continued to opt for our recommendation of ActivePerl. A few chose Strawberry Perl instead and were able to initially do so successfully.
Are we POSIXtive?(!)
However, around June 2010, Strawberry Perl suddenly removed a key component from their distribution which MIDAS relied on; the ability to natively work with and set Timezones. This resulted in those running MIDAS under Strawberry Perl seeing “POSIX::tzset not implemented on this architecture” errors. We had no idea why Strawberry Perl removed this functionality, or whether it was just an unintentional bug/glitch in their software. The reason for the removal of this functionality wasn’t forthcoming, or even acknowledged, by the Strawberry Perl team. This led us to initially suspect that perhaps it may have just been a bug.
This wasn’t a major problem for us, as we’d never officially recommended or supported MIDAS running under Strawberry Perl. It was of course though an inconvenience for the handful of customers who had been running under Strawberry Perl.
As a fix wasn’t forthcoming from Strawberry Perl, the solution for affected customers was either to install an older version of Strawberry Perl, or switch to ActivePerl.
By late 2010, it became clear that the developers of Strawberry Perl weren’t going to address/fix this issue. So we re-engineered our MIDAS software to work around this issue. Our next release in January 2011 once again ran under Strawberry Perl without issue.
What we learnt from all this was that Strawberry Perl still felt in its infancy and in a state of flux. We still didn’t consider it “stable” enough for use in production server environments.
We continued to recommend ActivePerl for all our Windows-based customers.
ActivePerl was in continual development, with regular releases which reasonably closely tracked the latest versions of Perl available for Linux-based servers.
Something changed…
In late 2016, we felt things began to shift and change with ActivePerl.
We began to notice that the latest versions of Perl modules stopped being offered via ActivePerl’s Perl Package Manager (PPM). Initially, this wasn’t a great cause for concern. MIDAS didn’t require the very latest version of any Perl module.
The released of ActivePerl 5.26 saw things further decline…
As you may be aware, MIDAS uses MySQL as its database. Perl therefore has to be able to connect to a MySQL database in order for MIDAS to function. The critical Perl module for doing this (DBD::MySQL) wasn’t made available for ActivePerl 5.26 via the Perl Package Manager.
This meant that MIDAS wouldn’t run for customers under ActivePerl 5.26. Customers would instead have to install the previous ActivePerl 5.24 build, which was still available for download from ActiveState.
Now, in the past following a new release of ActivePerl, it could take several weeks for Perl module updates to become available though the PPM.
So we waited… and waited.. yet still no DBD::MySQL module appeared for ActivePerl 5.26. ActivePerl 5.26 became useless for any application like MIDAS which need to connect to a MySQL database!
In our view, ActivePerl declined from there; in order to download ActivePerl an account was now required on their website. Additionally, they discontinued Perl Package Manager. Instead users had to “custom build” their own ActivePerl package in the cloud with the modules they needed, or use a command line tool to add in modules.
ActivePerl’s development started to lag behind Perl itself. For example, at time of writing, the latest official version of Perl available is 5.30.2. The latest version of Strawberry Perl available is also 5.30.2. However, the latest version of ActivePerl available today is 5.28.1 – nearly 2 years behind where Perl is currently at!
Then in 2019 ActiveState’s website was reportedly hacked.
Doubts began to arise over ActiveState’s commitment to continuing to continue to provide Perl and a free “community edition”. Their focus seems to have shifted more towards monetization and on their Python language products instead (as evident from the majority of their recent posts on Twitter)
Why we moved to Strawberry Perl?
These developments were a worrying trend for us. This is why last year we began equally promoting and recommending Strawberry Perl alongside ActivePerl on our server requirements page. We also provided a helpful step-by-step guide for installing Strawberry Perl, to complement our previous guide for installing ActivePerl.
Strawberry Perl has certainly come a long way since its first release. It’s now very stable, is passionately developed, and closely tracks the official version of Perl with frequent releases. Best of all, it remains completely free!
Whilst there’s no “visual” tool to install Perl modules as there was with the PPM under ActivePerl, installing modules under Strawberry Perl is still straight forward. We’ve found that the latest modules are always available (including DBD::MySQL!)
Many previous ActivePerl users around the world have already made the switch over to Strawberry Perl. At the start of 2020, we also moved all our development from using ActivePerl’s distribution or Perl to Strawberry Perl.
Should I choose ActivePerl or Strawberry Perl?
If you’re considering a self-hosted edition of MIDAS (remember that we also offer a cloud-hosted edition too!) for installation on a Windows-based server, whilst we still presently support both ActivePerl and Strawberry Perl on our website we would strongly recommend you choose Strawberry Perl.
If you must use ActivePerl, then we’d suggest getting your hands on 5.24, although this is now four years old, and we’re big advocates for keeping server software up to date. So going forward Strawberry Perl would be our preferred option on Windows.
UPDATE: September 2021
Since we originally published this article in April 2020, we’ve since revisited ActivePerl.