Category: Tech Insight

Revisiting ActivePerl

Perl is the underlaying coding language that our MIDAS booking software is written in.

When it comes to developing with Perl on Windows-based systems, there are broadly two options, as Windows doesn’t natively come with Perl installed (unlike Linux/Mac systems)

These two options are:

Installing either of these products on Windows provides a Perl environment.

Here at MIDAS HQ, as we primarily develop using Windows-based machines, we need a Perl environment to develop under.

For many years, we opted for ActivePerl, but at the start of 2020 we made the switch to Strawberry Perl. You can read more about this in our earlier Strawberry Perl vs ActivePerl post.

A year and a half on, and we’re still very happy with our decision to move to Strawberry Perl.

But in some spare time recently, we thought we’d take a look at what ActiveState have been doing with their ActivePerl product since we moved away from it….

ActivePerl Icon

It’s all about the packages…

There are over 100,000 additional Perl “modules” (or “packages”) available to enhance the “core” functionality of Perl.

Our MIDAS software requires a handful of these additional modules in order to function.

We originally loved ActivePerl as it made it really easy for our customers (and us!) to install these modules via the “Perl Package Manager” tool (or PPM) for short.

This unique feature of ActivePerl was sadly retired by the vendor (ActiveState) by ActivePerl 5.28.

From ActivePerl 5.28 onwards, if users wanted to install additional Perl modules they were encouraged to instead sign up for an ActiveState account. They could then “build” their own custom-build of ActivePerl containing the additional packages/modules they require.

This was a far less user-friendly to install Perl modules than it was to use PPM, where modules could be installed at any time with just a couple of clicks.

Anyway, we thought we’d try using ActiveState’s platform to generate a custom-build of Perl containing all the additional modules/packages which MIDAS requires.

Here’s how we got on…

Signing up for an ActiveState account

Signing up for an ActiveState account is required if you wish to “custom build” ActivePerl with the specific modules/packages you require. That is unless you have a GitHub account (which let’s face it, most of our customers likely won’t have) in which case you can just sign-in.

In order to download ActivePerl, you now need to sign up/in to ActiveState
In order to download ActivePerl, you now need to sign up/in to ActiveState

Having to sign-up and create an account to build/download Perl is a bit unnecessary in our view. You can, for instance, download Strawberry Perl without any of the hassle of having to create an account first.

Anyway, we created an account and logged in…

Configuring a new ActiveState build

Creating a new ActivePerl build was relatively straight forward – there was a big “Create a New Project” button.

Creating a new project on the ActiveState platform
Creating a new project on the ActiveState platform

This then allowed us to select a language – in our case, this was Perl and a Perl version.

Creating a new Perl project on the ActiveState platform
Creating a new Perl project on the ActiveState platform

The two most recent options (5.34.0 and 5.32.1) were flagged as “Beta”.

Perl 5.34 and 5.32.1 are currently classed as "Beta" by ActiveState
Perl 5.34 and 5.32.1 are currently classed as “Beta” by ActiveState

We therefore chose the highest version that wasn’t flagged as “in Beta”. This was 5.32.0.

Next, we could “Add package bundles”. We didn’t want this, as we wanted to add individual packages, so we unselected all package bundles at this stage.

We then selected the operating system we wanted our custom Perl build to be for (in our case, Windows).

Selecting a target OS for ActivePerl
Selecting a target OS for ActivePerl

Next up was “Project visibility” settings:

All projects on ActiveState are "Public" unless you have a "paid" plan
All projects on ActiveState are “Public” unless you have a “paid” plan

The “Project visibility” could only be set as “Public” (unless you opt for one of ActiveState’s paid plans). Finally, we gave our project a name and hit “Create Runtime”.

Adding packages

Once the project was created, we then needed to add the 24 additional Perl modules (packages) that MIDAS requires. These could either be added one at a time via the “Add Packages” button, or imported as a list via the “Import” button.

Adding "Packages" to Perl on the ActiveState Platform
Adding “Packages” to Perl on the ActiveState Platform

The platform then automatically resolved additional dependencies of the 24 packages we’d added, which was useful.

One other useful feature was that the platform indicated any CVE’s (Common Vulnerabilities and Exposures) for each package we were including.

Building the new build

Once all the packages MIDAS required had been added, it was then time to “build” our custom ActivePerl environment. Building indicated that it would take up to 20 minutes to complete, and the platform displayed build progress in real-time throughout.

Sadly though, our build failed!

Building ActivePerl 5.32.0 failed
Building ActivePerl 5.32.0 failed

The packages that failed related to Perl support for MariaDB databases. MIDAS supports both MySQL and MariaDB databases, so it was kinda crucial that our Perl distribution fully supported MariaDB. Anyway, the provided build logs shed no useful light on the root cause of the build failure, nor did ActiveState’s community forums.

Trying again…

We decided to try again. We created a new project, but this time selected an earlier version of Perl (5.28.3), and added in all our required packages.

This time the build completed in 23 minutes and 35 seconds, and provided us with .exe and .msi installer links.

Successfully building ActivePerl 5.28.3 on the ActiveState platform
Successfully building ActivePerl 5.28.3 on the ActiveState platform

Testing the build

We admit, we were actually a little excited – we appeared to have a custom Windows distribution of Perl that our self-hosted customers could install on their servers, and all the modules MIDAS requires would be there right “out of the box”. Our customers wouldn’t need to separately manually install any Perl modules.

So we proceeded to install this custom distribution on a test Windows server, and all seemed to initially go ok.

Once Perl was installed, we ran our handy Server Readiness Tool. This is a free tool we provide to those interested in running MIDAS on their own server. Amongst other things, the tool checks that all necessary Perl modules are available.

To our surprise, this indicated that two modules; DBD::mysql and DBD::MariaDB appeared not to be installed. These modules allow MIDAS to communicate with its back-end database.

Running our Server Readiness Tool under our custom ActivePerl 5.28.3 distribution
Running our Server Readiness Tool under our custom ActivePerl 5.28.3 distribution indicates problems with DBD::mysql and DBD::MariaDB

Trying other versions

Wondering if it may have been an issue with the .msi installer, we completely uninstalled Perl and tried again with the .exe installer link instead. This produced the same results.

We also then spent time and built identical packages on the ActiveState platform under both Perl 5.26.3 and also Perl 5.34.0.

The 5.26.3 build produced the same results as the 5.28.3 build. The 5.34.0 build just failed to build (just like the original 5.32.0 build).

We looked a little deeper into our test server’s error logs and discovered that a key component needed by the MySQL and MaraDB drivers was actually missing and hadn’t been included within the distribution.

The “workaround”

It seems like we’re not the only ones having issues using recent builds of ActivePerl built on the ActiveState platform with MySQL / MariaDB packages included. A number of people have posted with similar issues in ActiveState’s forums (like in this thread, and this thread).

The issue appears to be related to a missing MySQL “client library” .dll file that doesn’t get included with builds of ActivePerl.

Their best solution… install Strawberry Perl, grab the required “libmysql__.dll” file that gets installed with that, and copy the file over to your ActivePerl install!

So we tried this, and it did indeed resolve the issue. But just to be clear – right now…

In order for ActivePerl to work with MySQL / MariaDB databases you need to install Strawberry Perl!

Yes – seriously!!

Why would anyone want to do this? – it would just be easier to install and use Strawberry Perl and not even bother with ActivePerl!

Conclusions

We’re really saddened by the recent direction that ActiveState have moved in with ActivePerl, and their apparent lack of enthusiasm for and commitment to ensuring that it actually works with popular databases!

For over a decade, we used to exclusively recommend ActivePerl to our Windows-based customers. Last year we changed to recommending either ActivePerl or Strawberry Perl.

However, in August 2021, as things stand at the moment, we can no longer recommend ActivePerl (we’ve even now removed this recommendation from our website).

In summary…

  • ActivePerl 5.32 and ActivePerl 5.34 fail to correctly build at this time, so can’t be used for MIDAS.
  • ActivePerl 5.28 and 5.26 do build, but are missing a required MySQL client library. In order to use either of these builds, you’d also need to grab a .dll file from an install of Strawberry Perl.
  • The last known “working” version of ActivePerl is 5.24. ActivePerl 5.24 is now 5 years old, and is no longer available for download from ActiveState’s website.

So for any self-hosted customer wishing to use install our MIDAS scheduling software on their Windows server, we suggest you avoid ActivePerl and use Strawberry Perl instead.

Alternatively, you may wish to consider our cloud-hosted solution.

UPDATE: Since originally publishing this article, ActiveState have reached out. Read more in Revisiting Active Perl… Part Two!


MariaDB vs MySQL

Any software application that “stores” data in some way shape or form, needs a reliable and efficient way to do so. That’s where a database comes in!

MIDAS – our web based room booking and resource scheduling software – is no exception. Since 2012, for its database, MIDAS has supported MySQL. More recently we started supporting MariaDB too.

Last week we announced that we’d migrated all our cloud hosted customers to MariaDB.

In this post we thought we’d look a little bit closer as to the differences between MySQL and MariaDB.

MySQL What is MySQL?

MySQL is a database engine released under a GNU General Public License, and also available under a variety of proprietary licenses.

MySQL was originally owned and sponsored by the Swedish company MySQL AB, which was subsequently bought by Sun Microsystems, and which then went on to be ultimately acquired by Oracle Corporation.

In 2009, when it was announced that Oracle was to acquire Sun, the founder of MySQL wasn’t happy and so “forked” the MySQL project and created MariaDB… more on that later.

Today, MySQL is the second most popular database engine in the world.

Prominent users of MySQL include Facebook, Pinterest, Airbnb, Sony, BBC, Symantec, GitHub, and booking.com.

MariaDB What is MariaDB?

MariaDB is a community-developed fork of MySQL. One of its key attractions is that it is intended to always remain free under a GNU General Public License.

It was created by one of the founders of MySQL, who forked it due to concerns over MySQL’s acquisition by Oracle Corporation in 2009. The concerns centered around rumors that Oracle (who already developed a competing self-titled database product) wanted to kill off MySQL in order to let their own “Oracle” database thrive. In the end, that didn’t actually happen, but that fear was the initial main driving factor behind MariaDB initially.

MariaDB intended to maintain high compatibility with MySQL, ensuring it would be a “drop-in replacement” for MySQL. Whilst that’s still broadly true today, since its inception, the features of the two database engines have slowly diverged more.

MariaDB version numbers initially followed MySQL’s numbering scheme up to version 5.5. As such, MariaDB 5.5 for example offers all of the features that MySQL 5.5 offers.

Specific new features have since been developed in MariaDB, so its developers decided that a major version number change was necessary. MariaDB 10.0 was released in November 2012, whilst MySQL at that time remained at version 5.

New features are added more frequently to MariaDB than to MySQL. MariaDB development is also led by some of the original developers of MySQL, with many other contributors. MySQL on the other hand is now developed almost exclusively by Oracle’s own in-house team.

Prominent users of MariaDB include Google, Mozilla, and Wikipedia.

Popularity of MySQL and MariaDB

Whilst today MySQL is still the second most popular database engine in the world, its popularity has been slowly declining over the years. At the same time, interest in MariaDB (currently the 11th most popular database) has been steadily increasing.

Global interest in MySQL since 2004
MySQL global interest since 2004 – Source: Google Trends
Global interest in MariaDB since 2004
MariaDB global interest since 2004 – Source: Google Trends

A brief history of database evolution in MIDAS

Our web based room booking and resource scheduling software, MIDAS, has been in active development for over 15 years now.

To help ensure maximum server compatibility, in the early days of our software, data was stored in simple CSV (Comma Separated Value) files.

In 2010, we migrated data storage from CSV to XML (Extensible Markup Language) files.

Two years later, in 2012 – and to coincide with the release of MIDAS v4 – we made the switch to a MySQL database.

MIDAS Database Evolution
MIDAS Database Evolution

Read more: MIDAS v4 – Why the database change?

Between 2012 to 2019 we continued to develop MIDAS exclusively using MySQL as its back-end database.

In 2019 we started receiving queries from a couple of customers asking if we’d consider supporting other database engines, as they weren’t big fans of MySQL.

By this time, MariaDB was gaining in popularity, and as it was billed as a “drop in replacement” for MySQL, it seemed a logical choice to explore.

In 2020, we released MIDAS v4.24, with preliminary and experimental support for MariaDB.

In our own development environment here at MIDAS HQ, we ran both MySQL and MariaDB in parallel during 2020. During this time, MySQL remained as the “preferred” database engine we use for development and testing of our software.

At the beginning of 2021, we made the decision to switch our “preferred” development database engine over to MariaDB. (We still continue to run MySQL, but this is mainly just for testing purposes these days).

Why we moved to MariaDB?

MariaDB has a number of advantages over MySQL, including:

  • MariaDB offers improved performance in many scenarios.
  • MariaDB is community-driven.
  • MariaDB has 268 contributors vs 83 contributors to MySQL *
  • MariaDB is in more active development (MariaDB has 193,330 code commits – the latest was today, MySQL has 163,534 – the latest was 3 months ago *).
  • MariaDB is gaining in popularity.

* correct at time of writing

All these factors led us to decide to migrate our development environment over to MariaDB in 2021.

In July 2021, we also seamlessly migrated our cloud-hosted customers over to MariaDB.

Should I choose MySQL or MariaDB?

If you’re considering a self-hosted edition of MIDAS (remember that we also offer a cloud-hosted edition too!), our software currently supports both MySQL and MariaDB databases.

At the end of the day, it will come down to personal preference, but we like to give self-hosted customers a choice. So if you’re looking for a room booking system that’s compatible with either MySQL or MariaDB, choose MIDAS!


Migrating to MariaDB from MySQL

Migrating to MariaBD from MySQL

As of 4th July 2021, all our cloud-hosted customer’s MIDAS databases have been migrated across from MySQL to MariaDB.

MariaDB What is MariaDB?

MariaDB is a community-developed “fork” of the popular MySQL database engine.

It was created by one of the original founders of MySQL, who forked it over concerns surrounding MySQL’s acquisition by Oracle Corporation in 2009. These concerns centered around rumors that Oracle were considering killing off MySQL to prevent competition with their own “Oracle” database. In the end, that didn’t actually happen and MySQL continues to remain available. But MariaDB continues to gain in popularity year on year, and has a number of advantages over MySQL.

Why migrate from MySQL to MariaDB?

  • MariaDB offers improved performance over MySQL in many scenarios.
  • MariaDB is community-driven, whereas MySQL is owned and developed by Oracle Corporation.
  • MariaDB has 268 contributors vs 83 contributors to MySQL *
  • MariaDB is arguably in more active development. (MariaDB has 193,318 code commits – the latest was today, MySQL has 163,534 – the latest was 3 months ago *)
  • MariaDB continues to gain in popularity.

* correct at time of writing

Now, we’ve been thoroughly testing MariaDB in our MIDAS development environment for well over a year now. In fact, it’s now become our “preferred” database engine over MySQL. We now only use MySQL for testing purposes. Because we now develop primarily using MariaDB, it made sense to move cloud-hosted customers over to this database engine too.

Will I notice any difference?

Our cloud-hosted customers may notice small performance improvements when performing certain operations in their online booking system. Other than that customers shouldn’t notice any other obvious changes.

That doesn’t mean that there aren’t any additional benefits to MariaDB though! One of the things we’ve now been able to do in to MariaDB is implement “data-at-rest” encryption.

Data-at-rest encryption

When it comes to encrypting data send over the internet, there are broadly two different types of encryption; encryption in transit, and encryption at rest.

Encryption in transit deals with the secure transmission of data between your browser and a server. For example, if you submit a form on a web page, the data you entered needs to be transmitted (or “sent”) to a server. If the form was on a web page severed from a URL beginning “http://”, the data is transmitted unencrypted to the sever. This means that they data you’re submitting could potentially be intercepted and read during transit.

A form submitted on a website accessed over httpS, with correctly configured security certificates, will mean than the data will be encrypted in transit to the server.

All of our cloud-hosted MIDAS systems are accessible over secure https only. We support the latest standards and protocols (including TLS 1.3), and disallow older/obsolete/insecure protocols (like SSL 2/3, and TLS 1.0/1.1). If you’re interested, you can view our A+ rating on SSL Labs.

Encryption at rest on the other hand deals with how data is actually stored on a server (i.e. on a physical disk). Data may be encrypted in transit, yet not encrypted at rest, or vice versa.

The most secure systems are those which encrypt data both in transit AND at rest.

As of 4th July 2021, we’re pleased to announce that all our cloud hosted customer’s databases are also now encrypted at rest too!

What about self-hosted customers?

This month’s migration from MySQL to MariaDB affects cloud-hosted customers only.

Self-hosted customers have a choice between either using MySQL or MariaDB for their MIDAS database.

We have no plans to discontinue support for MySQL in the foreseeable future, and will continue to provide support to customers who are using MySQL for their MIDAS booking systems.


We’re greener than most!

MIDAS uses 86% less carbon than the average website

The environment, and our combined impact upon it, is an important global issue. Every day there are new headlines highlighting the environment challenges facing our world, and ways that we can all help combat climate change and reduce our carbon footprint.

Earth Hour

Here at MIDAS you may be aware that we have previously taken part in Earth Hour and we will be taking part again this year on Saturday 27 March 2021. The aim of the campaign is to raise awareness of environmental issues and asks for both individuals and businesses alike to switch off their lights for an hour between 8.30pm – 9.30pm in their local time zone.

How MIDAS is responding

Whilst thinking about this year’s Earth Hour we have been reviewing our current environmental strategies and looking at ways in which we could further reduce our carbon footprint.

As MIDAS is an online room booking system, we’re conscious of our environmental impact. We’re also pro-active in researching ways we can reduce our impact on CO2 emissions.

As part of our research, we recently discovered the Website Carbon Calculator. The website carbon calculator uses five key metrics to estimate the carbon emissions of a website. These factors include the volume of data being transferred when a web page is viewed, the type and amount of energy used at the data center serving the web page, as well as the volume of traffic to the site.

The carbon calculator remarks that:

The average web page tested produces 1.76 grams CO2 per page view. For a website with 10,000 monthly page views, that’s 211 kg CO2 per year.

websitecarbon.com

For our own website homepage, the Carbon Calculator estimates that MIDAS is 86% cleaner than all other websites tested. It estimates that just 0.19g of CO2 is produced every time someone views our home page (1).

Only 0.19g of CO2 are produced by visiting our website

We also compared our website’s carbon footprint against those of other similar businesses in our sector, to see how we fare in comparison (1).

CompanyComparison against all websites tested through the carbon calculatorCO2(g) produced per view of home page
MIDAS86% Cleaner0.19
Roomtime82% Cleaner0.26
Supersaas82% Cleaner0.26
Skedda75% Cleaner0.40
Acuityscheduling70% Cleaner0.49
Teem59% Cleaner0.73
Bookinglive52% Dirtier1.00
Roomzilla52% Dirtier1.00
Getjoan56% Dirtier1.10
Myrendezvous63% Dirtier1.35
Cloudbooking66% Dirtier1.47
Bookitwise68% Dirtier1.54
Deskflex92% Dirtier4.45
Meetio98% Dirtier12.01

(1) Data correct at time of testing, and purely relates to the amount of CO2 produced per view of the homepage of each website.

As can be seen from the information produced by the website carbon calculator, there are some significant differences between some of these businesses. In some cases, viewing the home page of one of these other websites produces more than 60 times the amount of CO2 than visiting MIDAS!

Now, when choosing a room booking system, resource scheduling software, or appointment scheduler, the amount of carbon it produces probably isn’t top of your list of criteria. In fact, it may not factor in your decision making process at all!

Choosing greener online businesses

MIDAS produces 60 times less carbon than some of our competitors

Most businesses, when focusing on reducing their carbon emissions, look to do so in “visible” ways. For instance, by reducing heating costs through better insulation, or reducing electricity costs by switching to LED light bulbs.

Reducing the amount of carbon produced by the various software products they choose is a less obvious and less “visible” action.

But when you consider the vast differences that do exist today between software vendor’s carbon production, choosing a software vendor with a low carbon footprint makes sense! Not only does it help with your own business’ green credentials, but it also – more importantly – it helps our planet.

Why choose a business that would require the equivalent of 60 trees a year to absorb the carbon it produces, when you could choose a business requiring just 2?

For a room booking and resource scheduling system committed to being green, be sure to consider MIDAS.