A stack of Lego blocks.

One of the strengths of a good content management system is its ability to add on extra modules for additional functionality. In an open source environment, such as BackdropCMS, many developers share their contributions for the benefit of all, and some of these contributed modules become frequently used and a de facto solution to specific website needs.

Because Backdrop has its origins in Drupal 7 we have the benefit of being able to re-use much of what has been already developed and established with Drupal. As there are differences between the two environments, it is necessary to make some modifications, a process known as porting. This process varies in complexity, depending on the nature of the module. It has been described thoroughly elsewhere and can often be carried out by a programmer with a moderate understanding of PHP.

This table is a recent representation of where we are in the task of implementing the modules familiar to Drupal 7 users:

Progress

After little more than two years since the initial release of Backdrop in January 2015, thanks to the efforts of several individuals we now have in addition to those listed above a wide selection of contributed modules available for download and rapid installation in a site. There is of course more to be done; also there is the ongoing necessity to fix any problems that arise and incorporate changes made in the parent Drupal module, if applicable.

One important and helpful trend with Backdrop has been to incorporate regularly used modules into the core project, generally following an 80% principle which is that if 80% of sites are going to benefit from the functionality it should be part of core. Following this principle before the launch of Backdrop, several key modules were added to core, notably Views and Layout.  Since launch others have been added, namely: Token, Pathauto, CKEditor, Date, Date Popup, Date Views, Link, Email, Redirect, Entity View Mode, and waiting in the wings  hopefully for our next minor release in May this year is the Reference module for building relationships between Users, Nodes, Terms and other entities.

There are many other contributed modules available either from their project on GitHub or via the backdropcms.org site where all those with labelled releases are listed and described. The addresses for these listings are https://github.com/backdrop-contrib  for  ‘Backdrop CMS contributed projects’ on Github and https://backdropcms.org/modules  for ‘Modules for Backdrop CMS’ on our BackdropCMS website.

A very useful feature in a Backdrop website is the Project Installer module, itself developed initially as a contributed module but now fully a part of core. This, coupled with the Update module, allows Backdrop contributed modules to be installed and, when necessary, updated via the website administrative pages.

To illustrate what else is available, here is a list of some of my favourites. There are many others I have not included here so please take a look at the full listings.

Eight of my favourites

Backup and Migrate: This module eases the task of backing up your Backdrop database and migrating data from one Backdrop installation to another. It provides a function to back-up the entire database to a file on your server or to download it, and also to restore your site from a previous backup.

Views Slideshow: Views Slideshow can be used to create a slideshow of any content (not just images) that will then appear in a View. Powered by jQuery, it is heavily customizable and you may choose slideshow settings for each View you create. Also available is Views Slideshow: Galleria which provides a way of providing photo galleries.

Colorbox: This integrates the jQuery ‘colorbox’ library,  enabling images or content from your site to appear as a popup "lightbox".

Google Fonts: This module enables you to explore the wide range of typefaces available from Google Fonts and add one or more to your site using a simple user interface.

Webform: Do you need to add custom forms or surveys to your site? Webform provides an important and very useful module for making forms and surveys in Backdrop.

Invisimail: Do you need to show real email addresses on your site? Invisimail provides a content filter to hide email addresses from spam-bots. Email addresses are converted to ascii code and optionally written to the page using a concatenated JavaScript "write" command.

Views Send: Are you building a site for an organization with a mailing list? Views Send provides mass mailing using the Views module in core, enabling a list of email addresses to be produced as part of a view and an email to the group to be composed and sent.

Agenda: I abandoned my attempt to port the calendar module from Drupal to Backdrop mainly because my users have become used to better applications. By incorporating their Google Calendar page in the site and using the relevant Google API and the Agenda module, it is possible to display a list of upcoming events as a block on your website.

Development

It is great to see the regular addition of new Contributed Modules. This area of development is open to all, though there are some basics you have to agree if you plan to share your work with the community. Find out more at https://github.com/backdrop-ops/contrib. It is also good practice to share your intention to port a specific module from Drupal in order to avoid unnecessarily duplicating effort.

What are the development priorities? There is no master plan! Progress depends on the good-will and needs of individuals. Sometimes progress can be remarkably swift; at other times some sort of problem arises and porting proves difficult without help and advice. The GitHub issue queue provides one means of seeking help, the Gitter channel at https://gitter.im/backdrop/backdrop-issues is another.

One particular area of activity for me at the moment involves modules such as Notify, Triggers and Rules which enable actions such as sending an email to be performed automatically by the site when, for example, new content is added.

Support

Each contributed module has its own project repository and issue queue on Github, within https://github.com/backdrop-contrib. If you find a problem with a contributed module it is best first to search the project’s issue queue to find out whether the issue has already been reported. If it has then it may be useful if you add any additional information about what you have experienced. If the issue has not yet been reported then please create a new one, giving any helpful information including perhaps a screenshot to aid identification of the problem.

Not all projects are actively maintained but nevertheless another member of the team may be able to assist, but remember, we are all unpaid volunteers who prefer to be treated with courtesy and respect!

If you do not feel able to do the technical work needed to port a module, please feel free to add an issue at https://github.com/backdrop-ops/contrib expressing your interest in being able to use it. If you are fortunate someone who can do the porting might agree that it would be a useful addition to the collection we already have and do the necessary work.

Future

There is no limit to the number of contributed modules that might become available; people are free to develop and share them whenever they find a need. Our listing at https://backdropcms.org/modules now shows over 250 entries and more are being added each month. Because of their number it is becoming difficult to locate a module for a particular purpose so perhaps we need to work towards some form of categorization.

Personally I consider that having a wide range of good quality contributed modules is of considerable importance to the Backdrop programme. We have done well so far but there may well be gaps we can fill in order to assist the uptake of Backdrop as a great and extremely useful CMS.

If you become aware of cases where Backdrop modules do not provide the required capability, please share this with the team. Hopefully the soon-to-be-ready Backdrop Forum will enable us to share opinions on needs and priorities, and enhance the overall Backdrop project in a slightly more planned way.

Acknowledgements

This blog post is of course an expression of my personal understanding and opinions and in no way is an official statment of Backdrop policy. If I have got things wrong, please comment. If my favourite modules are not the same as yours (and why should they be?) please share your views.

I stumbled across Backdrop shortly before its initial release at a time when I was, frankly, dismayed by the prospect of the new things I would have to learn if I were to keep up with the transition from Drupal 7 to 8. I am extremely grateful for the way in which Backdrop has enabled me to create good websites and at the same time contribute with comments, issues, questions and porting of modules. Thank you all for your hard work and kind treatment of newcomers.