We're here to support our customers affected by the COVID-19 coronavirus - Find out more »

Category: Tech Insight

Strawberry Perl vs ActivePerl

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 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's Perl Package Manager

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 install 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.

ActivePerl 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 install 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 install 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 need.

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 install 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.

In this blog post, we’ll take a look at SPF and why its important in ensuring email from your MIDAS room booking system is reliably delivered.

SPF stands for “Sender Policy Framework” and its purpose is to prevent unauthorized people from forging your e-mail address and pretending to be you. SPF has been around for a number of years now, but in recent times has been growing in popularity as more and more websites and email providers start enforcing it.

As our MIDAS web based room booking systems are capable of sending email on your behalf, it’s important to understand how SPF works and how it can help solve email delivery issues in MIDAS.

Take for instance the following example Scenario:

  • Your MIDAS system is running on domain “A” (i.e. your-organization.mid.as)
  • Your MIDAS system is configured to send emails to appear as though they are sent from an email address belonging to domain “B” (i.e. your-organization.com)
  • An email is sent from your MIDAS system to a recipient with an email address on domain C

In the above example, the receiving mail server for domain C queries the SPF record on domain B to check whether domain A is authorized to send mail on behalf of domain B. If it isn’t the email is rejected.

An SPF record is simply a TXT record in a given domain’s DNS, and a simple example may look similar to this:

v=spf1 +a +mx ~all

The format of an SPF record begins with a version number; the current SPF version is “v = spf1”.
Following the version string, any number of expressions may be included which are evaluated in the order they appear. These consist of an optional “qualifier” (+, -, ~, or ?) and a “mechanism” (all, a, mx, ip4, or include). The first mechanism that is matched in the SPF record determines the result of the entire valuation of the SPF record.

Qualifiers:

QualifierResultDescription
+PassDefines an authorized sender
(If no qualifier is specified, + is assumed)
FailDefines an unauthorized sender
~SoftFailDefines an unauthorized sender
(however it may not notify the sender that their email failed)
?NeutralDefines a sender whose legitimacy isn’t determined
(In such instances, sending is allowed)

Mechanisms:

MechanismApplies if…
allalways
aAn A (or AAAA) record of the polled (or explicitly specified) domain contains the IP address of the sender
mxAn A (or AAAA) record of the polled (or explicitly specified) domain contains the IP address of the sender
ip4The specified IPv4 address is the IP address of the sender or of the specified IPv4 subnet which contains it
includeAn additional SPF request for the domain specified in the include statement contains the IP address of the sender

SPF records cannot be over 255 characters in length and cannot include more than ten “include” statements.

Example SPF record:

v=spf1 +a +ip4:1.2.3.4 -ip4:5.6.7.8 +include:somedomain.com ~all

In the above example:

  1. Email delivery will be allowed if it originated from the same domain it was sent (+a).
  2. Email delivery will also be allowed if it originated from the specific IP address 1.2.3.4
  3. Email delivery will be rejected if it originated from the IP address 5.6.7.8.
  4. Email delivery will be allowed if it matches the rules defined in the SPF record on “somedomain.com”
  5. All other email sources will be softly rejected (~all)

Bringing it back to MIDAS…

If you run a cloud-hosted MIDAS system at the domain “your-organization.mid.as”, your organization’s own website is “your-organization.com”, and you wish to allow your MIDAS system to send email on behalf of addresses @your-organization.com, then you should setup/modify an SPF record on your-organization.com.

This SPF record would authorize your hosted MIDAS system to send email on behalf of your organization. Failing to correctly set an SPF record for your domain may mean that emails sent from your MIDAS system may not reach recipients.

For our hosted customers, you can simply include “include:_spf.midas.network” in your-organization.com’s SPF record. Your new/modified SPF record may then look similar to this:

v=spf1 +a +mx include:_spf.midas.network ~all

In the above example:

  1. Email delivery will be allowed if it originated from the same domain it was sent (+a).
  2. Email delivery will be allowed if it originated from the same mail server as it was sent (+mx)
  3. Email delivery will be allowed if it matches the rules defined in the SPF record on “_spf.midas.network”. This will allow your hosted MIDAS system to become an authorized sender of email for your domain.
  4. All other email sources will be softly rejected (~all)

Remember, SPF records are simply TXT records within your domain’s DNS. If you’re not sure how to set/modify DNS records for your own domain, you’ll need to defer to the domain’s administrator, registrar, or hosting provider who should be able to assist in making the necessary adjustments to your domain’s DNS record

Further reading from our Knowledgebase:.

In addition to our commitment to regularly bringing exciting new and improved features to our easy-to-use room booking system, MIDAS, we also work hard behind the scenes to constantly improve the overall speed and performance of both our software and infrastructure.

In this article, we’ll take a closer look at some of the performance improvements we’ve introduced over the past year, and some of the performance improvements you can look forward to in the very near future!

Caching and CDN

CDN stands for “Content Delivery Network”. It is a means whereby web content – such as an image – is stored on multiple servers around the world. When the image is requested by a visitor’s web browser, rather than the image being served from a single origin server (which may reside in another country), it is instead served by the nearest/fastest server in the CDN network. The result is significantly improved loading times for content served via a CDN.

Back in May last year (2018) we introduced CDN support for static content for all our cloud-hosted MIDAS customers.

As a result, we quickly saw performance improvements and reduction in load times of customer’s hosted MIDAS systems by up to 67%! You can read more about this in this blog post.

Improved DNS

DNS stands for “Domain Name System”, and can be considered as a “phone book” for the internet. When you enter a website in your browser’s address bar, a DNS system is used to look up the corresponding server on the internet that the URL you’ve entered resolves to, allowing you to then access the site.

This week, we’ve migrated our DNS to a distributed/cloud-based system. Previously, our DNS was provided by our own web servers. So for example, if you wanted to access our blog (blog.mid.as) the DNS system would first have to make contact with mid.as to find out the location of blog.mid.as.

With our new distributed/cloud-based DNS system, DNS is now handled in a similar way to the CDN system outlined above. That is to say that when you enter a URL/sub-domain for any part of our site, the DNS is resolved on a server geographically close to you.

As a result, we’re seeing DNS lookup times for our site up to 5 times faster than previously!

The above images (from dnsperf.com) show how quickly the mid.as domain used to resolve from various locations around the world (left image) and again now (right image).

XML vs JSON

What and what?! XML stands for eXtensible Markup Language. JSON stands for JavaScript Object Notation. Both are methods for storing and transporting data, with JSON being the newer of these two methods.

As we’ve been developing MIDAS for well over a decade now, XML has been the format we’ve used for the main settings file within our software for the majority of that time. This is because JSON wasn’t really around a decade ago!. The downside of using XML – particularly when used in conjunction with Perl (the language which MIDAS is written in) – is that it tends to be a little slow and clunky.

That’s why starting with our next software update, v4.22, we’ll dropping the main XML settings file in favor of a JSON settings file instead. In our own benchmark testing, this simple change has resulted in improved load times of ~10ms per request. This may not sound a lot, but is actually quite noticeable.

As a result of this upcoming improvement, self-hosted customers will need to ensure that the JSON Perl module is installed and available on their MIDAS system in order to be able to update to v4.22 Instructions of how to do this may be found in our How to install Perl modules KB article. Cloud-hosted customers don’t need to worry about this, as we’ve taken care of it!

MIDAS and Internet Explorer 11

Here are MIDAS HQ we love getting feedback from our customers! Whether positive or critical, all feedback is important to us as it helps us to continually develop and improve our MIDAS room booking & resource scheduling software and service to make it the best it can be!

Our customer feedback is overwhelmingly positive, and you can read some of these comments on our website and also on independent review sites such as TrustPilot.

However, in recent times a handful of customers have commented specifically in relation to the user interface (UI) of MIDAS, which a few perceive as now a little “dated”.

We wanted to begin addressing this for our next MIDAS update, v4.20, and so we’ve introduced a number of changes and improvements in this area which you can read about in the following blog post.

However, we also thought it would be useful to explain some of the challenges we’ve faced with regards to the UI over the years.

As you may or may not know, MIDAS has been in continuous active development for well over a decade, and our philosophy has always been to support ALL popular web browsers (Internet Explorer, Mozilla Firefox, Google Chrome, Opera, Apple Safari, and more recently Microsoft Edge).

Room Booking System for Chrome, Firefox, Safari, Opera, and Edge This has been an enormous task over the years, but we feel strongly that our users should have a choice of which web browser they use, with a consistent MIDAS experience between browsers, and not be forced to use one particular browser in order to be able to access and use our MIDAS software.

It’s fair to say that the most difficult web browser to maintain support for over the years continues to be Microsoft’s Internet Explorer series, primarily because it has always lagged way behind all other vendor’s browser offerings in terms of its development, updates, and support for the latest standards (the web has developed and evolved significantly over the years we’ve been developing MIDAS, and Internet Explorer doesn’t keep up!).

To some extent we’ve been “held back” over the years by our decision to continue to support customers who force their uses to use Internet Explorer, however, as of today the only version of Internet Explorer we officially support is 11, having deprecated support for IE10 & 9, IE8, IE7, and IE6 over the past decade.

MIDAS and Internet Explorer 11 Continuing to support MIDAS in IE11 for the very small (and ever decreasing) percentage of our users who continue to use this old browser limits how we can develop MIDAS, particularly in terms of the user interface.

Whilst we would have loved to have dropped IE11 support long ago, Microsoft have committed to providing mainstream support for IE11 until the end of life of the operating systems upon which it is installed – namely, Windows 7, 8 and 10. Windows 7 & 8 have both now reached their EOL (End Of Life) for mainstream support, however Windows 10 is still actively supported by Microsoft and will continue to be for the foreseeable future (for a minimum of at least two years).

That’s why we’ve taken the difficult – but necessary – decision that at some point during 2019 we’ll officially be dropping IE11 support in MIDAS.

This won’t necessarily mean that MIDAS will suddenly cease to function for IE11 users next year, but it does mean that over time new features and new user interface elements and enhancements may not display or even function correctly if you continue to access MIDAS using Internet Explorer 11.

If you’re currently an IE11 user, there is however, plenty of time to switch to a different web browser and there’s plenty of choice when it comes to modern alternative web browsers.

MIDAS will continue to be supported in recent versions of Firefox, Chrome, Safari, Edge, and Opera.

We appreciate that this may affect a very small number of users, but we hope this blog post gives some insight and understanding as to why we’re making this decision and also gives you plenty of time to switch to an alternative, more modern, web browser.

As ever, if you have any questions or concerns over how this may impact you and your organization’s use of MIDAS, please don’t hesitate to contact us and our friendly team will be only too happy to help!