Salsa Digital has gifted us all with some truly exceptional documentation of their work on a govCMS site for the Civil Aviation Safety Authority (CASA) in Australia.
For those unfamiliar with it, govCMS is a custom Drupal distribution and hosting service catering to all of the Australian government. The aim is to provide a single solution for unclassified websites using a common codebase and a shared feature set on a scalable and secure infrastructure.
Launched in 2015, govCMS has many lessons for developers everywhere -- even those who may never set foot in Australia. Here's what I think are the take-aways, for the rest of you, with links to Salsa's original posts.
Use the right tools to migrate content from legacy data sources
When pulling together data to be imported to Drupal from multiple data sources, some legacy systems may not use a normalised data structure. Because of this, we must choose not only the right tool for the job, but also the right source for the tool:
- Rather than writing new migrate classes for less used database backends, command line tools can be used to convert data into more standard forms from which already-written Migrate classes may be used.
- While Migrate can be used for CSV files, the Feeds/Feeds Tamper module requires less work to run a simple import.
It's possible to execute complex scripts against Drupal sites with only remote Drush access
Where the ability to upload entire scripts to remote environments for execution is prohibited, alternative and more creative methods may be used.
An entire Drush/PHP script may be compressed into a Base64 representation using the base64 command line tool with the -i flag. With this alphanumeric representation of a complex script, we can feed it to a remote server using Drush aliases. The following decodes to a simple "Hello World!" script, although a script of any level of complexity could be sent:
drush @prod ev "eval(base64_decode('cHJpbnQgIkhlbGxvIFdvcmxkIVxuIjsK'));"
The entire migration story from Netcat to Drupal has been documented fully by the Salsa Digital team.
Match your dev environment to production
Drupal is a tool with many integrations and extensions -- to utilise remote services or system software, for example. As Salsa Digital found, the govCMS platform utilises the ClamAV service installed on all webservers. By matching the govCMS production environment on their local development environments, complete functionality from a Drupal site and its integrations could be duplicated accurately. The importance of maintaining these dev-to-prod similarities was expressed in the Salsa Digital whitepaper, Dissecting govCMS.
Lock down a content editing platform to maintain compliance
With sites operated by a government, or an organization with strict regulatory oversight, compliance is important and, in almost all circumstances, a requirement.
Drupal allows for content editors to have only the permissions they need. With this we can ensure that content is written in a structured manner within specific guidelines to comply with accessibility or security requirements.
Shorten the time to market by utilising what is already built
The govCMS Drupal distribution is a codebase on which all Australian government websites can be built. By effectively utilising the existing code, and developing further on it, most of the functionality of any site built is already available, lowering the time it takes to go from sprint zero to launch.
A Drupal multisite could be used in a similar manner for other projects. Sharing code between sites reduces the amount of code to maintain, update, and enhance. It also allows any number of independent sites to benefit from the feature enhancements to others.
To facilitate growth, and a more straightforward journey towards strategic objectives, build on an architecturally sound base
In the govCMS story, as in the case of any Web platform, building a solid base allows for easier extensions, and faster completion of long term objectives.
The Salsa Digital team discussed how this structurally-sound base was an important starting point in their first impressions blog.
The take-away from their experience: as in any building, a strong foundation is a good protection against failure.
That's worth remembering, whether you're on govCMS or not.