Jan 06 2019
Jan 06

Unequivocally, 21st century is considered as an innovative era, and there is no doubt to the fact that having a website contributes largely to the innovation. 

Owning a website is like owning a business card, it is an essential segment that shouts “I am a professional, who is open for business”. So, if you have a website, it would typically be the very first interaction for an individual that would create an impression for your potential client. 

When it comes to a law firm website, these potential clients always look for reliability and confidentiality. They need a strong shoulder to lean on, and nothing works better than Drupal. 

An image 6 Law Book palces vertically to each other where a law hammer is placed beside it


If you ask - Why Drupal? 

Well, mainly because a law firm website would always wish for safety against hackers and smooth performance over high load. Drupal creates a solid and reliable impression when it comes to both these sectors. 

Drupal is a Good Option for Your Law Firm Website

According to a survey conducted by “Legal Trend Reports”, nearly 37 percent of the population search for a lawyer online. Which means that for succeeding in an industry it is important to have an attractive, robust and secure website.

And this is how Drupal does the task. 

Builds Togetherness with the Community 

Drupal is a free and open source content management system with an active community constantly creating free elements for the website in the form of modules, themes, and distributions.

The large community grinds Drupal like a valuable gem to absolute perfection by constantly keeping its hand on modern innovations.

The open source platform is supported by an active community of more than 1 million members who are constantly trying to make it more flexible than other platforms in the market. The CMS has been providing immense support to its users by presenting a helping hand in form of creating documentation, sharing networking opportunities, granting them with valuable modules etc.

An image of a crowd in an auditorium where the left side is having a big balloon of Drupal logo


Headless Drupal awarding you with user interaction 

Whether you call it “Decoupled” or “Headless” content management system, using Drupal as your central content service can power up your entire application and device ecosystem.

The mantra of the web development strategy “Write once and publish everywhere” has been grabbing the eyes of several law firm website owners.

The concept of decoupling also implies the managing of different content layers separately, with an agnostic presentation layer. To be precise, it is the communication between backend and the frontend via API.

Rocky mountain victim law center (RMVLC) is a great example of this methodology. The website houses a program which is known as the Legal Information Network of Colorado (LINC). On the basis of a series of questions, this web app provided people with exact legal information and resources. The goal of this program was to empower victims of crime. A better way to make them understand their legal options in the aftermath of victimization. The victims were presented with the advantage to answer a series of questions about the mishap which resulted in a custom list of actionable resources.

Although Drupal gave the power to the application to manage content on the backend. Ember.js (an open source, free JavaScript client-side framework used for developing web applications) was also used in the front end to provide the user with a highly interactive experience.

The Decoupled Approach allowed LINC to leverage the strengths of both - frontend as well as backend 
Image of six people holding arms of each other where LINC is written at the top of the picture and the full form is written at the bottom of the picture

Access your website anywhere 

When we talk about “better user experience” - mobile compatible websites has turned out to be an important factor for marketers, organizations, corporates, and advertisers

This is because according to FindLaw studies, nearly 72 percent of mobile users say that it is important for a website to be fully optimized for mobile use. That means that the website should be accessible to people in any device. 

Drupal is the CMS which provides the users with multiple themes that are mobile responsive and layout centric. The platform has replaced PHP template with all new Twig template in its latest update which not only makes it easy and flexible for the users to use but also provides them with fast, secure, and manageable website. 

Thereby, Drupal's responsive designs have helped websites to respond to each visitor’s needs by adapting its presentation based on the size and capabilities of the device which is being used. 

Image of a phone and a computer placed vertically to each otherThe website of JCWI, which aims to provide justice to all the immigrants, is built on Drupal

Mastering Multiple sites 

Large law firm websites consist of many committees and promoting any desired initiative on the main website for an individual attorney could be a big hassle. Therefore, the only solution to the whole scenario is to have an individual website or a blog that is separate from the main website yet a part of it. 

Therefore, Drupal contributes largely to simplify the management of the websites with the help of the multisite feature. It allows you to serve multiple sites with the help of single codebase. The requirement is only to maintain one copy of Drupal core and, of course, the contributed modules. In other words, it brings about a manageable code across multiple sites and brings agility while launching new sites. 

A great example of the multisite feature is the Legal services corporation which provides legal assistance to low-income citizens. The website is a collection of six other sites with the main agenda of providing easy maintenance to the LCS staff while they update the website. Therefore, Drupal was chosen based on the fact that it powers multisite functionality and consisted of one Drupal installation. Not only this but the site also leveraged multilingual support and was compliant with Section 508 of the US Rehabilitation Act. 

Image of the homepage of Legal Service Corporation website

Decoding Multiple Languages 

As an attorney, it is possible that you might practice in an area where your client speaks different languages. A translator in such a situation becomes an important factor in the whole journey of communication. 

Similar is the case with the audiences that are surfing online. It is necessary to add a multilingual capability to your law firm website due to the fact there is a diverse audience that does not have English as their preferred language. The multilingual feature here not only makes it easy for those users to understand your website content, but it also doubles your chance of being spotted in the Google search result.

Drupal is one of those CMSes that emerges out as a sword for all the website owners with a power of multilingual feature. It grants them with a striking number of over 90 languages that has a built-in translation core.

Apart from translating your content, Drupal also translates all the fields, forms and error messages. The new version of Drupal consists of 4 inbuilt multilingual modules.

Managing Language

This module lets the user pick the choice in which they desire to change the website. It consists of 96 languages in its bar. The language configuration has been streamlined to the user. It assigns languages to everything, from taxonomy terms to administrative language. 

Interface Translation 

It provides the user with a central directory to manage the interface. It has a built-in translation UI for simplifying the content. By allowing the automated downloads and updates, the users easily translate the interface. 

Content Translation 

This module is applicable to all the contents. It allows the user to translate everything, from taxonomy to pages. Like the translation in the interface, the default language of the content can be configured flexibly.

Configuration translation

The things that come with a configuration of the website can be translated with the help of this module. These things include views, blocks, panels, field panels or the text for that matter that can be formatted and be easily translated.

New York County District Attorney’s Office website is built on this multilingual feature of Drupal. The district attorney CY Vance Jr. is the leader in the criminal justice reform who proposed a compelling vision for moving the Manhattan District Attorney's Office with the main agenda of prevention of crime. His objective of the project was to easily reach people with the continuous publication of the content that served as an information portal for the District Attorney.

Drupal was an ideal CMS as it provided with a great platform to build complex websites and was helpful in integrating interactive web services. The key agenda was to reach as many people as possible.

Screenshot of the main page of The New York County District Attorney’s Office website

How Can We Forget Security?

In 2016, Panamanian law firm Mossack Fonseca faced a leak of over 2.6 terabytes of data highlighting the risk around data security and the need of companies to protect their client's information.

This clearly indicates that security plays a crucial role for all law firm websites. Visitors want assurance over their data. They want that it should be secured and private. 

Drupal is the CMS that is well known for its security. It presents its users with careful testing of all modules which is done by the Drupal experts. The password is encrypted and the community reviews the modules on go. With security modules like security review, two-factor authentication, paranoia etc, the vulnerabilities or loopholes that compromises a website, are largely taken care off. Not only this but, Drupal also meets the Open Web Application Security Project (OWASP) standards which are actively screened to prevent continuous future risks. With the selection of Drupal as your platform, your website is continuously reviewed by the Drupal Security Team. The CMS makes sure that the security vulnerability is reported to them.

Module, Themes, and Distribution 

Drupal has special modules, themes, and distributions which are specifically created for the law firms. 

The law firm creates and shares attorney profiles with potential client quite frequently. This might be a time-consuming and might also slow down the entire process as there can be a number of attorneys lined up for your firm. Thus, to improve the performance and save time for the same, Drupal comes with a module known as profile generator that allows you to find profiles quickly.

The law theme is a free professional mobile-friendly theme for the law website. It is a responsive, mobile first theme for Drupal 8. It consists of features like configurable slideshow, 13 block regions, social media integration, clean HTML5, and so on.

The law firm distribution, which is also known as pre-configured Drupal version containing the core of the entire system, is a set of modules, themes, and libraries. They make the site creation easy and swift. 

This is also a fully responsive distribution that features a homepage with a slider, a section for legal industry events, a photo gallery, a section with YouTube videos rendered in a structured way, and much more.

Give full attention to the page load time 

Having a faster page load speed isn’t only increasing your Google ranking, but it is also contributing to customer satisfaction. Faster page navigation means that users may see more page views each time they visit your law firm website.

Conducted on the behalf of Akamai, Forrester Consulting found out that, 47% of the customer expect to wait no longer than 3 seconds for a web page to load.  With the usage of specific modules and methods, Drupal manages to reach marketing goal faster. Modules and methods like:

Caching your pages

Drupal 8 is such an understanding CMS that it enables caching by default for anonymous visitors. The user has the ability to select the maximum limit of the page caching based on how quickly the content of the website changes.

Compress images (CSS and Javascript files)

Google is really fond of fast loading sites. Advanced CSS/JS Aggregation module aggregates and compresses the CSS and Javascript files to make the site run faster.

Content Distribution Network (CDN) 

The role of a CDN is to store websites on a server, and the CDN module in Drupal provides easy CDN integration to all the Drupal sites. It changes the file URLs so that the file is downloaded from a CDN instead of the server.

Google Analytics

Drupal also provides its users with web statistics tracking system called Google Analytics. The module allows the users to add statistics features like single/multi/cross domain tracking, monitoring the links that have to be tracked, monitoring the files that are downloaded, supporting site search, Drupal message tracking etc

Content is the King 

Note that if your website content does not engage the user then it might not be serving the purpose even if your website consists of great web design. Poor content tends to lose the audience. 

Drupal allows its user to edit and customize content without the need of modifying the entire website. With the help of intuitive modules like ctools, field group, paragraphs, entity API etc, the user can build their own content types that have their own set of fields. 

According to content marketing institute, 89% of B2B organizations are using content marketing as their strategy of marketing business. 

A pie chart on the percentage of B2B marketers using content marketing) (Image source: Content Marketing InstituteSource: Content Marketing Institute

And Drupal is the platform which lets you deliver personalized content and contributes vividly as a content manager. 

Drupal would not only contribute to the editing and deleting part of the content but it would also help you to future-proof it. Machines are able to read the content by reviewing the metadata of a website. The metadata structure which is also called as the schemes provide context to the content of a page. Which means that when the search engine views the page they are not only repeating the content but also serve with additional guidance. Drupal 8 uses Schema.org for tagging. Not only this but Drupal has also changed its migration path to provide its user with semi-annual updates which save time, money and a lot of energy 

You just can’t ignore the cost factor 

If you are choosing the best CMS for your law firm website then it should be 100% free and should have the ability where the user can easily install it without the hassle of purchasing any license or recurring fees. 

Drupal comes with the option of choosing from the variety of open source modules that can be used for developing a website adhering to your preference. 

In the Nutshell

It is evident that Drupal has become a very popular platform for lawyers and law firms, especially among related marketing professionals, and for a good reason, this powerful and versatile CMS offers exactly the right tools and visibility potential to both the existing audience as well as to the new ones. 

Opensense Labs has sound experience in building such websites and provide services that help you modify your website. It would be our honor to help you develop a dream site that would not only benefit you in every aspect but would also bring about a planned and systematic architecture for your law firm. 

Ping us on [email protected] Now. 

Jan 05 2019
Jan 05

The Drupal Security Team is using funding from the EU-FOSS to pay for valid security issues found in Drupal 7 and 8 and top contributed modules. This program is open for participation by anyone.

The Drupal Security Team will be authorizing payment anywhere from €350 ($401) – €15.000 ($17,100) per issue. The more serious the issue, the more the Drupal Security Team will authorize for payment.

Who is running this program?

The Drupal Security Team with funds from the EU-FOSSA on the intigriti reporting platform.

What is covered?

Third-party libraries, even those bundled with Drupal core or contributed projects, are excluded from this program.

Can anyone participate?

You may not participate in this program if you fall into one of the following categories:

  • If you are a project maintainer (module, theme, etc), or you contribute a large amount to a project, you may not get paid for the project you maintain. This does not apply to Drupal Core.
  • You cannot report a bug you yourself created or committed. (If you find one, however, do report it via our normal processes (https://www.drupal.org/security-team/report-issue)

To get paid, you must have an account on Drupal.org.
Security Team members that are involved with the administration of this program and/or its funds are not eligible for payouts under the program.
This program is only valid for new issues submitted after 2019-01-29. (Duplicate reports of in-progress issues known to the Security Team may not eligible for payment.)
All issues submitted must be original research. Do not copy and paste results from a scanner without validating them first.

How can I get started?

Install a local copy of Drupal 8 or Drupal 7 from git (https://www.drupal.org/project/drupal/git-instructions). Find security issues such as XSS, SQL Injection, CSRF, Access Bypass etc.
Any submissions about a public Drupal website (including Drupal.org) will result in your account being blocked from any further payments. This bounty program applies to public Drupal open source code only. Not hosted website that run Drupal.

If you find a security issue you should:

  1. Write up the steps to reproduce the issue.
  2. Make sure you have a Drupal.org account created. Include this in your submission.
  3. Go to the intigriti platform and create a new report.
  4. WAIT, do not discuss or post anything anywhere yet. Members of the intigriti team and the Drupal Security Team must validate your report. This can take up to 3 weeks depending on the report and the complexity involved.
  5. If you have a valid report, we will issue payment. You still can not disclose this bug until we publish a release that fixes the bug.
  6. If you do not have a valid report, we will inform you as well.

What must be included in the report?

  • The reporter must provide a detailed explanation of the issue and steps to reproduce the issue.
  • The quality of the report will be taken into account when assigning a value to it.
  • We will also take into account the severity of the security issue.
  • Reporters will also need to confirm that the Drupal Security team will be the group to release the information.
  • Include your Drupal.org username.
  • Issues will be confirmed by the security team before payment is approved.

Do all security issues count?

Your testing should be done on a local environment, testing should NEVER be done on live Drupal sites. Any testing on ANY Drupal site that is not under your control (local or server you own) will automatically be rejected and your account blocked from further payment. We have a page on how to get started installing Drupal locally.

If a task requires the attacker to have advanced permissions as listed on our permission policy page (e.g. 'Access site reports', 'Administer users', 'Translate interface', etc.) will not be eligible for a payout. Other advanced permissions that are not white listed are at the discretion of the security team. Contributed modules (non-core code) must be eligible for a security advisory according to the security advisory policy. A list of projects currently eligible for the program is available.

Security issues excluded from the bounty program

The following are not being considered; while some may be legitimate security issues, they are out of scope for this bounty program.

  • Descriptive error messages (e.g. Stack Traces, application or server errors).
  • HTTP 404 codes/pages or other HTTP non-200 codes/pages.
  • Fingerprinting / banner disclosure on common/public services.
  • Disclosure of known public files or directories (e.g. robots.txt).
  • Clickjacking and issues only exploitable through clickjacking.
  • CSRF on forms that are available to anonymous users (e.g. the contact form).
  • Logout Cross-Site Request Forgery (logout CSRF).
  • Presence of application or web browser ‘autocomplete’ or ‘save password’ functionality.
  • Lack of Secure/HTTP-Only flags on non-sensitive Cookies.
  • Lack of Security Speedbump when leaving the site.
  • User enumeration.
  • Missing HTTP security headers
  • Any Denial of service attack.
  • Other exceptions not listed.
  • We would still like to know about issues in these categories, and you may still get credit for reporting them, but we will not be issuing payments for them.

Other questions?

Questions regarding additional specifics of this program should be emailed to [email protected].

Jan 05 2019
Jan 05

The Drupal Community Working Group is pleased to announce that nominations for the 2019 Aaron Winborn Award are now open. This annual award recognizes an individual who demonstrates personal integrity, kindness, and above-and-beyond commitment to the Drupal community. It will include a scholarship and stipend to attend DrupalCon and recognition in a plenary session at the event.

Nominations are open to not only well-known Drupal contributors, but also people who have made a big impact in their local or regional community. If you know of someone who has made a big difference to any number of people in our community, we want to hear about it. The winner of the award will receive a $1200 USD DrupalCon travel stipend as well as a ticket to DrupalCon. 

This award was created in honor of long-time Drupal contributor Aaron Winborn, whose battle with Amyotrophic lateral sclerosis (ALS) (also referred to as Lou Gehrig's Disease) came to an end on March 24, 2015. Based on a suggestion by Hans Riemenschneider, the Community Working Group, with the support of the Drupal Association, launched the Aaron Winborn Award.

Nominations are open until March 1, 2019. A committee consisting of the Community Working Group members and past award winners will select a winner from the nominations. Current members of the CWG and previous winners are exempt from winning the award.

Previous winners of the award are:

2015: Cathy Theys
2016: Gábor Hojtsy
2017: Nikki Stevens
2018: Kevin Thull

If you know someone amazing who should benefit from this award you can make your nomination here.
 

Jan 04 2019
Jan 04

When I’m recording an event, there are several recurring threads in conversation when chatting with attendees:

  • Thank you for all that you do | You’re welcome!
  • When will the videos be available? | By tomorrow
  • Where can I find the videos? | The camp YouTube channel
  • Have you thought about making money from this? | (hahahaha) Tell me more
  • We should build a site to host all the videos | I know right?!

Thoughts of that last one started way back at DrupalCon Austin, when we were hoping to get camp videos added to the DrupalCon YouTube channel. Since then, it has come up frequently as the momentum has been building. The fact that Drupal.tv now exists and has more than 3,500 videos is still hard to fathom.

Granted, at the time I added content discoverability as a goal to the (unofficial) Drupal Recording Initiative, I already knew that Ashraf Abed (@ashabed) and his Debug Academy (@DebugAcademy) students were working on a site. Pessimist that I am, I had seen prior attempts at a solution stall out, so I was reservedly optimistic. But as Ashraf kept sending me updates, the anticipation grew. At that time it was Drupal.tube, so when he let me know that he would be launching on New Years Day at Drupal.tv, I was blown away.

Prior to launch, Ashraf asked me for a list of playlists that I’ve recorded (which I happened to randomly have because Dwayne McDaniel (@McDwayne) asked me back in November if a list existed, and at the time it hadn’t, so I created it) and also invited me to load some playlists. I figured I’d upload a couple, but by the time I went to add one, they had already been uploaded. I knew that MidCamp’s YouTube also lists other camp channels, so I went there to upload one and test it out. It was so fast and easy that I ended up adding all of DrupalCamp Atlanta’s events (11), NERD Summit (3), and Bristol 2017 (1).

Rachel Lawson (@rachel_norfolk) mentioned on twitter that this should be added as a project on Drupal.org and I really support that idea. This will allow for documentation and credit, but also the issue queue so I’ll have a place to submit feature requests! 

Here are just a few: 

  • Include conference name with video title on lists (some have the name already, but would help with duplicate listings in search results)
  • Add the total number of videos to the header
  • Add the total number of events to the header
  • CTA / landing page / form for event organizers
  • Simpler importing of single videos for events that don’t have playlists

According to this post, the current roadmap includes:

  • Building out event landing pages
  • Tagging talks with topics and speakers
  • Faceted search
  • Video captions
  • Multilingual

If you run a Drupal event, check for your event in the list of curated playlists. If you don’t see yours listed, fill out the contact form to get your videos added. 

Oh right! And from now on, when people ask where they can find the videos, my answer will be Drupal.tv! The community now has an incredible resource. And it’s up to the community to keep that resource strong. 

Jan 04 2019
Jan 04

Happy New Year to everyone! At Agiledrop we’ll remember 2018 as a year of training, mentoring and increasing our A-team. This year was a successful one in itself, but, most importantly, it set us for growth for the upcoming years. Have a look at some of our highlights in 2018.

Agiledrop turned 5 last year

In September, we celebrated the company’s 5th birthday! The history of Agiledrop dates back to our humble beginnings in 2008, when we started out as just a couple of Drupal enthusiasts.

But 2013 was the year that marked the inception of Agiledrop as the company that we know today - and, due to the ever-evolving digital landscape, we are constantly in the process of growing and improving ourselves, expanding the skillsets of our team members and providing top-notch services to our clients.

From 25 to 42 full-time employees

At the very beginning of 2018, we proudly announced that our team grew from 18 to 30 people in the previous year, this number also including contractors. With the opening of a new office in Slovenia’s second largest city, Maribor, and the increase of our team to a whopping 42 members (!), we were able to transition to working solely with full-time employees who work from one of our offices in Ljubljana or Maribor. 

Even though we operate as a remote partner to our clients, we strongly believe that developers working together in the same workspace can provide a better, much more all-inclusive service to our customers. As our motto goes: “When working with one of our developers, you also benefit from the skills of the entire team at Agiledrop.” This is why we shall continue to base our workflow on our developers sharing the same workspace.

26% revenue growth from 2017 to 2018

A huge success in 2018 was growing our revenue by as much as 26%. We managed to acquire clients from different leading countries, dividing our work pretty equally between several minor and major clients. This means we don’t have to depend on only one major client, nor on a singular market to drive our business. Because of this, we were able to achieve stability no matter the market situation.

But growth is not only measured in numbers. Let’s take a look at how our scope has evolved since 2013: we started out as a “digital agency”, then dubbed ourselves “web development agency” in 2014, adding the development of our own product ply.jobs in 2015. It was, then, 2016 that served as the turning point, when we evolved into a “Drupal agency”, only to further specify this in 2017 as “Drupal outsourcing company”. In 2018, it felt like we finally found our calling as “partners to Drupal agencies” - but, the market and the business demand adaptability, so, we’re staying flexible and redefining our focus again. 

Our plans for 2019 are to expand the scope of our services, providing development teams with reliable and proven developers who work alongside their in-house developers as their teammates. 

Drupal courses, internal training and mentoring

In the introduction, we mentioned that 2018 will remain in our hearts as the year of training and mentoring. This comprises the very effective onboarding program for all our newly employed developers, who learn the tricks of the trade through an in-house onboarding project under the supervision of their mentors (if you want to know more about our workflow, you can read about it here). 

But we’ve also dedicated ourselves to helping aspiring coders become fully-fledged Drupal developers - we’re talking about the Drupal courses that we’ve been organizing for the second year now. In 2018, we organized 4 of these courses, one of them being run for the first time in our newly-established Maribor office. And we’re very happy to say that some of the attendants actually went on to join our team as full-time employees!

Giving back to the community

Even though we were busy with all of our ongoing projects and investing into our new employees to help them become Drupal superheroes, we still found the time to contribute to the community. Besides training new developers through our Drupal courses and participating at 6 Drupal events, we also contributed to Drupal core issues with 125 issue credits, ranking on page 1 of the list of several thousand companies contributing to Drupal.

This is only the beginning

We can’t wait to see what 2019 will bring for our company as well as for the Drupal community as a whole. We’re already looking forward to overcoming new challenges and growing as a team. We wish everyone a successful and engaging new year!


 

Jan 04 2019
Jan 04

Websites can be incredibly convenient and time-saving for administrators, and thus efficient for businesses, especially when it comes to websites on Drupal 8! Its latest release, 8.6, has become a true sensation in terms of editorial experiences. In addition to such new features as the oEmbed feature, Media Library, Layout Builder improvements, there is also the Workspaces module in Drupal 8.6, which we want to give an overview of right now. Get ready to read and enjoy! Of course, you can also upgrade to Drupal 8 or update to Drupal 8.6 with the help of our Drupal support team — and enjoy Workspaces and other new modules in action!

The purpose of the Workspaces module in Drupal 8.6

Workspaces is a new experimental module built into the Drupal 8.6 core. It lets website administrators review and edit the content and then publish unlimited amounts of it all at once.

They can switch between so-called environments, or parallel website versions. The built-in environments are “Live” and “Stage,” with “Live” as the default one. Other workspaces can also be created.

Editors can work with as many content pieces as needed while staying on the “Stage” environment. When all the content is reviewed and ready, it can be deployed to “Live” with just one magic button.

It is very convenient to see all the content just the way it will appear to visitors, instead of reviewing the pieces one by one. The staged content is not visible to others until the “Deploy to Live” button brings it to “Live.”

Workspaces vs Workflows: two Drupal 8 core modules to never confuse

Workspaces module in Drupal 8 core is sometimes confused with another one for content reviewing experiences. After all, Workspaces sounds very similar to Workflows — the module introduced in Drupal 8.5. Workflows provides content approval functionality in a duet with the core Content Moderation module.

So how do Workspaces and Workflows differ?

  • Workflows in pair with Content Moderation allows editors to move the content between such states as Draft, Archived, and Published, or custom ones. It provides a piece-by-piece moderation process based on roles.
  • Workspaces, on the contrary, provides bulk moderation processes. All content is reviewed and edited in one environment and then deployed to another. This is especially efficient for content-heavy websites.

Workspaces and Workflows are not only different, but also incompatible at the moment. Only one of them can be enabled in your Drupal 8 core. Otherwise, they may create collisions due to the fact they have the same entities pending approval.

An example of how the Workspaces module in Drupal 8 works

Examples are worth a thousand words, so let’s see Workspaces in action. First of all, we enable the module on the Extend page. The module is experimental, and we will see a warning about it when enabling.

how the Workspaces module in Drupal 8 works

Ok, we immediately notice the green “Live” button in the right hand corner of the site. After we click it, the stylish black Workspaces interface unfolds. It also has the “Manage workspaces” and “Edit” links under “Live.” The “Stage” button is in the left hand corner.

 Managing workspaces in Drupal 8

If we click the “Stage” button, we are offered a chance to activate the Stage workspace, so let’s click “Confirm.” That’s the usual way to switch between the environments. The active environment is always in the right hand corner, we click on it and can call another environment in the left hand corner.

Switching between worspaces in Drupal 8

So we are now on the “Stage” workspace. Let’s create some content that no one else will see. Please keep in mind that you will not be able to do the usual actions while in the environment other than the default one. For example, it will not be possible to create content types, generate dummy content with the Devel module, and so on — you will need to go to the default workspace for that. The default one is defined in workspace.services.yml as a parameter.

However, it is possible to manually create nodes of an existing content type right in the “Stage” environment, which we will do right now. We create 5 articles and edit something in them just for a test.

The Stage workspace in Drupal 8

We can’t see any articles when we visit our site’s main page in the Incognito window, because they are not yet deployed to “Live.” Let’s click “Deploy to Live,” and we will see a summary of the items to be deployed.

Deploying content from Stage to Live in Drupal 8

We click to confirm the deployment, and then we see the “Successful deployment” message. Looks nice!

Drupal 8 workspaces listed

Let’s now switch to check the visibility of our articles in the Incognito window. The articles show up already, which means they have been moved to “Live.” Our experiment with the experimental Workspaces module in Drupal 8.6 has been completed successfully!

Content deployed via Workspaces

Enjoy the new features in Drupal 8.6!

So it’s time to take everything “the great eight” has to offer — the Workspaces module in Drupal 8.6 and many other features.

For any help in upgrading to Drupal 8, updating to its latest minor version 8.6, configuring the new modules, or creating custom ones to precisely meet your needs, contact our Drupal agency!

Jan 04 2019
Jan 04

This time last year, members of the community collaborated on a major update to the DrupalCon Code of Conduct, and it proved to be a success. Indeed, we surveyed attendees after DrupalCon Nashville and asked the following questions:

  1. “On registration, and during the event, were you made aware of the CoC and how to report violations?”
    - 73% answered “yes”
  2. “Did the existence of the CoC make you feel safer, and more empowered to fully participate at this event?”
    - 70% answered “yes”

I also said that we would review the code on an annual basis and it is now time for this year’s review period. I am, therefore, inviting proposals for changes to the code on the community project at https://www.drupal.org/project/drupalcon_coc.

As it will soon be time to commit to printing the program guide and signage for DrupalCon Seattle 2019, we will make a release of the code on the 4th February 2019. Any issues not closed by that point will rollover until DrupalCon Minneapolis 2020.

I’m looking forward to reading your proposals for how we can continue to improve our Code of Conduct!

Jan 04 2019
Jan 04

F. Scott Fitzgerald’s ultra-modernist novel about jazz-age America, The Great Gatsby, has been regarded as one of the best books ever written. It has fascinated the readers by creating a sort of aftermath of wonder. Enter the digital age, there is another ‘Gatsby’ which is getting a wondrous reception and is in the reckoning for being a great tool when it comes to web development.

Cover page of the Great Gatsby book with illustration showing eyes and lips


The emergence of the static site generation, where views are rendered in advance for mitigating the burden on APIs and other backend systems, is proving to be a remarkable solution for great web performance. Gatsby, as a static site generator, can dramatically metamorphose the web performance. It can be a magnificent option in combination with Drupal as the backend for building an enriching single page applications.

No wonder Kyle Mathews, the founder of GatsbyJS, tweeted in 2017:

A tweet from Gatsby founder Kyle Mathews with his photo on top left and his name alongside the photo


GatsbyJS: Explained

Graphical representation with red, blue and green lines depicting usage statistics of Gatsby JSGatsby Usage Statistics | Source: BuiltWith

Currently, GatsbyJS is on the rise when it comes to its usage as can be seen in the graph above. So, what is it? GatsbyJS, an open source static site generator, stitches together the best of ReactJS, Webpack, routing, GraphQL and other front-end tools into one very enjoyable developer experience.

Logo of Gatsby JS with a Capital G written in white inside a violet coloured circle


Gatsby leverages powerful pre-configuration for developing a website. It has out-of-the-box capabilities for spectacularly fast page loads, data prefetching, asset optimisation, code splitting, server-side rendering, service workers, and intelligent image loading.

Features of Gatsby

Flowchart with white and yellow coloured boxes showing the workflow of Gatsby JSSource: Gatsbyjs.org

Following are the reasons that should be considered while choosing Gatsby:

Well-architected plugin system

With Gatsby, content is written as React components and is rendered at build time to the Document Object Model (DOM) as static HTML, CSS and JavaScript files. With a rich data plugin ecosystem, the static content rendered can be sourced from a plethora of sources and formats constituting markdown, CSV (Comma-separated values), and from content management systems (CMS) like Drupal.

Magnificent Scalability

Gatsby can scale to the entire internet as it builds the site as static files that can be deployed with ease on numerous services. It helps in letting go of intricate deploys involving databases and servers, their time-intensive setup costs, maintenance among others.

Performance and Progressive Web Apps out-of-the-box

Gatsby enforces best practices and optimises your site by default. When the build process runs, static HTML files are created for individual pages to offer swift initial load times.

When the page is loaded by the browser, Gatsby boots up React and navigates around your site as if you were navigating through a single page application with near-instant transitions without page reloads.

Gatsby prefetches adjacent/related page content in the background which nullifies any chances of delay when the user clicks on a link. The client-side experience is awesome with JavaScript enabled as there is no loss of content or navigation if the user has JavaScript disabled.

Gatsby can offer offline support as well with the addition of a single plugin thereby making your site into a full-blown progressive web app (PWA).

JAMstack setup

A paradigm shift has been occurring in the web development arena with JAMstack setup taking the centre stage. The amalgamation of client-side JavaScript, reusable APIs, and prebuilt Markup is the future of web development. Gatsby can be a stupendous JavaScript framework for a JAMstack-powered web application.

Merits of Integrating Gatsby and Drupal

Drupal is great for its provision of intricate page layouts or content modelling with numerous sections per page. It is an amazing solution for the teams with multi-stage content creation and assessment processes. Decoupled Drupal is an astounding solution for building enterprise-grade websites and has the deep-rooted support of Drupal Community leaders. 

Leveraging the benefits of Drupal with Gatsby is an amazing approach towards getting an enterprise-level CMS for free in addition to modern development experience and the merits of JAMstack such as security, scalability and performance. One of the great examples of implementation of decoupled Drupal and Gatsby can be seen through the demo site of Umami Food Magazine which is powered by Contenta CMS, headless Drupal distribution, and GatsbyJS.

Incorporating Gatsby in a decoupled Drupal setup enables you to access the impressive content architecture and access workflow capabilities of Drupal 8 in addition to the splendid UI creation and performance toolset of Gatsby. Moreover, both Drupal and Gatsby are open source, have a huge and active community presence and a wonderful ecosystem of add-on modules or plugins. To add to that, the built-in web services of Drupal 8 streamlines the integration process.

Demonstration

An illustration showing a laptop and a rocket taking off with smoke billowing out its rear end


To integrate Gatsby to a new or existing Drupal site, gatsby-source-drupal plugin is added to the Gatsby site. Gatsby-source-drupal plugin is a source plugin that is used to pull data into Gatsby from Drupal sites and it does so with the help of JSON:API module. It is followed by configuration of the plugin with your Drupal credentials and hosted URL. You can, then, access the Drupal data with the help of GraphQL queries.

A digital agency exhibited a demonstration that pulls Drupal content into a Gatsby site. It had a Drupal 8 site already installed and created a content type named Coffee with three fields: Title, Body and Image. Drupal was made into an API server with the installation of JSON:API and JSON:API Extras modules. For accessing the JSON API resource list, anonymous user permission was given.

This was followed by building process of Gatsby site called coffees.gatsby by making sure that the node and npm are installed on the computer. Then, the content was fetched from the Drupal server. For this, a simple page was created to display all the coffee types from the Drupal site.

Then, gatsby_source_drupal plugin was used to read Drupal content from the default endpoint /jsonapi. GraphQL was utilised to query all the coffee nodes from Drupal. Finally, the Gatsby site was published by simply copying or pushing contents in /public to the server.

Conclusion

Gatsby is an incredible static site generator that streamlines the process of creating blazing fast websites. Gatsby extracts data from sources like Drupal and then uses that data for generating static pages at build time. The data sourced from numerous backends can even be merged. This technique helps in extracting the benefits of both static sites like speed, ease of deployment etc. and the content management systems like the easy update process, user-friendly editorial interface etc.

Coming together of Drupal and Gatsby renders incredibly fast static pages and then merges that with traditional React for user authentication and personalisation.

We are committed to the provision of ambitious digital experiences with our expertise in Drupal development.

Contact us at [email protected] to get the most out of Drupal + Gatsby integration.

Jan 03 2019
Jan 03

At Droptica, we designed, made and implemented a new design of an online store for mobile devices for one of the oldest publishers in Poland. We used Drupal 7 Commerce and did some search engine optimisation. The results? Increased sales.

The mobile view of redesigned page.

Publishing house

Three years ago we started cooperating with Wydawnictwo WAM Publishing House, one of the oldest Polish Catholic publishers. In addition to books on religious topics, they also publish scientific and popular science publications, with a total of about 150 titles a year. Their products include prayer books, catechisms, academic dissertations, literature, biographies, young adult books and cookbooks, including the famous recipes of Sister Anastasia.

“The most admirable work of our time” said Pope Pius XI about the "Apostleship of Prayer,” which was the source of the Krakow-based Wydawnictwo WAM Publishing House. It was founded in 1872 by the Jesuits. In practice, this means that WAM celebrated its 145th anniversary in 2017.

What is more, the publishing house received many awards and distinctions, including the Magellan Prize, 2014 Feniks Award and many more.
The publishing house also runs an online store and Deon.pl – social networking and news website.

The start of cooperation

We started our cooperation by building modules to improve purchasing on their website. Some of the notable examples include:

  • a module allowing users to send purchased products as gifts;
  • pick-up point selection;
  • integrating Drupal Commerce with Freshmail, which allowed the publishing house to target newsletters and send information about new products via e-mail.

Mobile version

A mobile view of another subpage.

Our task was to modernise the Drupal Commerce store mentioned above. It was nice and pleasant on the desktop; however mobile devices were another story. The store was designed and created a couple of years ago using Drupal 7 when mobile shopping was mostly unheard of. The times changed. The customer expects to be able to browse the goods, find out more about the products and purchase them using any mobile device.

Since the standards today are totally different than when the store was set up, the graphic design and layout had to be improved in order to make shopping from mobile devices more convenient.

There is no doubt that traffic and purchases from mobile devices are on the rise. At the same time, we should remember that even if the customer prefers to place the actual order using a computer (for example, because they might prefer to enter data using a standard keyboard), they often learn more about the offer and browse goods on a mobile phone or a tablet.

A view of menu for mobile version of the website
We had to act.

We started with the preparation of a new graphic design. Our graphic designer created a design tailored to mobile devices, which not only looks nice but also improves and facilitates interaction with the user.

We decided that not only we would change the layout, but we were also going to choose appropriate fonts, which would be better visible on mobile devices, and change the colours. The desktop look would remain unchanged.
After a few minor changes, the client accepted the new design and our developers started working on it.

A mobile view of the user account subsite.

We started by moving CSS to SASS pre-processor. Variables, mixins and a cleaner structure made working on changes in the graphic design faster and more efficient.

At the same time, our QA department started creating tests in Codeception. One of the main conditions was to leave the desktop layout unchanged, testing in Codeception was supposed to capture the current appearance and inform about possible undesirable changes in the course of later work.

After initial preparations, we started working on the layout change. Our main priority was the purchasing process – the cart page, payment method selection and delivery. Then we changed the product pages, information pages and search results.

A view of the product page for a mobile version of the service.
At the same time, we also developed new tests to make sure that changes in the code do not cause changes in other parts of the store, that would be difficult to notice otherwise.

It turned out that not only changes in SASS/CSS, but also additional JS code were required. For example, the website had a number of carousels with graphics. In order to make sure that they worked properly, we had to additionally change and expand the existing JavaScript code. We have added additional drop-down elements on subpages in smaller resolutions and we completely rebuilt the menu, together with the addition of the so-called sticky menu for mobile devices.

Before each implementation we performed automatic and manual tests, we analysed the entire purchasing process and checked the layout along the way. We checked everything in different environments and browsers. We fixed all the bugs that popped up and made sure that the layout was unified.
Throughout the process, we regularly implemented the results of our work, on average once per week.

Summary of changes

  • Improved layout for mobile devices – it is now clear, it attracts customers and makes it easier to navigate the site and make purchases.
  • Changes in the purchasing process (forms were adapted to the mobile layout) to speed up shopping and facilitate the choice of delivery and payment methods from smartphones and tablets.
  • Fixing bugs on mobile screens.
  • The website was adapted to current standards.
  • Implementing automatic testing, helping us catch bugs and saving developers' time.
  • Reduced session duration coupled with increased revenues for customers using mobile devices. This means that the customers find what they are looking for quicker than before.
  • Increase in purchases made using mobile devices by 200%.

The client was very satisfied with the new layout, but we were most satisfied with the sales growth. After a few months of measurements, it turned out that not only were more purchases made via the desktop version, but purchases made using mobile devices increased twofold in comparison to the same period in the previous year.

SEO

After completing the work on the mobile layout, we focused our efforts on SEO (search engine optimisation and positioning) in order to attract new customers, increase traffic on the website and add new information about products in search results.

We started from connecting the website to Google Search Console, a tool that allowed us to measure traffic on the website, improve performance and catch bugs. Then, we implemented changes based on the SEO audit, which included:

  • improving headlines;
  • adding a notification for editors if the optimal number of characters in the description tag is exceeded – the information in the tag is displayed as hints during searches;
  • adding a sitemap;
  • adding price and product availability to Google search results; 

Additionally, we optimised the size, proportions and quality of graphics on the website.

The size of graphics and page loading speed is important for Google Search optimisation. The faster the page loads, the greater the rank, which in turn increases the probability of ending up on a high position in search results.

Smaller graphics result in faster page loading times. A faster connection enables serving more customers. Fast page loading is also important for customers using smartphones and tablets, especially when their connection is weak and slow. Thanks to that, more people can conveniently browse the pages and shop more frequently.

Results of SEO work

  • Changes resulting in a higher position in search engine results.
  • Increased traffic from search engines (Google and others). Traffic increased by 50%.
  • Indexing all pages belonging to the Wydawnictwo WAM Publishing House bookstore. Google and other search engines now crawl the entire content of the pages, indexing all products and improving the publisher’s competitive edge.
  • Adding tools informing about traffic on the website.
  • The search results include additional information regarding price and availability.
  • Easier work for editors (SEO compliance information) when adding new items.

Summary

Work on the new mobile layout and SEO-related changes resulted in a number of benefits for the Wydawnictwo WAM Publishing House. The most important of these were:

  • A significant increase in website traffic and sales in the months following the implementation of the changes.
  • Increase in desktop sales by 50% compared to the previous year.
  • Increase in purchases made using mobile devices by 200% compared to the previous year.
  • 84% more new users.
  • A new layout that makes it easier for customers using smartphones and tablets to navigate and make purchases.
  • New layout and graphic design for mobile devices.
  • Quicker page loading times.
  • Reduced rejection rate.
  • Full GDPR compliance of the store.
  • Improved (simplified and sped up) purchasing process – from the shopping cart to selection of the delivery method.
  • Making sure that Google and other search engines crawl all content, products and items.
  • Additional product information in Google search results.
  • Easier work for editors working in the bookstore.
  • Compliance with current standards.
  • Introduction of automated tests that will make it easier and faster for developers to later work for the publishing house.

We continue our cooperation with Wydawnictwo WAM Publishing House. We are currently working on improving warehouse processes.

Jan 03 2019
Jan 03

Context

EK application has a module that store personal documents for user. When user account is deleted, those documents may be transferred to another account.

To achieve that, we need to alter the user account cancel form when building the form, validating and submitting it.

Let's review the 3 steps.

BUILD

The form before altering it looks like this

cancel user account before hook

We need to add a field to select another user account to which the document of the canceled account will be moved to.

To achieve that we Implements hook_form_alter() in MyModule.module:

function MyModule_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
    
  if ($form_id == 'user_multiple_cancel_confirm') {
    
    $form['move_uid_documents'] = [
      '#type' => 'textfield',
      '#title' => t('Move uer documents'),
      '#autocomplete_route_name' => 'MyModule.user_autocomplete',
      '#description' => t('Select to whom to transfer personal documents'),
    ];
    $form['#validate'][] = 'MyModule_form_user_delete_validate';
    $form['#submit'][] = 'MyModule_form_user_delete_submit';
    
     return $form;
      
  }
}

What we can notice here is:

  • We alter selected form defined by form ID. In this case : "user_multiple_cancel_confirm";
  • We create the required field by returning $form['move_uid_documents'] ;
  • We add 2 new actions for validation, $form['#validate'][], and submit, $form['#submit'][],  for the next steps.

After altering the form will look like this:

cancel user account after hook

We have a new field to select user. In our case, we also have an autocomplete function that helps selecting existing user. However, we need to ensure that the value entered in the field is really an existing user. This is the part handled by the validation.

 

VALIDATE

The validation is defined in MyModule_form_alter by adding validate callback named MyModule_form_user_delete_validate. Therefore, we need to create the function with thah particular name in MyModule.module.

function MyModule_form_user_delete_validate(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {   if ($form['#form_id'] == 'user_multiple_cancel_confirm') {
        if ($form_state->getValue('move_uid_documents') <> '') {
            
            $query = "SELECT uid FROM {users_field_data} WHERE name = :n";
            $data = db_query($query, [':n' => $form_state->getValue('move_uid_documents')])
                    ->fetchField();
            if ($data) {
                $form_state->setValue('move_uid_documents', $data);
            } else {
                $form_state->setErrorByName('move_uid_documents', t('Unknown user to move documents'));
            }
            
 
        }
    
     return $form;
      
  }

Here the function will check against user_field_data table that the id is valid.

If not an error message will be displayed:

cancel user account validation error

However, if valid, we store the value to be used in the next step which is the submission.

SUBMISSION

As for validation, the submission is defined in MyModule_form_alter by adding validate callback named MyModule_form_user_delete_submit.

function MyModule_form_user_delete_submit(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {
    
  if ($form['#form_id'] == 'user_multiple_cancel_confirm') {
    if($form_state->getValue('move_uid_documents')){
        foreach($form_state->getValue('accounts') as $key => $id) {               \Drupal::database()->update('MyModule_table')
                      ->fields(['uid' => $form_state->getValue('move_uid_documents'), 'folder' => t('Moved from user @u', ['@u' => $id])])
                      ->condition('uid', $id)->execute();
            }
    }
     \Drupal::messenger()->addStatus(t('Documents moved to user @u', ['@u' => $form_state->getValue('move_uid_documents')]));
     return $form;
      
  }
}

In the function above, we pick the id of each user account that is canceled and change to new user id in the document table.

The function also display a message to confirm actions: both cancellation and the submit hook have been executed.

cancel user submit alert

Please feel free to comment or suggest improvements.

Thank you.

Jan 03 2019
Jan 03

Digital transformation is at the helm of every enterprise to keep up with the rapid technological advancements. The New York Times, a leading international news media, leads by example in such changing times. It is not just known for its premium content but also for the astronomical presence both in the print and the digital medium. React has been at the forefront of its digital evolution to make its site faster and easier to use for both the readers and the developers alike.

Home page of The New York Times with a box containing code snippet at the bottom


Large organisations like the New York Times are leaping forward with their inclination towards best-of-breed web technologies like React. Any front-end technology React would require a RESTful service-based backend for storing data and implementing business logic. This is where Drupal makes a big impact with its RESTful services that are built into its core. Before we move onto the exploration of the amazing duo of Drupal and React, let’s explore React.

React: The Incipiency

The first signs of React can be traced back to 2010 as stated by RisingStack. React kicked off as a JavaScript port of XHP which was introduced by Facebook into its PHP stack and was open sourced. XHP majorly accounted for reducing cross-site scripting (XSS) attacks.

React was introduced in 2013 and was made open source.

The biggest obstacle with XHP was that dynamic web applications needed numerous round trips to the server which could not be achieved by XHP. This paved the way for ReactJS. FaxJS was the early prototype of React which came into the limelight in 2011. Ultimately, in 2013, React was introduced and open sourced.

Since then, React has swiftly gone on to become a popular choice (as can be seen in the graph below) because of its declarative style and the dearth of assumptions about your tech stack. Today, React has a large ecosystem comprising of top-of-the-line libraries, conferences and jacked-up demand for developers with React skills.

Graphical representation with red, blue and green lines showing usage statistics of ReactReact Usage Statistics | Source: Builtwith

The World of React

React is a JavaScript library for building user interfaces - reactjs.org
Logo of React with three ovals intersecting each other and the word ReactJS written beside it


ReactJS is a JavaScript library created by a Facebook engineer named Jordan Walke. It is a declarative and a component-based solution for building web applications. It is great for the following reasons:

Provision of declarative views

With its declarative views, your code becomes simpler and foretellable while debugging thereby allowing you to develop interactive UIs and design streamlined views for each state in your application. In case of any alterations in the data, React can let you efficaciously update and render the right components.

Facilitation of writing components

Passing rich data through your app and keeping the state out of the Document Object Model (DOM) is possible as the component logic is written in JavaScript instead of templates. React helps in creating encapsulated components for managing their own state which can, then, be composed for making intricate user interfaces.

Focused and easy-to-learn

Unlike Angular or Vue.js, ReactJS is a library and not a full-featured framework. It emphasises on one thing and doing it properly. It is consistently leveraged in association with other JavaScript libraries. So, there is a shorter learning curve vis-à-vis understanding React in comparison to other comprehensive libraries. It does not assume anything about your existing tech stack which helps in developing new features in React without having to rewrite existing code.

React for mobile app development

React Native is advantageous for its portability and the ability to reuse components, real-time reload and modular architecture, open source and generous ecosystem.

React + Drupal

As an open source content management system, Drupal has witnessed a staggering growth over the years (as can be seen in the graph below). It offers a magnificent suite of tools for data modelling, editorial workflow implementation and the coding custom application logic. It has spectacular support for JSON API or GraphQL web services which makes it a splendid choice as the backend for a React application.

Graphical representation showing red, blue and green lines to depict usage statistics of DrupalDrupal Usage statistics | Source: Builtwith

Whether few of the elements on an existing web page has to be enhanced or a fully decoupled single page application needs to be created, the duo of Drupal and React can do it all. Implementation of Drupal and React together can be performed with a fully decoupled or headless approach; and progressively decoupled approach.

Decoupled or Headless Drupal with React

With the powerful web APIs, Drupal simplifies the creation of headless applications. Several lighthouse applications have been created with Drupal as the backend and powerful demo systems and starter kits like Reservoir and Contenta have burst onto the scene.

In a headless approach, Drupal is leveraged as the backend for a frontend application built in React. Usually, headless applications are utilised for showing content and the editing of content is still done in the backend. But React can also be used for the creation of wonderful editorial experience. With Drupal’s powerful REST APIs, integration of a decoupled editing system can be done. Drupal Europe 2018 had a session that demonstrated how to create an enterprise-level editorial experience for Drupal 8 with the help of React.

[embedded content]


It exhibited a decoupled application with React that can let you edit content directly in the frontend. Leveraging React to the fullest, a modern editorial experience was created with in-place editing, context-sensitive editing, drag-and-drop content placement and creation and a lot more.

Progressively Decoupled Drupal with React

To strike a balance between editorial needs like layout management and developer’s desires, progressively decoupled Drupal allows you to interpolate a JavaScript framework into the Drupal front end.

OpenSense Labs has revamped the website of the Produce Market Guide (PMG), a resource for produce commodity information, fresh trends and data analysis, with help of progressively decoupled Drupal and React among others.

Website of Produce Market Guide showing a search box at the top and the search results below it


ElasticSearch Connector and Search API modules were utilised for the creation of mapping and indexing on Elastic Server. The development of Elastic backend architecture was followed by the building process of faceted search application with React and the integration of the app in Drupal as block or template page.

The project structure for the search was designed and developed in the sandbox with modern tools like Babel and Webpack and third-party libraries like Searchkit, which is a suite of React components that communicate directly with Elasticsearch cluster, turned out to be of great help with its fully customisable solution.

Logstash and Kibana, which are based on Elasticsearch, were integrated on the Elasticserver for collecting, parsing, storing and visualising the data. The app in the Sandbox was developed for the production and all the CSS/JS was incorporated inside the Drupal as a block thereby making it a progressively decoupled feature.

The project, that followed the principles of Agile and Scrum, resulted in a user-friendly website for PMG with a search application. It loaded the search results faster.

Conclusion

Drupal and React together can help enterprises to leap forward in the digital space. Drupal’s RESTful services-based backend and React with its amazing capabilities as the frontend can prove to be a remarkable solution.

We remain steadfast in our goals of fulfilling the digital transformation endeavours of our partners with our suite of services.

Contact us at [email protected] to build a Drupal website using React as the front-end technology.

Jan 03 2019
Jan 03

by David Snopek on January 3, 2019 - 12:34am

As you may or may not know, we've been providing Drupal 6 Long-Term Support (D6LTS) since February 24, 2016, as one of two vendors officially blessed by the Drupal Security Team to do so.

In that time, we have made 99 releases (both Drupal core and contrib) for D6LTS!

Most of those were security releases, but there were also a handful of bug fixes, and most recently, updates to support PHP 7.2. (FYI: As of a couple days ago, PHP 5 has also reached it's End-of-Life (EOL) - do you have a plan to update to PHP 7.1 or 7.2?)

When we were first talking to potential customers about D6LTS, I remember many people doubting that we'd be releasing anything at all!

They'd say something like "Drupal 6 has been around so long, aren't all the security issues shaken out by now?" Almost 100 releases later, and I'd say there was plenty to be done. There still is! :-)

In this article, I'm going to look back on Drupal 6 LTS, and also look forward to what that may mean for Drupal 7 extended support after it reaches its End-of-Life.

Lessons learned from Drupal 6 LTS

We learned many unexpected things from doing Drupal 6 Long-Term support over the last few years, which I suspect will continue to apply to Drupal 7's extended support.

The age/visibility of the code doesn't matter

This should have been obvious by looking at other Open Source projects. Many of the recent vulnerabilities found in OpenSSH (a hugely visible project, used by almost every Linux server on the planet) were introduced many years before anyone noticed (in one case, it took almost 20 years).

So, it doesn't matter that Drupal 6.0 was released almost 11 years ago - odds are, there are still some security vulnerabilities in there.

Looking at the projects we released the security updates for, the most common were also the most widely used, for example:

  • Drupal core: 4 security releases
  • views: 4 security releases
  • xmlsitemap: 2 security releases

These highly popular projects have gotten the most scrutiny, but that hasn't meant there aren't more issues to find.

This is especially true of Drupal core, which is independently audited several times a year by security companies hired by large organizations to evaluate their sites. (BTW, this is a great source of security issues reported to the Drupal Security Team.)

I suspect this will continue to be true for Drupal 6 and Drupal 7: we'll keep finding security issues for years to come.

Many issues affected Drupal 6, 7 & 8

Despite the fact that each major version of Drupal up to this point included breaking changes, and Drupal 8 could almost be considered a "rewrite", many security issues affected Drupal 6, 7 and 8, both in Drupal core and contrib.

In the case of the Highly Critical SA-CORE-2018-002, which came out in the Spring of 2018, all three versions (6, 7 & 8) - and even Drupal 5 - were affected!

The code fixes for each version of Drupal were quite different in some of these cases, but the shared history, and the test-driven of evolution of Drupal 7 into Drupal 8 has meant that many bugs (including security bugs) have been preserved.

Even as we move towards Drupal 9 (which is removing and re-organizing even more legacy code), I suspect we'll continue to see security issues in Drupal 9 or 10 that also affect Drupal 6 or 7.

Keeping up with PHP is going to be a thing

After PHP 5.3, there was a relatively long period where not that many breaking changes were introduced to PHP -- so long as you stayed with PHP 5. But now that PHP 5 has reached its End-of-Life, you can't stay on PHP 5 any longer.

PHP 7 has also entered into a regularly scheduled cycle of releases, and each release is making more aggressive deprecations and breaking changes. Many Drupal projects are just switching to PHP 7 now, but at some point PHP 8 will be released and remove all those deprecated features.

Keeping up with changes to PHP is going to be a thing that we'll have to constantly think about now -- in Drupal development in general, but especially for any Long-Term Support effort, whether that's Drupal 6 or 7.

As we've mentioned previously, we plan to offer commercial support for Drupal 7 after its End-of-Life, that will be very similar to what we've done for D6LTS.

And, as per the lessons above, we also expect that extended support will be essential for anyone who intends to remain on Drupal 7 after its End-of-Life!

The most important difference this time around is that Drupal 7's End-of-Life has been announced years in advance. This a huge change from the Drupal 6 EOL, which was "coming any day now" (along with Drupal 8) for 2-3 years, and then happened suddenly with only 3 extra months of support.

So, you have a lot more time to plan, but also, you have something concrete to plan for: Drupal 9 will be out for a year before Drupal 7's EOL, and intention is for the upgrade from Drupal 8 to 9 to much easier than previous major version upgrades - on par with upgrading from Drupal 8.5 to 8.6 (well... hopefully ;-)).

That said, if you do wish to stay on Drupal 7 for some time after its End-of-Life... I think D6LTS has shown that commercial extended support can work, and what that will probably look like.

Jan 03 2019
Jan 03

As any developer working with Drupal 8 knows, working with Composer has become an integral part of working with Drupal. This can be daunting for those without previous experience working with command line, and can still be a confusing experience for those who do.

This is the third post in an explorative series of blog posts on Drupal and Composer, hopefully clearing up some of the confusion. The four blog posts on this topic will be as follows:

If you have not yet read part 1 and part 2, then before reading through this post, it is probably best to ensure you understand the concepts outlined in the summaries of those articles.

Switching Management of your Drupal site to Composer

So you’ve worked your way through parts one and two of this series, and you now understand what Composer is, how it can be used to work with Drupal 8, and how to start a new Drupal 8 project using Composer. But, you started your current project without using Composer, and want to switch to managing your project using Composer. Where do you start? This article will discusses a few strategies behind converting your existing system to Drupal. Fortunately some automated tools exist for converting existing sites to Composer, and in the situation that neither of these tools work, an overview is provided on how to manually convert an existing site 

But, before moving on to any of these methods...

Take a backup! As this process will be destructive to your system, make sure you take a backup of your file system, and take a backup of your database. Then go and check to ensure that you have a full backup of the file system, and a full back up of the database.

If you skip this step, or do not do it properly, you may end up with an entirely broken system, so don’t skip this step.

Method 1: Composerize (Composer plugin)

Composerize Drupal is a Composer plugin that has been built to convert existing Drupal installations to use Composer. Instructions are on the download page. If this method doesn't work, you can try the Drupal Composerize module:

Method 2: Composerize (Drupal module)

The Composerize module is a Drupal module that is built to convert existing Drupal installations to use Composer. At the time of writing, this module has the following disclaimer on the page:

This module is still in development. It supports very basic Drupal 8 setups, but there are many necessary features it still lacks (e.g., support for patches, JavaScript libraries, distributions, etc). We're working on all that stuff, but this module is definitely not ready for prime time.

If this method doesn't work, you'll likely have to manually convert your site.

Method 3: Manual method

If the above steps fail, your last option is to convert your installation to using the Drupal Composer Template manually. Note that pretty much every system will be different, so these instructions are an overview of the end goal, rather than a complete set of steps that will convert your system. There is a good chance you’ll run into issues along the way that are not covered here, so make sure you took that backup!

Converting a system to the template requires achieving the following goals:

  • Setting up the file structure of the system to match the Drupal Composer Template
  • Delete old Composer files
  • Add the Template file system to your Drupal system
  • Set up the configuration directory and the private files directory
  • Set up your profiles, modules and themes to be managed by Composer

Step 1: Convert your file structure to match the Drupal Composer Template file structure

The Drupal Composer Template is set up to manage the directory above the webroot, as well as the webroot. The webroot is located in the [PROJECT ROOT]/web folder. Therefore you will need this structure:

  • / - Project root. Contains various scaffolding files such as composer.json and composer.lock, as well as the configuration export folder, and the webroot folder
    • /web - The webroot. Contains all Drupal core, profile, module and theme files.

You'll need to set up your Drupal installation to match this structure, and make sure that the server is set up so that the web root is at [PROJECT ROOT]/web.

Note: Some servers require the webroot to be in a directory with a specific name, such as public_html, or www. In this case, you can try setting up symlinks from the required directory name to the /web directory, so that, for example, [PROJECT ROOT]/public_html is a symlink pointing at [PROJECT ROOT]/web. Your Drupal files will then reside in the /web directory (satisfying the Drupal template), and also be accessible at /public_html (satisfying the server requirements). If this does not work, another option would be to edit the composer.json file (which is added in step 3) and change any paths that point at the /web directory, to point at the directory name you are actually using.

Step 2: Delete old Composer files

I'll say it again, because it needs to be said, make sure you took that backup in step 0!

If any of the following files or folders exist in your installation, delete them. Note however that you may want to save the composer.json file for reference if you've manually added any libraries into your existing installation using Composer.

  • [PROJECT ROOT]/vendor directory
  • [PROJECT ROOT]/composer.json file
  • [PROJECT ROOT]/composer.lock file
  • [PROJECT ROOT]/web/vendor directory
  • [PROJECT ROOT]/web/composer.json file
  • [PROJECT ROOT]/web/composer.lock file.

Step 3: Add the Template file system to your Drupal system

Go here, click 'clone or download' and download the .zip file (note - or clone the Git repository if you prefer)

  1. Save/move the zip file into the project root folder (the directory above the 'web' folder you created above). You can then unpack it using the following command. Before this step, the file /composer.json should not exist. After this step, if you've done it correctly, this file will exist.
    tar -zxvf [FILE] --strip-components=1
  2. Run the following command from the project root folder. This command will Install the Composer dependencies as well as create the /vendor directory.
    composer install
  3. Run the following to ensure your database is up to date, and caches are cleared.
    drush updb; drush cr;

Step 4: Set up the configuration directory and the private files directory (Optional)

This next step is optional, however it will make for a more secure system. First, the following directories need to be created if they don't already exist:

  • [PROJECT ROOT]/config/sync
  • [PROJECT_ROOT]/private

The first folder is where exports of the Drupal 8 configuration system will be exported to. The second folder is the private files folder. Creating both of these directories as siblings to the webroot adds security, as the files are not in a web-accessible location. The next thing to do is tell the system of the location of these files. This is done by declaring the folder paths in settings.php. You can do this by adding the following two lines to the bottom of settings.php:

$config_directories['sync'] = '../config/sync';
$settings['file_private_path'] = '../private';

After this, clear the registry (drush cr;). You can confirm that the configuration directory was properly set by running drush cex sync, and then checking that there are .yml files in the [PROJECT ROOT]/config/sync directory. You can confirm that the private files folder was properly set by going to Admin -> Configuration -> Media -> File System, and confirming that the private files directory is listed as ../private.

Step 5: Set up your profiles, modules and themes to be managed by Composer

The final step is to set up Composer to manage Drupal profiles, modules and themes to be managed by Composer. The Drupal Composer Template tracks Core by default, but needs to be informed of the rest of your code. Note that if you do not want to use the most recent version of these profiles/modules/themes, you will need to alter the commands below to set the version you want to install.

Drupal profiles, modules and themes can be installed with the following command:

composer require drupal/[PACKAGE NAME]

For example, if you were using the Administration Toolbar module (admin_toolbar), you would run:

composer require drupal/admin_toolbar

After you have done this, ensure you are up to date with a DB update and cache clear:

drush updb; drush cr;

At this point, your system should be converted to the Drupal Composer Template, with contributed code being managed by Composer.

Summary

This article looks at converting exiting Drupal 8 sites to being managed by the Drupal Composer Template. Doing this can potentially be automated using the Composerize Composer plugin or the Composerize Drupal module. In situations where this does not work, the manual directions in this article can be used as an alternative.

In the next and final part of this series, we'll look at how Drupal developers can integrate 3rd party libraries into their custom Drupal profiles, modules and themes.

Jan 02 2019
Jan 02

The Drupal we all know and love is evolving. The learning curve is shifting, the development paradigm is different, and the community, not only the software, is more ambitious. We felt it was time to build Drupal.tv as a thank you to the wider community. Drupal.tv is live as of January 1st, 2019!

Kevin Thull

From the community spotlight on Drupal.org: “He's the fellow that is dashing from room to room before the first session begins to set up the AV equipment and checking in with presenters making sure they all "push the red button". Because of him, we are all able attend the sessions we miss while busy elsewhere. He is personally responsible for recording over 800 sessions and donating countless hours of his time.”

Hear his thoughts on the unofficial Drupal recording initiative ( https://www.drupal.org/association/blog/introducing-the-unofficial-drupal-recording-initiative ).

Thank you, Kevin!

A Tweet to start it all

In Oct 2018, Rachel Lawson (@rachel_norfolk) tweeted: “It strikes me that creating a “DrupalTV” site, collating all YouTube session videos, would be possible in Drupal core these days. Tagging, searching, the lot. Could be a fun project? I’m sure one of our hosting providers would help…”

As fate would have it, Ashraf Abed (@ashabed) of Debug Academy was looking for the upcoming semester’s class project and came across the tweet. Debug Academy always does a real, new project in class as it’s the best way to learn programming and to build credibility.

Yes, newbie Drupalers built this site.

Drupal’s learning curve is shifting. The focus of many ongoing core initiatives is improving developer experience, and not only for senior programmers.

This project was built (& continues to be built) by a team of new Drupal developers, led by one Acquia “Grand Master” certified Architect (Ashraf Abed, Debug Academy’s CEO).

The backgrounds of the team include (but are not limited to):

  • 4 experienced backend developers with 0 Drupal experience
  • 1 experienced front end developer with 0 Drupal experience
  • 2 self-taught web developers with 0 Drupal experience
    1. Former career: Library and Information Science
    2. Former career: Teacher (PHD in history!)
  • 2 self-taught with light site building experience in earlier versions of Drupal
  • 1 Drupal Grand Master / Architect (Ashraf)

To illuminate this a bit more: Ashraf was not allowed to contribute any code on the project during the semester, which ended on December 22nd, 2018 (1 week before this site’s launch). That is to ensure that the new developers gain proper experience building the project. So the majority of this project truly was built by non-Drupal developers. We’ll share more about those developers in an upcoming article, with their permission.

And if you’re thinking “the experienced backend developers did most of the work”, that simply is not the case. The majority of the work on the project was contributed by the rest of the group.

Furthermore, as is the naturally occurring case with most Debug Academy semesters, the development team was highly diverse. Over 70% of the team members come from backgrounds that tend to be minorities in our field, and we were lucky to benefit from their ideas and expertise. 

What’s now and what’s next?

Video Coverage

Kevin Thull provided us with a list of DrupalCamp videos, of which we’ve imported 100%. Thanks to Wendy Abed, Kevin, and Ashraf for importing the DrupalCamp and DrupalCon videos. We’re at over 3,500 videos!

In the near future, we will also add free Drupal training videos created by various providers. All videos on this website will always be free.

Conferences

You may have noticed some videos are tagged with conferences. In fact, all videos are tagged with conferences, but you can only see the published ones.

We ask DrupalCamp organizers to reach out so that they can populate their own conference pages. Debug Academy’s next cohort will built out the conference (meetups, Drupal Camps, Drupal Cons) functionality on the website to make conferences (past & future) easy to find.

Searching / Sorting / Filtering

The site’s search is powered by the Search API module(s). The plain text search actually works quite well - search for a conference name, a topic, etc, and you will find all videos from that conference/topic.

As part of next semester’s project, we will be tagging talks with topics and speakers, which will enable us to use faceted search on the website.

Wider accessibility

We want this site to be globally useful. We plan to import video captions as well as and enable the multilingual features available in Drupal core. And if you are recording Drupal conferences in your country, reach out to us with your youtube playlist!

Submitting videos

Video submissions are open to the public! Approved content administrators will have the ability to import entire playlists from youtube, but anyone can import an individual video! Anonymously submitted videos will be created as “Drafts”, and our team of alumni and approved moderators will approve appropriate videos (thanks, Drupal core content moderation!)

Ongoing maintenance

Debug Academy students and alumni will continue to build and maintain the website as a non-profit project for the Drupal community. We will periodically share articles about what new Drupal developers were able to build using the website.

After next semester’s project, we may reach a point where smaller Drupal Camp events do not need to create/maintain their own website. Instead, they could simply create a conference page on Drupal.tv and use their time on higher value initiatives, like running a great conference, as usual! :)

How can you help?

At the moment, we have plenty of development capacity for the project, and we would like this project to continue to enable graduates of Debug Academy to land their first full time jobs as Drupal developers. You can help by spreading the word!

Follow us on twitter @drupaldottv, sign up for our newsletter (in the footer) to hear about new videos and articles, and simply share this website to the wider Drupal community! 

Also, follow a few of the team members who helped create or populate the site: @kevinjthull, @ashabed, @jackg102@cotterpinx, and @DebugAcademy for sponsoring the project.

We'll be reaching out to our alumni to do a separate piece on them with their inputs and permission. We launched on New years, but it turns out that's an inconvenient time for many contributors. Who would've known?!

And I’d like to give a special shout out to the founder of Drupal, Dries Buytaert, for allowing us to use the domain drupal.tv for this project!

Happy new year, everyone!

Jan 02 2019
Jan 02

Your browser does not support the audio element. TEN7-Podcast-Ep-050-Dries-Buytaert.mp3

In this, our 50th episode, Ivan is joined by Dries Buytaert, the founder of Drupal, an open source software developer, a startup founder, technology executive, father, world traveler and photographer. Subscribe to the podcast.

Here's what we're discussing in this episode:

  • Dries' life and career
  • The creation and emergence of Drupal
  • Growing up in Antwerp
  • Living in Boston
  • Shared love for tennis
  • Yet another flying start with the Commodore 64
  • The power of copy/paste
  • Writing code for his father's medical practice
  • Wonka VM, Linux and Java
  • Juggling multiple careers particularly fatherhood
  • DrupalCons
  • The MTV saga
  • TEN7's decision to go Drupal
  • The move from Belgium to Boston
  • Circumventing the globe
  • Benevolent Dictators for Life
  • Creating thousands of roles out of one
  • Drupal's Values and Principles
  • Drupal as a force for good in the world
  • Drupal's future and Dries' role moving ahead

TRANSCRIPT

IVAN STEGIC: Hey everyone, you're listening to the TEN7 Podcast, where we get together every fortnight, and sometimes more often, to talk about technology, business and the humans in it. I'm your host Ivan Stegic. Well, we've hit 50 episodes. When we started this podcast in April of 2017, we did so by limiting it to only five minutes a time and by calling it an audiocast. And we did that because we wanted to experiment with some marketing that we really weren't familiar with and that we hadn't tried before. And I, of course, thought the best way to do this is to try something short and sweet, that's a quick blast of audio. Because who has time to listen to more than that? Well that didn't last terribly long before we realized that five minutes simply wasn't enough time to tell a story, or to get into the meat of an idea. I guess that's obvious now, in retrospect of course. So I'm glad that this podcast has evolved into what it is today, a hopefully interesting discussion with people that are somehow involved in technology or in business. And what better way to celebrate a milestone like 50 episodes for a Drupal company's podcast then by talking to the founder of Drupal himself. Dries Buytaert has a PhD in computer science and engineering and founded the Drupal project while at university. He's an open source software developer, a startup founder and currently serves as a technology executive, all in addition to being the Benevolent Dictator for Life of the Drupal project. He's a father, a traveler and a hobbyist photographer. He's won numerous awards like Entrepreneur of the Year and Fastest Growing Tech Company for Acquia. I'm honored to welcome to the TEN7 Podcast, Doctor Dries Buytaert, the creator of Drupal. Welcome Dries.

DRIES BUYTAERT: Well thank you. Thanks for having me and congratulations with 50 episodes, that's an exciting milestone.

IVAN: Yes, it is. Thank you. Thank you for the congratulations. You know, 10 years ago I didn't think we'd be here doing a podcast for a Drupal company, and 11 years ago I didn't even consider that I was starting a company that was based on Drupal.

DRIES: Well, neither did I, 18 years ago. (laughing) Makes two of us.

IVAN: (laughing) Right. Well congratulations, I guess, for starting Drupal. Do you know when the anniversary of that is?

DRIES: Starting Drupal, it's a little bit blurry, but I do know that we released, or that I released because I was alone at the time, Drupal 1.0.0, was on January 15th of, I think it was 2001. So, it’s almost 18 years ago.

IVAN: Oh, wow. Yes, that is almost 18 years ago, but that was the first release.

DRIES: That was the first release, yea.

IVAN: You were likely working on that even before that, from 2000, so that’s a long time. Well, congratulations on that. That's coming up very soon here.

DRIES: It is, yea.

IVAN: So, Dries is a contraction of the name Andries which is Andrew in English. Is Andries actually your given name, or is it Dries?

DRIES: It's Dries, yeah, which is effectively as you said, Drew in English. I don't know if people know that, but yeah, Dries is my given name. I don't have any middle names, so it's just you know Dries Buytaert.

IVAN: Dries Buytaert.

DRIES: That's it. Yeah.

IVAN: That's great. I don't have a middle name either, so, I just recently had a shirt monogrammed and it says IS on it. (laughing) So, you I guess, would be database, right?

DRIES: That's right. Yeah. (laughing)

IVAN: (laughing) So, you were born in Antwerp in Belgium in the late seventies. Do you have a favorite thing you remember doing as a child?

DRIES: I’m not sure I have one favorite thing, but I did a lot of different interests. Like, when I was young, I loved Legos, when I was older, I really got into building remote controlled airplanes, actually for some time. And then I got into writing software when I was about 10 or 11 years old. And then later in high school, I loved playing tennis. I think I almost played tennis every day in the summer. There's sort of ebbs and flows in my interest, and I think that's still true today, I have a wide variety of different interests.

IVAN: I can identify with all of those. Are you still playing tennis?

DRIES: I am.

IVAN: You live in Boston, right?

DRIES: I do live in Boston now and I still try to play tennis. I'm probably playing two or three times a month. If I could I would play multiple times a week. But between a lot of travel, I'm on the road quite a bit, it's kind of hard. Tennis is not a very portable sport, because you need to bring gear, and you need somebody to play with, and you often need to be a member of a club too. So, it's not something I can do when I travel. So, I don't get to play as much as I'd like to, but I still try to, as I said, play two or three times a month.

IVAN: Do you know how you're rated. Are you a 4.0 player, or a 5, or a 3.5?

DRIES: I'm a decent player, but again, because of the travel I can’t really play competitively. I have a tennis coach that I play with, and that works well for me, because I only play three times a month, and it can really kind of give me a good workout every time I play. So for me it's more about the workout, and I love the game of tennis too, but I don’t know my rating.

IVAN: I ask because I absolutely love playing tennis, as well, but I can't stand the competitive games and playing sets of tennis. So, I do it as a workout as well. And they usually have groups of players that are similarly rated, and so that's why I was curious. You're a tall guy, so you must love to serve and volley.

DRIES: That's right. Pretty good serve.

IVAN: So, you mentioned you loved Legos and remote-control planes. Do you remember your first computing experience as a kid?

DRIES: Yeah. My dad had a Commodore 64, and one evening or day he bought me a couple of computer books, and these were computer books for kids. So programming for kids and had little code snippets, which you had to enter sort of in the computer and they would execute and be a game. And one of the games was like Snail Race or something and you had to basically pick a number between one and five, and randomly they would move like a character across the screen. And so they would randomly pick a character, and that one would move up a position, but if the character reached the other end of the screen that one would win. It was little stuff like that, it was probably like 20 lines of code. I remember as a kid entering 20 lines of basic code, and it was a lot of fun. You start by literally copy/pasting these things, so to speak, and then over time you dabbled around a little bit and started to try some things on your own. And then I remember in, I’m going to say it was 1994, or something, so my Dad is a doctor, and at the time, a lot of patient information and stuff was managed on paper and he came to me and said, “how do you feel about spending some of your summer vacation trying to digitize some of this paperwork and build me a database, effectively for his patients?" I said yes. He gave me some other computer books using Dbase as a database and using, I think it was Clipper, as a programming language. And I remember spending my entire summer building this patient management system for him. And it was hard for me because, one, I didn't have any training in computer programming, and English wasn't something that I was very good at. It was not even my second language. So, I remember sitting there with a dictionary trying to translate the manual effectively, of the Clipper programming language and trying to make sense of it all. I remember reading things like array, and I had no idea what arrays were. I spent my whole summer trying to figure it out. But I got it to work, which was a major milestone for me, and I would say probably what got me hooked on computer science.

IVAN: And did your dad's practice use the software then, and did it evolve? What happened to that?

DRIES: He used some of it, and then eventually he bought something off the shelf. So, I guess it wasn't a huge success from that point of view, like it literally transformed his business, but he used some of it for a while. The part that he used was like a graphing tool, like you would measure…he’s a gynecologist and an oncologist, so he would measure basically, the baby in the belly, and he would enter the measurements in the software and then the software would plot it on a graph. And this was something that he would have to do manually. He had these sheets of paper and then he would plot the measurements on the graph and then he could tell whether the baby was growing well or not. So, that was very manual and tedious. And so that part he used the graphing portion that I built.

IVAN: And, do you think back to that copy/paste as you described it, which is really reading code from a manual and typing it into your program on that Commodore 64. Do you consider that kind of the beginning of open source software? Because that was actually code that was published for anyone to use and to modify effectively.

DRIES: Yeah that's a good point. I never thought about it, but that’s a form of open source I would say. I don't know if it came with a formal open source license. (laughing) But, yeah, there’s a lot of power in books and enabling people to learn through sharing code. Even when I got into web development, copy/paste was a powerful tool. You would browse around websites, and then you saw something that you liked, you could from within the browser, you could do a view source, and you could learn about how that website was built, and you could reuse some of that code if you wanted to, or kind of use it as a starting point to write your own. I think a lot of web development still happens that way. Maybe not most of it, but at least some of it.

IVAN: And, I think a lot of people who are learning are doing that, and it's less view source now than it is inspect element and using the wonderful tools that these browsers have now. So, that's made it easier for us, I think.

DRIES: Yeah, it would be a shame if we lost that, I would say.

IVAN: I agree. I absolutely agree. So, you were raised in Antwerp, and you got a master's degree in computer science from the University in Antwerp. And, after you graduated from that degree, you worked on something called Wonka VM for a company called Acunia, which sounds an awful lot like Acquia. (laughing)

DRIES: Yeah, that was my first real job, so to speak, as an as a software engineer out of college.

IVAN: And it was Java centric. Correct?

DRIES: Java centric. So the company was a Telematics company. We built hardware and software that would be installed in cars, and that would effectively provide navigation software or other kinds of software capabilities. And I did a couple of things. I helped build a real time operating system, first from scratch actually, and later ported Linux to this hardware platform that we designed. And then once we got the operating system running we decided to build our own Java virtual machine, because the one that Sun had built wouldn't run effectively on embedded software, on a little hardware platform. So, we had to build our own virtual machine, and I was part of the virtual machine group. It was a small group, I think we were four or five people. And so, it was Java, but I was actually writing C code, because the operating system and the kernel and then also our Java virtual machine implementation were all written in C, because we needed to have that raw speed, because we had a very lightweight embedded hardware device effectively. But we did make that virtual machine open source.

IVAN: How did your philosophy and your ideas about open source influence that license that you used to release Wonka VM on? Because, according to my research, you basically started Drupal right around the time that you kind of ended your work at the University of Antwerp for your master's degree. So, there must have been some influence there or some perspective that influenced the Wonka VM.

DRIES: Yeah, so, I was an engineer on the Wonka VM team. I wasn't the team lead, but, I started contributing to the Linux kernel, and I helped a little bit with wireless network drivers of Linux and ended up being a maintainer of the documentation and stuff like that. And so, I got really into Linux. Then I started the Drupal project, and because I kind of came from the Linux world, it just was very natural for me to make Drupal open source. In fact, I literally copied another example of copy/paste I guess, I literally copied the GPL license file from my Linux kernel tree into my website, created a zip file or a tarball and uploaded that and called it Drupal. So, that's why Drupal is GPL, because I was using Linux and contributing to Linux a little bit. And, so then I went to work for the startup, building or helping to build a Wonka VM, and there was kind of inbound interest, I would say, from other companies to also use an embedded Java virtual machine. So, open source at the time was sort of a hot topic but also very premature in other ways. But, for me, it was a natural thing to help make the Wonka VM open source. I forgot what license we picked for it, but yeah, it became open source.

IVAN: I think I read about those yesterday when I was prepping. I think it was a license that was pseudo BSD. No, I'm confusing that with the release of the open JBK implementation. Sorry about that.

DRIES: No worries. I don't recall picking the license, I think that was the CTO of the company, who was in charge of that. But I was just excited to be part of another open source team. So, open source has been a constant in my professional career. All the way from college until today.

IVAN: Do you think you still have any of your code that you wrote for the WLAN drivers or the WLAN project in the kernel?

DRIES: No, no. I don't think so. No I haven't looked, but I didn't write that much to be clear. It was small contributions on the edges, and then I did end up being the official maintainer of the documentation for a while.

IVAN: Follow up question, just since we're on the topic of old code. Is any of your code still in Drupal 8 from the very first release? Or has that all disappeared?

DRIES: That’s a great question. Probably all disappeared. From the original release?

IVAN: Yeah, from the original, it would be interesting to see that.

DRIES: I would say a lot of the concepts have survived. Not all of them were in the initial release but, like we shipped Drupal 1 with RSS feeds, which at the time was groundbreaking so to speak. These things are still in Drupal, and then the hook system and the node system, and there is a lot of things that have survived the many major Drupal releases, but I don't know if any code has survived from the original Drupal 1.

IVAN: That would be interesting to know. So, you spend a few years working as a Java engineer, essentially, right? And, you decide to go and get your PhD, and you spend about five years doing that. And your work for your doctorate is focused on Java, and you're working with the inventor of Java. And at the same time you're working on Drupal and basically Drupal is in its infancy, and then maybe in its angry teen years as well. How do you juggle doing these two things that, I'm sure, are taking up so much of your time?

DRIES: Yeah, I mean I think I've always worked hard. During the day I would work on my PhD, and that was pretty intense. And then at night and on the weekends, I would work on Drupal. So I would use every spare minute of my time really to work on Drupal. I mean, it was exciting for me, and it still as exciting, it’s still very passionate and I'm very passionate about Drupal. It was definitely an interesting time because, as I was doing my PhD, Drupal also started to slowly take off. We had multiple tipping points like Howard Dean started using Drupal, and first Drupal companies were being started. And we decided to start organizing DrupalCon events, and all of that was intense. I mean I remember we would do DrupalCon and I needed to travel for them, but as a PhD student I was being paid by the University, or I guess by the government technically, but I was making like $1500 a month. In the context of Belgium at the time wasn't a whole lot of money, $1500. But like we would be like, “hey, let's do a Drupal conference in San Francisco in Sunnyvale” and I'm like, “sure, let's do that.” But the ticket alone was basically my entire salary for the month. I remember people started telling me you should really get a trademark on the name Drupal. I went to a lawyer and said, “what does it take to get the word Drupal trademarked? And, I think they came back and said, “something like $10,000.” I was like, “whoa, I don’t have $10,000.” So, I decided to do it myself. So, I spent a couple nights or maybe a couple weeks researching how you file a trademark application and how you file it in multiple countries too. So, I still had to pay filing fees, and I ended up paying $3,000 or euros or something just to get the trademarks. But again, $3,000 was two months of my salary. So, I remember by the time I finished my PhD, I had like 400 EUR in my bank account, and I spent it all on Drupal. And so, not only did I spend all of my free time, I also spent a lot of my savings, the savings that I got from Acunia, the startup that we talked about. So I was very passionate about that. I was very busy, periods. I was working easily 12-hour days and also weekends.

IVAN: You mentioned Howard Dean as being maybe one of the tipping points for Drupal. When did you realize that this thing that you made wasn't a pet project anymore? That it was affecting people's lives and that there were some legs to this thing?

DRIES: Yeah, it happened kind of in phases, to be honest. But I remember when I was doing my PhD, I'll give you one concrete example, but MTV had decided to switch to Drupal, and I remembered their sites came down crashing, and I took that very personal. For me, it was very important that these organizations, like MTV which was a very big deal to me, especially at the time. I mean it's hard to believe even like at the time like MTV is using Drupal like my little hobby project, that I would volunteer to spend time with them on the phone at night. And so I would come home from work, from my PhD research, and I would spend my spare time, free of charge, on the phone with MTV trying to troubleshoot their performance and scalability issues. That was important because I wanted them to be successful, because I knew if they were successful, it would be incredible references for others. But at times like that, it's when I realize you know this is for real. These are real companies using Drupal in real ways, and we need to make sure that these kinds of organizations are going to succeed. It's also really when, sort of, the first seeds were planted for Acquia, because I was convinced at the time that for Drupal to succeed, it needed to succeed with these larger organizations that would be incredible brands and references for us. And so, I also realized this is not something I can do in my spare time at night, like there needs to be a company that helps these organizations be successful.

IVAN: You co-founded Acquia correct?

DRIES: Yeah.

IVAN: And that was in about 2007, I think?

DRIES: Yeah, that's right.

IVAN: And when did you complete your PhD? Was that about the same time?

DRIES: Technically I completed my PhD in 2008. So I started Acquia while I was still finishing my PhD. So I’d done all of the research at the time, or almost all of the research, but I still needed to write my dissertation, like your between quotes book (laughing), that summarizes the results of your research. That was a very crazy time because we were working on a major release of Drupal, I was finishing my PhD which was a lot of work, I also decided to co-found Acquia. And our oldest son was born at the time as well. So, I was like juggling a lot of things (laughing). I officially incorporated Acquia in the summer of 2007. So about 8 months before finishing my PhD, I would say. So, that's when we incorporated Acquia, so the idea must have been born several months before. So, I guess Acquia was kind of born about a year before finishing my PhD.

IVAN: That was around the same time that I started TEN7 and was deciding which CMS I was going to hitch my company to. And if I remember correctly, that was around the time that Drupal 4.7 was stable, and I think 5 was going to be coming out very soon.

DRIES: I believe that's right.

IVAN: That's what I can remember. I didn’t look that up yet.

DRIES: I think you're right. Yes.

IVAN: So, at what point did you decide you were going to call the United States your home? Because, you started Acquia, but you decided to make Boston your home just after that, right? I didn't think you were here yet?

DRIES: Right. So, because I was still finishing my PhD I had to be at the university, and then as I mentioned my oldest son was born, and so it wasn't a good time to move. But I decided to cofound Acquia in Boston for a couple of reasons. One, the person that I met, Jay Batson, as well as our first investor, Michael Scott, from at the time North Bridge Venture Partners, I think was their official name. They were both based in Boston, and the vision for Acquia at the time was to be to Drupal what Red Hat was to Linux. We would provide enterprise grade support, SLA based support and a couple of products and services around that. So, as we've established, Drupal predated Acquia by seven years. So Drupal already existed. The original idea of sort of being the Red Hat for Drupal, is a very support intensive business model, a lot of human touch, if you will, and you kind of want to put the company close to where the largest customers are, because you need to interact with them, you need to be on the phone with them, all of these things. So, it made a lot of sense for me to put the company in the US broadly. And then because I met Jay and Michael, my co-founder and our first investor, given that they were based in Boston, that was a very logical choice obviously. Boston is a great city, because obviously there is a lot of venture capital there, a lot of access to money for starting companies. It's the second largest technology city in the United States after San Francisco. There's also great access to talent with universities like MIT and Harvard, and so it wasn't too far from Belgium. It was only a six-hour time zone difference, and I think about a six-hour flight. And so, Boston was a great place, and it allowed me to stay in Belgium for the time being, while we were trying to get Acquia going. And I was a young dad, I guess, finishing my PhD, and then, I did a lot of, sort of, one week in Belgium, one week in Boston, one week in Belgium, kind of back and forth kind of travel. And then eventually a couple years later kind of moved permanently.

IVAN: And now you call Boston your home?

DRIES: Yeah, exactly. It's officially my home and it feels like my home. I still spend a good amount of time in Europe, but, yeah, I love being in Boston, it's a great place.

IVAN: I read somewhere, I think it might have been on your website, that you travel about a quarter of a million kilometers every year. That’s a lot of travel.

DRIES: It's a lot of travel, yeah. I don't know. Yes, that's a lot of travel, it's like what, eight times around the world or something a year?

IVAN: Something like that. So you must get a lot of miles and a lot of rewards on a credit card?

DRIES: I get a lot of miles but not a lot of rewards, actually. I think people overrate these programs and they also romanticize what that amount of travel looks like.

IVAN: It’s tough.

DRIES: It’s very tough. It’s in and out. I don’t get to sightsee. I travel economy class, and I still do. I also get a lot of energy from meeting Drupal users and Acquia customers. It’s tough, but for me, also fun.

IVAN: Well, you'll be visiting Minneapolis in 2020 with DrupalCon here. (laughing) So, I hope you get a chance to sightsee here.

DRIES: You know, DrupalCons, I usually do, because I'm usually there for a whole week, so that allows me to explore a little bit more of the city. But sometimes my travel, I'll fly to the west coast which is about a 7-hour flight, I'll be there for an afternoon and fly back that night.

IVAN: That’s tough.

DRIES: Yeah. But DrupalCons are nice because it's a whole week and there's a lot of social activities at night. It's fun.

IVAN: It is fun. It really is. So, you're one of the 30 or so Benevolent Dictators for Life. Linus Torvalds for Linux is one of them. Mark Shuttleworth for Unbutu, DHH for Ruby on Rails, and you’re effectively the final say, right? In any dispute or argument you’re basically the dad of the Drupal project. (laughing)

DRIES: Yeah. So I guess, yeah.

IVAN: So to me, it’s almost incongruent, or at least it causes some sort of cognitive dissonance in my brain, when there’s a BDFL for a project that is effectively designed to be collaborative and transparent and open. And I read some opinions online about why open source projects end up having this kind of dictatorship. And I don't like the word dictatorship, these are other people's words, but it's kind of the descriptor. How do you see your responsibility for this beautiful thing you've created evolving?

DRIES: Yeah. First of all, I don't love the term BDFL either. It’s a title that's been given to me, not something that I kind of picked myself, just to be clear.

IVAN: Exactly. Of course.

DRIES: I think my role has evolved a lot over time. I mean, in the early days I would write 100% of the code, and I would spend a lot of my time building Drupal.org. I would help run the servers behind Drupal.org. I would organize the DrupalCon events or help organize them, like intensively. And over time I’ve scaled more and more. Drupal Association would be one example of that, as a step in evolving my role, which put in place an entity, a non-profit entity specifically, that could take over the organization of DrupalCon which now is, it's a serious event. It costs a few million dollars to put on and takes a whole team of people to organize. Same thing with managing our website and the underlying hardware infrastructure. It's now being managed professionally by people at the Drupal Association and again, also with the help of people in the community, just like DrupalCon. But these are examples of how I've scaled my role. Obviously on the technical side, I went from being the, sort of single core committer, to now having teams of core committers for each of the major releases, having committees and task forces around different aspects of the project, like a technical working group that defines coding standards. We have release managers and product managers and framework managers, all these kinds of roles to subsystem maintainers that are responsible for different aspects of Drupal core. And so, these are all examples of me scaling my role over time, and we continue to make governance changes all the time and to scale the project as needed. I think that’s the right thing to do. As projects or organizations get bigger, you need to put the kind of organizational structure in place. You also need to scale the culture of the project and so, I try to help with that through my keynotes. Actually, last year this time, I helped write Drupal’s Values and Principles document, that's a way to help scale our culture. So, it takes a lot of effort and different people to maintain and run the Drupal project today.

IVAN: It sure does. Do you spend time thinking about the kind of the ethical implications of the technology that you've created and that you've helped create?

DRIES: What do you mean by that? You have an example?

IVAN: I guess anything can be used for good or bad things, right? And so, there's some sort of ethical implications there. And this little project you created in, I would assume a dorm room, but somewhere in a university somewhere when you released it, it's had a profound effect on the world. I mean, as you’ve written yourself, 2% of the world's websites use Drupal. And I wonder about how you think about not just the positive, but the negative effects that the software has. And how does that affect you?

DRIES: I think Drupal is primarily used for good, right. There are tens of thousands of nonprofits using Drupal to accelerate their mission, whatever their mission is. There's a lot of governments using Drupal, which technically they're doing for good. Drupal has done a lot of good things. Obviously, there is also less good, sort of, implementations of Drupal. I guess it's hard to control. But I take pride in that we have actually made a lot of people's lives better with Drupal. I believe that drastically outweighs some of the negative impact that Drupal has had, as well. I remember at one point, this is now probably 8 years ago, two FBI agents showed up at Acquia, in black suits and were like, “where’s Dries, and does he talk to me?”

IVAN: (laughing) Dries is not here right now, can you leave a message please.

DRIES: Exactly. That's exactly what they told them, because I wasn't there. But they immediately called me and said, “hey, two FBI agents showed up.” I’m like ”whoa, what did I do?” And, they left their phone number. I called them, and there was a site, and I don't know which site or what, but obviously there was something illegal on the site, and they thought it was my site. And they looked at the site, they saw it was Drupal, they found my name, and they thought I was the site owner and developer of the site. Obviously, I had nothing to do with the site. And to this day I don't know which site it was. But I remember educating the FBI about open source and how it all works and why it's not my site. But that would’ve been an example of a site, obviously, that probably did not have a good impact on the world. And it's troubling, obviously, but at the same time I'm not sure what to do about that. So, I focus on how we make things better, and to me that's a huge motivator. The fact that Drupal is now used by 1 out of 30 sites in the world, and if you look at some of the larger sites, I think that number gets closer to 1 out of 10. So, if you think about it, what that means is, everyone uses Drupal as a visitor of the web. As a user of the web, you’re gonna hit a Drupal site. It's hard to not hit a Drupal site. Everybody visits at least 30 websites, I imagine. And so, statistically, you're going to hit a Drupal site. What’s encouraging and powerful to me is that when you make a change to Drupal, when you make it a little bit better, let’s say you make it a little bit more accessible, all of a sudden that touches everybody, everybody that uses the web. So, people sometimes complain that it's hard to make changes in Drupal, because we’re so big, and there’s a lot of governance around it. But at the same time, if your contribution makes it in, there's a good chance that it touches billions of people, which that's incredibly encouraging and rewarding to me.

IVAN: I can't even imagine how rewarding it is to you. I can identify with that, I'm sure it's a small portion of how you feel, and the clients that we help with being a Drupal focused agency and just using Drupal. It does feel good to be able to touch people and to improve things as new versions come out. I have to thank you again for creating Drupal, like this company wouldn't exist. I wouldn't be doing what I love and it's awesome. I think I have two questions and we'll be able to wrap it up. I love your Driesnotes. I love them because you’re always talking about what's coming next and what you think we should be focusing on in the future. Not just from a technical point of view, but from the people that make and use Drupal as well. And I'm curious to know, besides the new features and the attention to the user experience, what are your hopes and dreams for the Drupal community itself over the next few years? And, how do you see yourself facilitating that?

DRIES: Yeah, it's a big question. I don't know, I have a lot of thoughts on how to answer this question. I'm not sure if I have a crisp answer. But first of all, I'm very passionate about making Drupal easier to use for the day-to-day users of Drupal. Like the content creators and the marketers and the typically less technical people, I think it's really important. That was less important when I started Drupal but today that's very important and so I'm very passionate about that, because I think it's incredibly empowering for these people. So, we're doing a great job at that, actually. We're working on Layout Builder, we're working on Media, we're working on a whole bunch of things that will kind of make Drupal easier to use for non-developers. So, that’s super exciting. And I'm very happy that the community has been rallying around that right now. I feel like I’ve been talking about this in my Dries Notes actually for many years, and that wasn't always well-received. At least in the early days it wasn't universally well-received, and that is something that we needed to do. So, I think that cultural change has been a little bit slower than I would have liked to, but I feel like we're finally there. And so, that's pretty exciting to me, and that's exactly what needs to happen. And if you combine that with some of the innovation that we're working on around headless Drupal or decoupled Drupal, the API first initiative, where we're focused on the Rest API and the JSON API, that really kind of propels Drupal into new opportunities, where we're kind of moving beyond just supporting traditional websites, but where we can push content into mobile applications and digital kiosks and even drive voice assistance like Siri or Alexa, push content into augmented reality applications, and all that kind of stuff. I think that's incredibly exciting to me as well. I'm very excited that Drupal communities are also embracing that. I guess the last part of your question was “how do I see myself facilitating that?” Is that right?

IVAN: Yes.

DRIES: For me, I try to think about, I like to optimize what I do for impact. Like I love programming, but I don't do a lot of programming in Drupal because I don't feel it maximizes what I can do for the project. So often, what I do do, is I try to help the broad vision of where I think we should go and try to evangelize that and try to organize groups of people around the different pieces that make up that vision. It’s like, I try to plant the flag, and in my last Driesnote, I could show that image with a flag, and then all of the different initiatives that help us get from A to B. How do we actually get to the flag. So, we need to do all these different things. So, I like to kind of track those things and make sure that people are able to move these initiatives forward, so that the combined progress across all of the initiatives helps Drupal succeed. I also try and spend time unblocking people or empowering people to do things. I try to look after the sustainability of the project. I spend a good amount of my time working with the Drupal Association to make sure that the Drupal Association is well funded, that the DrupalCon events happen, because I believe in bringing people together to build in-person relationships, not just relationships on Slack or issue cues. So, I don't know, I do a lot of different things, the things that I feel will help move Drupal forward. A lot of these things are now a little bit more in the background than they used to be, funny enough, or less in the issue cues than the developer spheres but more around governance, strategy work, that kind of stuff. Long-winded answer.

IVAN: But, a very important answer. I appreciate everything you do for the community and for starting the project and for continuing to shepherd the organization and the direction of the project.

DRIES: I do my best, but it's truly the work of hundreds, if not thousands of people. A lot of people do so much for Drupal. And in many ways my contribution now is just like anyone else's contribution, I contribute a small piece of the bigger collective effort.

IVAN: Dries, thank you so very much for spending your time with me today. I really appreciate it. Would you consider coming back in the future at some point?

DRIES: I will.

IVAN: Maybe on the 100th episode. (laughing)

DRIES: Let's do it. (laughing) Well, thanks for the opportunity and congratulations again.

IVAN: Thank you very much. Dries can be found online at dri.es, that's dries with a dot between the "i" and the "e," where he publishes on a regular basis and syndicates it elsewhere. He is @dries and on Drupal.org where he is also user Number One. We'll have that in the transcript online with links. You’ve been listening to the TEN7 Podcast. Find us online at ten7.com/podcast. And if you have a second, do send us a message. We love hearing from you. Our email address is [email protected]. Until next time, this is Ivan Stegic. Thank you for listening.

Jan 02 2019
Jan 02

A lot of my work over the last few years has been working on migrations between various versions of Drupal. That usually means that I need to configure a local Drupal development environment with more than one database. And although this is relatively easy to do with Lando, I often have to look up how I did it before. So, I figured I should write it down and share with everyone else at the same time.

.lando.yml

Adding a database to an existing Lando environment is as easy as adding a few lines to the .lando.yml file and restarting.

services:
  legacy:
    type: mysql

This will create a new container called legacy with a MySQL database in it. Out of the box, Lando supports many common types of DB servers, including: MySQL, MariaDB, MongoDB, MSSQL, and PostgreSQL.

Often, your .lando.yml file might already have configuration in it. If the services line already exists, just put the new configuration underneath with the correct indentation. You can see examples of more complex configuration files at any of the links in the previous paragraph.

settings.php

Now, you will need to tell Drupal about the new DB. To do this, go to the command line and type lando info. In the output, you should see something like this:

{
  ...
  "legacy": {
    "type": "mysql",
    "version": "5.7",
    "hostnames": [
      "legacy",
      "legacy.clientname.internal"
    ],
    "creds": {
      "user": "mysql",
      "password": "password",
      "database": "database"
    },
    "internal_connection": {
      "host": "legacy",
      "port": 3306
    },
    "external_connection": {
      "host": "localhost",
      "port": "not forwarded"
    },
    "urls": []
  }
}

With that information, you can add the new DB configuration to Drupal's settings.php file.

$databases['old_db']['default'] = array (
  'database' => 'database',
  'username' => 'mysql',
  'password' => 'password',
  'prefix' => '',
  'host' => 'legacy',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);

Note that, by default the host name is going to correspond to the name of the service/container and will not necessarily be the same as the name of the database (or the name of the Drupal DB alias, for that matter). In other words, you should find the host and port values in Lando's internal_connection array. If, for some reason, you need to have a custom database name, credentials, port numbers or something else, you can refer to the links above.

Jan 02 2019
Jan 02

With the year winding down the month was a little quiet, but we still got some good contributions going.

Client sponsored

Thanks to our awesome clients for giving us a chance to help make open source software better for everyone.

Self-directed

Mediacurrent provides some extra time during the week for folks to scratch their own itches, and sometimes people triage issue queues instead of watching football on TV :-)

Blog posts

A little light this month, but there are still two good blog posts from our team.

Contrib Half Hour

We squeezed in four Contrib Half Hour meetings into the month, despite the company being closed for Turkey Day.

Events

Lots of folks were working on their presentation proposals for DrupalCon Seattle 2019. see Tara’s blog post for details. There are also several events coming up soon that we’ll be attending, including DrupalCamp NJ and Florida DrupalCamp in February and then NERDSummit in March.

Stay warm!

That’s it for this month. Hope everyone in the Northern Hemisphere stays warm, everyone in the Southern Hemisphere enjoys their summer, and the folks in the middle don’t brag too much!

Jan 02 2019
Jan 02

An article from ComputerMinds - Building with Drupal in the UK since 2005.

Anyone familiar with the Drupal core development lifecycle will know that presently the Drupal community supports two major versions at any one time: the current major release and its immediate predecessor. This means that at ComputerMinds we are currently helping our clients support and develop both Drupal 7 and Drupal 8 sites. So the obvious question that we get asked is ‘when is it time to upgrade’?

We can’t properly answer this question without bringing the next major release, Drupal 9, into the mix. So let’s look at the development timeline for these three versions. According to a blog post by Dries both Drupal 7 and 8 will have an end of life of no later than November 2021 with Drupal 9 being released roughly a year earlier in June 2020 to give site owners enough time to move over to Drupal 9. It is worth noting that from November 2021 only Drupal 9 will be supported. Dries outlines these dates with a whole bunch of details in this blog post.

Historically, migrating between major versions has been a considerable chunk of work as major versions aren’t backwards compatible; however, the good news is that migrating from Drupal 8 to Drupal 9 should be a very straightforward process - so long as you’ve kept your Drupal 8 site up-to-date! This is good news for anyone that’s already taken the plunge into the world of Drupal 8 as the migration process shouldn’t really be any more involved than a minor upgrade. This is because the only real changes will be to remove deprecated code and update dependencies, such as Symfony (Symfony 3 has an end of life of November 2021, hence this date being cut off for support for Drupal 8).

For site owners still using Drupal 7 the question of when to upgrade is slightly more complicated. Do you wait for Drupal 9 and skip Drupal 8, or should you upgrade now? As previously mentioned we can be reasonably confident that upgrading from Drupal 8 to Drupal 9 will be a straightforward process, so we don’t need to worry about having to redo lots of work a couple of years down the line if we do migrate to Drupal 8 now. So the question of when to migrate really varies depending on your current circumstance and preference.

Some site owners will want to benefit from new functionality added in Drupal 8 so will want to upgrade their Drupal 7 sites as soon as possible, whilst obviously factoring in how difficult and expensive the migration will be. Others will be perfectly happy sticking with Drupal 7 until support has ended, at which point they will have to port over in order to keep their site secure. Another piece of good news for anyone weighing up their options with Drupal 7 is that support for Drupal 7 will also be extended to November 2021 (previously support would have ended for Drupal 7 as soon as Drupal 9 was released) so this gives you another year to implement your migration to Drupal 9.

So the short answer of when to migrate your Drupal 7 site is really whenever is good for you. There’s no immediate rush and if you do opt to migrate to Drupal 8, as long as you keep your site up-to-date, upgrading to Drupal 9 when the time comes should be a cinch!

Jan 02 2019
Jan 02

An article from ComputerMinds - Building with Drupal in the UK since 2005.

At ComputerMinds we like to think that we’re all pretty good at what we do; however, nobody is perfect and this is why we always ensure that our code is properly peer reviewed as part of our quality assurance process.

Peer review is literally just what the name implies; we work together to review each other’s code to make sure that it all makes sense. This approach means that we’re able to spot obvious mistakes before they become a problem. It also has the huge advantage of allowing us to transfer knowledge between our team on a day-to-day basis.

Pull Requests

The primary way we peer our code is to make use of GitHub’s pull requests (PR) feature. This means that whenever we need to do some work on a Git repo we start by creating a new feature branch which will contain the chunk of work that we’re doing. Then once we are happy with the code we’ve written in this branch we’ll go over to GitHub and create a PR to merge our branch in with another branch which we know is stable, for example the master branch. Before this merge happens GitHub’s PR tool will show all the changes between the the two branches so that they can be reviewed by another developer.

At ComputerMinds we use pull requests a lot. We don’t like to work directly on a stable branch as this way there is much more chance the bugs might slip through the net. By using pull requests we can be sure that our code is properly sanity checked before it makes its way over to a stable environment, be that a client facing testing branch or the live branch. GitHub also makes it easy to add comments directly to the pull request so any issues are full documented and feedback is clearly displayed.

Face to face

When dealing with a more in-depth code change, it's particularly helpful to talk face-to-face, as it allows the original developer to talk you through their changes and the thinking behind them. This allows the reviewer to have a much better understanding of what the original developer was aiming to achieve and to sanity-check their thinking. A 'meatspace' chat can be more difficult to achieve than just getting some comments on a pull request, but it's often worth the effort.

Finding the right fit

Both of these methods have their strengths and weaknesses. Pull requests are quick and easy to use; however, when dealing with larger sets of changes things may get overlooked, or may not be properly understood without knowledge of the bigger picture. Face to face reviews obviously take up more resources to conduct the review but do allow for a more in-depth review where the bigger picture can be clearly explained by the original developer.

Obviously it goes without saying that these two approaches to peer review aren’t mutually exclusive - there are plenty of meatspace chats going on around the office about various PRs.

At ComputerMinds we're still working on how we do code review. There's always room for growth and for change, and we're actively promoting discussion amongst our team to see how we can do better.

How do you do quality assurance and review on your code? Share your thoughts and tips with us below!

Jan 01 2019
Jan 01

Often a custom module will have configuration settings that can be provided by an administrator. In Drupal 7, the form used for this purpose was provided via form code including a form array, typically encoded in an admin.inc file, and a hook_menu implantation in the .module file. 

It will probably come as no surprise that things are done differently in Drupal 8. So, let's go step-by-step through the creation of a custom module, example, and its settings page.

my_example.info.yml

The .info.yml file is the only file required for a module, and it doesn't need to contain much. Place it in the module root folder, modules/custom/my_example


name: my example
type: module
description: a module to use in my tutorial.
core: '8.x'
configure: my_example.settings

The configure entry uses the routing from the .routing.yml file. This entry results in a configure link being presented when the accordion control for the module is opened on the module admin page.

my_example.routing.yml

The .routing.yml file has a few purposes:

  • Establish the path for the configuration settings page
  • Tie the configuration settings page to its form
  • Declare the permissions necessary to access the page

This file will also be placed in the module root folder.


my_example.settings:
  path: '/admin/config/system/my_example/config'
  defaults:
    _form: '\Drupal\my_example\Form\Settings'
    _title: 'My Example'
  requirements:
    _permission: 'administer site configuration'

In the file, above, note that the prefix to .settings, my_example, matches the module name, and is again used in the _form reference.

my_example.links.menu.yml

Why doesn't my module have a configuration link on the admin configuration page? More often than not, the answer to this and similar questions is that this file wasn't created. The .link.menu.yaml file provides the missing link, so to speak, and like the preceding yaml files should be placed in the module's root folder.


my_example.settings:
  title: 'My Example'
  description: 'A module to use in my tutorial.'
  route_name: my_module.settings
  parent: system.admin_config_system

Note that the first line matches the name used in the .routing.yml file as does the route_name further down in the file. The parent setting determines where on the admin/config page and menu the link will appear, in the System section in this case.

Settings.php

The final file is the one that provides the settings form. Its name matches the last item in the _form setting in the .routing.yml file. It should be placed in the path
/src/Form.


 
namespace Drupal\my_example\Form;
 
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
 
/**
* Configure settings for this site.
*/
class Settings extends ConfigFormBase {
/**
 * {@inheritdoc}
 */
  public function getFormId() {
    return 'my_example_settings';
  }
 
/**
 * {@inheritdoc}
 */
  protected function getEditableConfigNames() {
    return [
      'my_example.settings',
    ];
  }
 
/**
 * {@inheritdoc}
 */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this----->config('my_example.settings');
 
    $form['sample_setting'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('Sample setting'),
      '#description' => $this->t('A sample setting for our module.'),
      '#default_value' => $config->get('sample_setting'),
    );
 
    return parent::buildForm($form, $form_state);
  }
 
/**
 * {@inheritdoc}
 */
  public function submitForm(array &$form, FormStateInterface $form_state) {
      // Retrieve the configuration
       $this->configFactory->getEditable('my_example.settings')
      // Set the submitted configuration setting
      ->set('sample_setting', $form_state->getValue('sample_setting'))
      ->save();
 
    parent::submitForm($form, $form_state);
  }
}

A few things to note in this file:

  • The class name matches the form name given in _form setting of the .routing.yml file
  • The method names should always be as listed
  • getFormId() returns the ID of the form
  • getEditableConfigNames() returns the name from the first line of the .routing.yml file
  • buildForm() loads the saved config, if any, based on the same routing entry, and creates the config form
  • The #default_value line in the form item retrieves the last saved value, if any, for that field
  • submitForm() uses the same routing entry and saves the values of the enumerated field(s)
Dec 31 2018
Dec 31

Last week was my twelfth Drupalversary!

The first half dozen years as a volunteer contributor/student, the second half as a full-time contributor/Acquia employee. Which makes this a special Drupalversary and worth looking back on :)

The d.o highlights of the first six years were my Hierarchical Select and CDN modules. I started those in my first year or so of using Drupal (which coincides with my first year at university). They led to a summer job for Mollom, working with/for Dries remotely — vastly better than counting sandwiches or waiting tables!

It also resulted in me freelancing during the school holidays: the Hierarchical Select module gained many features thanks to agencies not just requesting but also sponsoring them. I couldn’t believe that companies thousands of kilometers away would trust a 21-year old to write code for them!

Then I did my bachelor thesis and master thesis on Drupal + WPO (Web Performance Optimization) + data mining. To my own amazement, my bachelor thesis (while now irrelevant) led to freelancing for the White House and an internship with Facebook.

Biggest lesson learned: opportunities are hiding in unexpected places! (But opportunities are more within reach to those who are privileged. I had the privilege to do university studies, to spend my free time contributing to an open source project, and to propose thesis subjects.)

The second half was made possible by all of the above and sheer luck.

When I was first looking for a job in early 2012, Acquia had a remote hiring freeze. It got lifted a few months later. Because I’d worked remotely with Dries before (at Mollom), I was given the opportunity to work fully remotely from day one. (This would turn out to be very valuable: since then I’ve moved three times!) Angie and Moshe thought I was a capable candidate, I think largely based on the Hierarchical Select module.
Imagine that the remote hiring freeze had not gotten lifted or I’d written a different module? I was lucky in past choices and timing.
So I joined Acquia and started working on Drupal core full-time! I was originally hired to work on the authoring experience, specifically in-place editing.
The team of four I joined in 2012 has quadrupled since then and has always been an amazing group of people — a reflection of the people in the Drupal community at large!

Getting Drupal 8 shipped was hard on everyone in the community, but definitely also on our team. We all did whatever was most important; I probably contributed to more than a dozen subsystems along the way. The Drupal 8 achievement I’m most proud of is probably the intersection of cacheability and the render pipeline: Dynamic Page Cache & BigPipe, both of which have accelerated many billions responses by now. After Drupal 8 shipped, my primary focus has been the API-First Initiative. It’s satisfying to see Drupal 8 do well.

Biggest lessons learned:

  1. code criticism is not personal criticism — not feeling the need to defend every piece of code you’ve written is not only liberating, it also makes you immensely more productive!
  2. always think about future maintainability — having to provide support and backwards compatibility made me truly understand the consequences of mistakes I’ve made.

To many more years with the Drupal community!

Dec 31 2018
Dec 31

tl;dr: Run composer require zaporylie/composer-drupal-optimizations:^1.0 in your Drupal codebase to halve Composer's RAM usage and make operations like require and update 3-4x faster.

A few weeks ago, I noticed Drupal VM's PHP 5.6 automated test suite started failing on the step that runs composer require drupal/drush. (PSA: PHP 5.6 is officially dead. Don't use it anymore. If you're still using it, upgrade to a supported version ASAP!). This was the error message I was getting from Travis CI:

PHP Fatal error:  Allowed memory size of 2147483648 bytes exhausted (tried to allocate 32 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleWatchNode.php on line 40

I ran the test suite locally, and didn't have the same issue (locally I have PHP's CLI memory limit set to -1 so it never runs out of RAM unless I do insane-crazy things.

So then I ran the same test but with PHP's memory_limit set to 2G—yeah, that's two gigabytes of RAM—and it failed! So I ran the command again using Composer's --profile option and -vv to see exactly what was happening:

# Run PHP 5.6 in a container.
$ docker run --rm -it drupaldocker/php-dev:5.6-cli /bin/bash
# php -v     
PHP 5.6.36 (cli) (built: Jun 20 2018 23:33:51)

# composer create-project drupal-composer/drupal-project:8.x-dev composer-test --prefer-dist --no-interaction

# Install Devel module.
# cd composer-test
# composer require drupal/devel:^1.2 -vv --profile
Do not run Composer as root/super user! See https://getcomposer.org/root for details
[126.7MB/5.04s] ./composer.json has been updated
[129.6MB/6.08s] > pre-update-cmd: DrupalProject\composer\ScriptHandler::checkComposerVersion
[131.5MB/6.10s] Loading composer repositories with package information
[131.9MB/6.52s] Updating dependencies (including require-dev)
[2054.4MB/58.32s] Dependency resolution completed in 3.713 seconds
[2054.9MB/61.89s] Analyzed 18867 packages to resolve dependencies
[2054.9MB/61.89s] Analyzed 1577311 rules to resolve dependencies
[2056.9MB/62.68s] Dependency resolution completed in 0.002 seconds
[2055.5MB/62.69s] Package operations: 1 install, 0 updates, 0 removals
[2055.5MB/62.69s] Installs: drupal/devel:1.2.0
[2055.5MB/62.70s] Patching is disabled. Skipping.
[2055.5MB/62.80s]   - Installing drupal/devel (1.2.0): [2055.6MB/62.83s] [2055.6MB/63.02s] Downloading (0%)[2055.6MB/63.02s]                   [2[2055.6MB/63.04s] Downloading (5%)[2[2055.6MB/63.06s] Downloading (15%)[[2055.7MB/63.08s] Downloading (30%)[[2055.7MB/63.10s] Downloading (40%)[[2055.8MB/63.12s] Downloading (55%)[[2055.8MB/63.14s] Downloading (65%)[[2055.9MB/63.15s] Downloading (75%)[[2055.9MB/63.15s] Downloading (80%)[[2055.9MB/63.17s] Downloading (90%)[[2056.0MB/63.18s] Downloading (100%)[2055.5MB/63.19s]
[2055.5MB/63.19s]  Extracting archive[2055.6MB/63.57s]     REASON: Required by the root package: Install command rule (install drupal/devel 1.x-dev|install drupal/devel 1.2.0)
[2055.6MB/63.57s]
[2055.6MB/63.57s] No patches found for drupal/devel.
[731.5MB/71.30s] Writing lock file
[731.5MB/71.30s] Generating autoload files
[731.8MB/73.01s] > post-update-cmd: DrupalProject\composer\ScriptHandler::createRequiredFiles
[731.6MB/78.82s] Memory usage: 731.61MB (peak: 2057.24MB), time: 78.82s

So... when it started looking through Drupal's full stack of dependencies—some 18,867 packages and 1,577,311 rules—it gobbled up over 2 GB of RAM. No wonder it failed when memory_limit was 2G!

That seems pretty insane, so I started digging a bit more, and found that the PHP 7.1 and 7.2 builds were not failing; they peaked around 1.2 GB of RAM usage (yet another reason you should be running PHP 7.x—it uses way less RAM for so many different operations!).

Then I found a really neat package which had some outlandish promises: composer-drupal-optimizations mentioned in the README:

Before: 876 MB RAM, 17s; After: 250 MB RAM, 5s

I went ahead and added the package to a fresh new Drupal project with:

composer require zaporylie/composer-drupal-optimizations:^1.0

(Note that this operations still uses the same huge amount of memory and time, because the package to optimize things is being installed!)

And then I ran all the tests on PHP 5.6, 7.1, and 7.2 again. Instead of spelling out the gory details (they're all documented in this issue in the Drupal VM issue queue), here is a table of the amazing results:

PHP Version Before After Difference 5.6 2057.24 MB 540.02 MB -1.5 GB 7.1 1124.52 MB 426.64 MB -800 MB 7.2 1190.94 MB 423.93 MB -767 MB

You don't have to be on ancient-and-unsupported PHP 5.6 to benefit from the speedup afforded by ignoring unused/really old Symfony packages!

Next Steps

You should immediately add this package to your Drupal site (if you're using Composer to manage it) if you run Drupal 8.5 or later. And if you use a newer version of Acquia BLT, you're already covered! I'm hoping this package will be added upstream to drupal-project as well (there's sort-of an issue for that), and maybe even something could be done on the Drupal level.

Requiring over 1 GB of RAM to do even a simple composer require for a barebones Drupal site is kind-of insane, IMO.

Dec 31 2018
Dec 31

Past is a place, thoroughly familiar and yet the experience of revisiting it varies drastically. Revisiting some leaves you with happy nostalgia, some with innocent laughter, some with a moment of pride, and some, a prick of sadness or regret. But yet we choose to visit this place called ‘past’ through our memory, time and again. In fact, we recently did so by revisiting the year 2018, like many others, that is about to end in just a handful of hours. And fortunately, it was filled with a host of happy moments to rejoice and relish, topped by several breakthrough changes and chances we’ve embraced with all love & warmth.


The year 2018 has been the most eventful year for the AddWeb-traveling, counting right from the moment of moving into altogether new office space to officially being a supporting partner of Drupal.org and everything in between. It’s a journey no less than a cinematic experience, with all the drama, emotions and heroic ending - full of catharsis. Let us take you through this marvelous journey, as experienced by AddWeb-ians.

Welcoming 2018 - The Journey Begins, Quite Literally!

2018 - A ‘Year’ full of Smiles, Stronger Bonds & Success!

The hobby of traveling might be a trending one today. But we refrain from polluting our passion for traveling, by putting it under the category of ‘trending’. We’re so much about traveling that it has become just a part of our existence, now. Apart from all the traveling we individually do, throughout the year, we also make sure to plan at least one with our AddWeb family. And this time, we literally began our journey of 2018 by going on a trip to Jaisalmer - amidst sand dunes and folk tunes, starry nights and tipsy sites; quite literally!  

AddWeb Family Celebrate Emotions!

2018 - A ‘Year’ full of Smiles, Stronger Bonds & Success!

We promised you a journey with emotions at the backdrop. So, here we share a set of different emotions we shared and celebrated across the year.

  • Celebrating the born-day of our dear AddWebians with cakes, candles, and compassion

  • Celebrating the unity in diversity of the Republic of India with the strength of tri-color dress code and decorations

  • Celebrating the diverseness of our being with colors during the festival of Holi

  • Celebrating the feminine force on Women’s day by showing them the feeling of gratitude with ‘sweet’ presents

  • Celebrating the feeling of freedom on Independence day by painting our mood with patriotism

  • Celebrating the oneness of AddWeb family with an electrifying and energetic party - The AddWeb Annual Event at Olives Restaurant

  • Celebrating the almighty of auspiciousness - the cherubic Ganesha with an immense amount of faith and festive decorations on the occasion of Ganesh Chaturthi

  • Celebrating the festive mood of Diwali with DIY decorations, dazzling traditional dresses, delicious Diwali lunch, and gifts!

  • Celebrating the Christian festival of Christmas with a dress code, gifts, and our own two self-proclaimed Santas!

Level up, Metaphorically & Literally!

2018 - A ‘Year’ full of Smiles, Stronger Bonds & Success!

Well, it wouldn’t be an exaggeration if we said we literally levelled-up this year. Because this very year we moved into a new & bigger office space that is a few floors up from the old one. And we guess, this clearly states that we grew bigger in terms of our employee strength too, or as we like to address it - our AddWeb family grew even bigger! Yes, we started off from 50+ in January 2018 and today, by the end of December 2018, we’re almost a family of 100.

Apart from the above two, there are a few other spheres too, where we levelled-up. Like we launched a brand new website of ours, a couple of months before shifting into a brand new office space. Also, since we’re already following the international method of working, we also adopted the international standards of work hours by bringing the ‘5-days working’ policy into account. We also initiated sponsoring quarterly team lunches for our AddWeb family, who after travel bonds the most over food!  

 

Giving Back to the Society

2018 - A ‘Year’ full of Smiles, Stronger Bonds & Success!

The universe thrives and survives on the rule of ‘give & take’ and we firmly understand the importance of the same. Hence, we do believe in giving back to the society that has given us so much to relish upon. Maybe, that is why apart from doing things for the lesser privileged on a personal ground, we also choose to do a small act of charity on an official ground. We deliberately choose to publically share it, in order to inspire others to do the same.


This year too, we gave back to society by visiting a nearby government school. We spent some really good times with the happy and giving souls there and donated some stationary products, cookies, crayons, textbooks, et all for those kids. Believe us, it was one of the most wonderful time we had throughout the entire year. Something, that’s going to stay with us for a long, long time!

The AddWeb-Drupal Association, Elevated!

2018 - A ‘Year’ full of Smiles, Stronger Bonds & Success!

Our association with Drupal is as old as our existence. In fact, we as individual team members have been Drupal-ing even before the inception of AddWeb. And this year, we took a step ahead by giving the monetary contribution to the ‘Promote Drupal Initiative’ by Drupal.org. How could we not contribute, when it was about strengthening the community to a higher level.


And our support & passion for Drupal doesn’t end there. We also became the official ‘Supporting Partner’ of Drupal, which ultimately helped us in extending and strengthening our association with Drupal. We also made another contribution towards Drupal by organizing a ‘Drupal Meetup’ in our city and had multiple interesting knowledge-sharing sessions with the local community members.

And of course, how could we not attend the international Drupal events, worldwide! This year we attended the Standford Drupal Camp, DrupalCon Nashville, and Drupal Europe event that was voluntarily organised by the Drupal community members. We also attended our first ever Laravel event in Europe by the name of LaraCon EU.

 

AEDU Hits the Market, Successfully!

2018 - A ‘Year’ full of Smiles, Stronger Bonds & Success!

The joy of launching your very own dream-project is no less than winning an Oscar. Indeed! The year 2018 gave us one such moment when we launched our very own school management software - AEDU in the market. And to our surprise, it got adopted by more than 200+ schools across the nation with all love and warmth. Not just that, we also launched the Parent and Driver’s App, for the same and they also got an equal and elaborative response as the software did!

Community, Coding, Contributions & Client-Satisfaction

2018 - A ‘Year’ full of Smiles, Stronger Bonds & Success!

Last but not least! Our core passion for coding paved a path full of new endeavors and wealthy projects. Let us share these moments of pride and high spirits, from this year, with you before we all enter into a new year with goals to achieve and moments to live!

  • On one hand, when we introduced our very own Research Wing for Artificial Intelligence(AI); on the other hand, we also spent 1000+ hours on contributing towards the open-source community

  • We adapted the Intranet & Instant Communication Tool by the name of ‘Rocket.chat’, along with developing & launching our very own ‘AddWeb Ionic Chat

  • Witnessing the boom of ReactJS and ASP.Net, we also adopted them, for we love learning and excelling at new technologies

  • We automated the DevOps process that we follow with the use of Jenkins and Ansible, resulting in being more productive and futuristic!

  • And the most momentous achievement of the year - We successfully completed 100+ projects, worldwide along with one of the biggest project of the year, named ‘AnyQuip

With a wish that we haven’t bored with our smiles, stronger bonds and success, we again wish each one of you reading this a #HappyNewYear and blissful moments, manifold!

 

Dec 30 2018
Dec 30

Have you ever wanted to preview your new Drupal theme in a production environment without making it the default yet?

I did when I was working on my redesign of dri.es earlier in the year. I wanted the ability to add ?preview to the end of any URL on dri.es and have that URL render in my upcoming theme.

It allowed me to easily share my new design with a few friends and ask for their feedback. I would send them a quick message like this: Hi Matt, check out an early preview of my site's new design: https://dri.es?preview. Please let me know what you think!.

Because I use Drupal for my site, I created a custom Drupal 8 module to add this functionality. The module is probably too simple to share on Drupal.org so I figured I'd start with sharing it on my blog instead.

Like all Drupal modules, my module has a *.info.yml file. The purpose of the *.info.yml file is to let Drupal know about the existence of my module and to share some basic information about the module. My theme preview module is called Previewer so it has a *.info.yml file called previewer.info.yml:

name: Previewer
description: Allows previewing of a theme by adding '?preview' to URLs.
package: Custom
type: module
core: 8.x

The module has only one PHP class, Previewer, that implements Drupal's ThemeNegotiatorInterface interface:

<?php

namespace Drupal\previewer\Theme;

use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Theme\ThemeNegotiatorInterface;

class Previewer implements ThemeNegotiatorInterface {

  /**
   * The function applies() determines if it wants to set the 
   * active theme. If the ?preview query string is part of the
   * URL, return TRUE to denote that Previewer wants to set
   * the theme. determineActiveTheme() will be called to
   * ask for the theme's name.
   */
  public function applies(RouteMatchInterface $route_match) {
    if (isset($_GET['preview'])) {
      return TRUE;
    }
    return FALSE;
  }

  /**
   * The function determineActiveTheme() is responsible
   * for returning the name of the theme that is to be used.
   */
  public function determineActiveTheme(RouteMatchInterface $route_match) {
    return 'dries'; // Yes, the name of my theme is 'dries'.
  }
}

?>

The function applies() checks if '?preview' is set as part of the current URL. If so, applies() returns TRUE to tell Drupal that it would like to specify what theme to use. If Previewer is allowed to specify the theme, its determineActiveTheme() function will be called. determineActiveTheme() returns the name of the theme. Drupal uses the specified theme to render the current page request.

Next, we have to tell Drupal about our theme negotiator class Previewer. This is done by registering it a service in previewer.services.yml:

services:
  theme.negotiator.previewer:
    class: Drupal\previewer\Theme\Previewer
    tags:
      - { name: theme_negotiator, priority: 10 }

previewer.services.yml tells Drupal to call our class Drupal\previewer\Theme\Previewer when it has to decide what theme to load.

A service is a common concept in Drupal (inherited from Symfony). Many of Drupal's features are separated into a service. Each service does just one job. Structuring your application around a set of independent and reusable service classes is an object-oriented programming best-practice. To some it might feel complex, but it actually promotes reusable and decoupled code.

Note that Drupal 8 adheres to PSR-4 namespaces and autoloading. This means that files must be named in specific ways and placed in specific directories in order to be recognized and loaded. Here is what my directory structure looks like:

$ tree previewer
previewer
├── previewer.info.yml
├── previewer.services.yml
└── src
    └── Theme
        └── Previewer.php

And that's it!

December 30, 2018

2 min read time

Dec 28 2018
Dec 28

Themes improperly check renderable arrays when determining visibility

Go to the profile of Kaleem Clarkson

Dec 28, 2018

Photo by Hello I'm Nik on Unsplash

One of the many great advantages of being a part of an open source project is that there are so many smart people out there are willing to contribute their time for the betterment of the project. This ability to crowdsource bugs and feature requests that rarely stumps the community is what makes Drupal such a powerful application.

While rare, sometimes the community finds a bug that is very difficult to solve. Let me introduce you to [#953034] Themes improperly check renderable arrays when determining visibility.

I was first introduced to this bug while trying to add a view block in the left sidebar. When the view was empty I expected the block and the sidebar to not be displayed. As you can see below, while the block was empty the sidebar was still being rendered.

The sidebar is Still being displayed.

I then googled and stumbled upon another issued, Empty view causes region to be displayed and it was exactly what I was looking for, but I noticed it was marked as a duplicate issue and linked to [#953034] Themes improperly check renderable arrays when determining visibility. This bug was reported to Drupal 7 core on October 26, 2010. The issue has over 310 comments and 230 followers.

You can really tell the severity and complexity of an issue when you see some of the brightest Drupal contributors have been making suggestions and striking out. They include but are not limited to: 
bleen, chx, Cottser, Crell, DamienMcKenna, EclipseGc, Fabianx, Jeff Burnz, jenlampton, joachim, joelpittet, JohnAlbin, lauriii, markcarver, mdrummond, moshe weitzman, mpotter, samuel.mortenson, tim.plunkett, webchick, Wim Leers, xjm.

While I am not a backend developer, I felt like I could still help by highlighting a major issue that maybe someone either inside or outside the community could help find a solution.

Please remember to read the complete issue before commenting as so many people have suggested solutions to fix but have ran into a roadblock.

Dec 28 2018
Dec 28

To Zach Sines and Taylor Wright, It’s not goodbye, it’s see you later.

Go to the profile of Kaleem Clarkson

Dec 20, 2018

2018 DrupalCamp Atlanta Group Picture

Thanks to all of the presenters and participants who attended 2018 DrupalCamp Atlanta (DCATL). We are excited to provide you with a little holiday gift. The Session Videos are now live. View here

I would also like to thank the awesome DCATL team that I had the pleasure to work with:

  • Sarah Golden — Acquia
  • Nikki Smith — Sevaa
  • Zach Sines — Manhattan Associates
  • Taylor Wright

Overcoming Challenges

As with any event, this year’s DCATL had some interesting twists and turns that we were able to overcome. The biggest and most noticeable one, of course, was the construction that was happening at the hotel. Two weeks before the event, I met with the hotel event staff to discuss our setup. On my way into the hotel, everything looked as I expected and it was business as usual. When I entered the lobby I noticed they were putting up a temporary wall that blocks off the hotel bar. During our discussion, I was informed there was going to be some construction going on during our camp but was ensured that the event space wouldn’t be impacted.

The DCATL team arrived at the hotel to load in and everyone was mortified when we saw the front of the building. No more than 10 minutes after we arrived, I received a message from one of the trainers asking, “are we still having the conference?” We immediately started thinking about how we can alleviate the situation, so we took a picture of the building and sent an email out to everyone stating that the interior of the building was okay and that we were still going to have an awesome conference.

It wasn’t all doom and gloom. 10 days before the camp, we were still short on the financials and were kind of sweating it out (although we had reserve funds to cover the costs) thinking of ways that we could reduce costs without getting rid of too much programming. I received a phone call from an employee at Turner, asking if they could be a Diamond Sponsor and would also like to sponsor the after party. WOW! I couldn’t believe we were getting bailed out in the last minute, phew!

2019 Goals for DrupalCamp Atlanta

After the camp, I got a chance to have lunch with a mentor of mine and we talked about where are the next generation of Drupalers going to come from and what purpose camps serve today vs ten years ago. So based on our discussion here are my top two goals I would like to propose to the DCATL organizing team.

Increase the Number of Case Studies with co-presentations from Drupal shops and their Clients.

Another topic we discussed was how Acquia Engage has taken a different approach by showcasing their clients and providing opportunities for Drupal shops to schedule meet and greets talk with their clients. During the opening session at DCATL I asked the audience, “raise your hand if you have invited a client to attend or co-present at DrupalCamp Atlanta.” Out of all the attendees maybe 2 raised their hands.

Increase the Number of Student Attendees

When looking at some of my Drupal colleague's user profiles so many of us over 10 years. This means we are getting old folks :) But more importantly, where are the next generation of Drupalers going to come from. The state of Georgia has 114 colleges and 326,609 students. I know it takes a lot of energy but we have to figure out a way to use our camp as a pipeline for nurturing the next generation of Drupalist.

It's Not Goodbye Its See You Soon

For the past 5.5 years, I have had the pleasure to work with Zach Sines and Taylor Wright as board members of the Atlanta Drupal Users Group (ADUG). Both Zach and Taylor were key stakeholders in the restructuring of the organization. Zach took on the writing of the bylaws that states how people are elected, what are the rules for participating, what are the roles and responsibilities of each officer and so on. Taylor has a ton of finance experience so he took on the responsibility of cleaning up our financials and paying all of our bills. These two have been by my side, even after heated discussions and have been what I like to call my nice translators. Sometimes I have the tendency to be too blunt and they were always there to translate my bluntness into that beautiful southern hospitality.

Zach in the Green on the Left. Taylor in the Green on the Right

Earlier this year, both Zach and Taylor informed all of us that 2018 will be their last year serving on the board. Not to get too mushy but I am going to miss them both a lot, I mean a ton. Not just for their expertise but hearing their voices on our monthly calls and some of their hilarious stories. But what is great about Drupal is that you build some lasting relationships and now I consider these two my friends. Thank you for all the work you have put into running these events, and I know this is not goodbye its soo you soon.

ADUG is Looking for New Board Members

With our current vacancies, the Atlanta Drupal User Group (ADUG) is currently looking for new board members to join our team. While the serving on a board can sound intimidating we are really just a bunch of Drupalers who want to give back to the community. All of our meetings are held on a video call. If you are interested or know some who would be a great fit, please feel free to contact us.

Dec 27 2018
Dec 27

Ah! those days, when copies of movies were sold in the form of DVDs, fast forwarding and rewinding through the scenes made us feel that the power is all in our hands. 

But with the evolution in technology and internet presence  (in terms of marketing a film), the need for a movie website has come a long way after witnessing a growth in streaming services.  

An image of an apple laptop in grey and black background with chairs placed on the keyboard


Setting up a movie website means understanding the goals of building it in the very first place. Be it a teaser website, production blog, or a distribution site - depending on the demand of the audience, web development is brought into action.

And nothing does a better task than Drupal. Often preferred by brands that deal with a high volume of traffic, this  CMS platform would offer you effective features and functionalities for your website.

What Does Drupal Offer Your Website With?

Choosing a Content Management System for your website is like choosing the cast for your movie. And Drupal proves to be the CMS which give the best of “all worlds”. It would provide you with an ample number of functionalities and fulfill all your customer's needs. 

Starting from:

Content Authoring 

While you are creating your movie website, there might be instances that would lead you to a situation in which you wish to edit your content or any particular page. It may be a change in the movie title or modification in the synopsis.

Drupal 8 features bring about an unusual power into the hands of content authors. With modules like WYSIWYG CKEditor, drafting and editing content have become a piece of cake.

The use of client-side editors to edit content, installing and integrating choice editor has been made even more simple. It includes HTML editors (i.e WYSIWYG), pseudo-editor (to insert markup into text area) and  flash based applications (for production of animation)

The WYSIWYG module also presents you with an abstraction layer for other Drupal modules to integrate with the editor which implies that Drupal modules can expose content editing functionality, indifferent of what editor has installed.

A GIF on how to add and edit content on Drupal


New Theme Engine

Just like resolutions are important for deciding the quality of a movie, a theme also plays a vital role in your website. When an individual visits your movie website, the very first thing which would attract them would be its theme. An interesting and impressive theme would never backfire when it comes to user experience.

Theme engine combines data with templates from themes and shows the final HTML result to the user 
A flowchart with orange, black and blue-colored boxes showing how the theme engine combines data with a template and shows a substantial result pageSource: Github

Drupal 8 includes a brand new theming engine called Twig, which is PHP-based, flexible, fast, and secure. It helps in creating a beautiful and functional website that has a much simpler syntax. Offering features like template inheritance, automatic escaping, variable filters, and macros to improve the development workflow. 

Responsive Designs  

According to Statista,  52.4 percent of the global web traffic is originated from mobile devices (making it half of the population) which clearly implies the importance of responsive designs. 

Responsive Designs would improve user experience which would in return portray a positive impression for your movie website. If your fans are able to easily access your website, it would more likely to increase the numbers in terms of traffic and bring out a good number of conversion rates even in the future.

Drupal 8 is mobile first in its approach. All the built-in themes that come with Drupal 8 are responsive, along with an admin theme that adapts to different screen sizes. This would allow different users to access your website at different places on various devices. A module like Breakpoint, which comes with Drupal core, resizes the website and images according to the device.

Nordisk Film Cinema is a great example of this. They wanted a responsive and a visually engaging website with cutting-edge functionalities. This was demanded so that the current and future website users have the power to easily navigate the site regardless of the device they were using. The requirement of the responsive site was also because many visitors use their smartphones to buy tickets on the go. Thus Drupal was the best choice for them. 

Four mobile screens placed horizontally where the right part of one phone overlaps the left part of the succeeding phone


Security 

While you are funding for the construction of your movie website, you expect it to be secure and safe from hackers and potential viruses. Drupal has a very good track record when it comes to security, and has recognized process for investigation, verifying and publishing security problems. When it comes to security, Drupal vulnerability statistics clearly depicts security attacks that have considerably reduced over the years.

A bar graph of vulnerability by year and typeSource: Etondigital

You can easily enhance the security of your website with help of Drupal security modules like captcha (response test to determine whether a user is a human or not), password policy (enforces restrictions in users passwords), security kit (protects the website from cross-scripting, cross-site requesting, click jagging etc), two-factor authentication (provides extra security with code authentication on mobile) 

Not only this but Drupal design meets all the security standard of the Open Web Application Security Project (OWASP). Hence, Drupal core, being highly secure, builds sites that can be patched within minutes. This lowers the risk of broken features or any error to a minimum.

Migration 

Entertainment Weekly was one of the sites that were stuck managing content across ten different WordPress VIP blogs and a large legacy Vignette site. They needed to incorporate their digital content and implement a rapid publishing solution to lower the time between publishing and going live.

An agency was approached to help migrate content and integrate editorial workflow onto a single Drupal-based solution. Migration of more than 20 years of content was all needed to be considered for the creation of the platform. Drupal was chosen because of the fact that its core consisted of the migrate module that provides API and base implementation for importing up of data. 

Similarly, at any instance of time, you might feel a need to migrate from one site to another, and that is the reason why Drupal is the hero for you. The core migrate module in Drupal 8 provides APIs and base implementation for importing data into Drupal.  

A screenshot of entertainment weekly website


Web Hosting 

It is important to buy a web space to build your movie website in order to get it live and active on the internet. 

This is only possible with the help of web hosting. Drupal 8 provides you with many web hosting options. Which are safe to use and efficiently handles your site traffic.

So, if you want to make a better choice when it comes to web hosting companies, you can choose:

  • Pantheon
  • Liquid Web
  • InMotion
  • Bluehost
  • Site5
  • Pair
  • Omega8.CC
  • Drupion
  • Green Geeks
  • Black Mesh  

Manages Configuration

Configuration Management is an important factor of any CMS platform. In Drupal 8 configuration data is stored in files, separated from the site database, and has configuration management built into it at the file system level. Carrying configuration elements from local development to the server has been made really easy with Drupal 8.

The contributed module in Drupal 8, i.e Config Filter helps in built-in configuration management capabilities by providing an API to support different workflow which filters out or modifies configuration changes as being pushed to the configuration. 
Config Split is an another contributed module in Drupal 8 that builds on top of Config Filter that allows a difference in configuration between various environment.  

Managing configuration would allow you to establish a consistency in terms of performance and also eliminate the time to build out additional resources without worrying about the user prone errors. 

Configuration Management System in Drupal can manage things like:

  • Modules setting and states 
  • Content Types
  • Block Types
  • Permissions
  • Views
  • Theme Settings

Content Architecture 

We have reached a point where the old drupal hymn “create content first and see it later” is not enough to succeed with the content editors. Hence, Drupal is competing and replacing other CMS when it comes to content architecture. Content Editors expect full flexibility on how to create, display, approve and publish content. Modules like panels and panelizer, a distribution like panopoly and demo framework have helped in the modification of panorama in Drupal.  

One of the most important steps of building your movie website is deciding how to structure your content architecture. There are ample numbers of ways in which you can build out complex content type in Drupal 8. Here, every piece of content is an entity that stores different types of content.

Your movie website would have entities like the cast, edition, categories, review, collection and so on.

Flow-chart on different types of entities

Drupal modules like views contribute largely to the whole structure of the content architecture. With this Drupal 8 feature firmly integrated with the core, the creation of pages, blocks, admins have been made easy.

Menu module in Drupal core is the static hierarchy of the content. This module allows the administration to customize the websites navigation menu. You can easily add new menus and edit the existing ones. Apart from these two, Entity reference field or link field explicitly allows the addition of link from one content item to another. 

Accessibility 

In addition to providing subtitles in multiple languages for a worldwide audience, understanding the need of closed captions and audio description have broadened the customer base to include hundreds and millions of people worldwide who have hearing loss and vision impairments. 

Making a movie accessible is not only a choice but a legal requirement as well.

Accessibility for the visually impaired community is a really important factor for creating any website. Drupal 8 has excellent support for industry standards like WAI ARAI, and with the help of screen readers and other assistive technology, Drupal is ensuring accessibility at a much bigger level.

 An image of a laptop where two hands are presenting it and on top of it is the diagram of settings, an eye, and ears placed horizontally


Performance 

We all are aware of the three-second rule implemented on a website. Even the smallest change in a website page results in the modification of the traffic noticeably. Hence, speed immensely contributes to the strength and the performance of the website.

Drupal 8 caches all the entities, and helps in the speed and streaming sector to optimize the performance as it is needed. With modules like varnish and redis this task is easily achievable. These modules allow the developers to optimize the site load performance for the end-user significantly.

Drupal 8 core also consists of a module which is the Big Pipe that loads the dynamic pages quickly by loading various section of the webpage in parallel. It is done so that the end users do not have to wait for the Document Object Model (DOM) to be completely ready to start an interaction with the website. Drupal allows the user to tinker with the core. A programmer can twist out a lot of performance boost from a Drupal website. It primarily caters to the enterprise market, hence the websites are well suited and handled with a large volume of data and thousands of pages. It should be noted that a well managed Drupal website rarely goes down or slows down the procedure. 

Multilingual and Multisite Capabilities 

Drupal’s multisite feature allows the user to share a single Drupal installation site core. This is specifically useful for managing the code since each upgrade only needs to be done once. Every site would have its own database and it would also have its own configurational settings. If you have a complex site or a very different site to manage then Drupal multisite is the best option. 

Drupal is also capable of supporting and managing multiple language out-of-the-box. Which means support for the translation of the content as well as for the translation of the back-end user interface of the CMS itself. Having the support of the multilingual website means more audience. With the addition of only four modules in Drupal 8 for language support, all the monolingual and non-english website are easily translated. 

A screenshot of the homepage of Turner Broadcasting General Entertainment


A great example of this would be Turner Broadcasting General Entertainment multi-site which is built on Drupal platform. The site consists of entertainment brands like Cartoon Network, Boomerang, CNN etc. Drupal was primarily used because of its multilingual and multi-site capabilities. It successfully built enterprise-level CMS websites, and scaled to a high level of traffic and maintained availability and performance.

Getting Noticed 

Once you have a website, you need to get it noticed so that people will start visiting it. In other words, if the website ranks high it would definitely get noticed. Drupal has some set of modules which does the task pretty well. Modules like Pathauto, Meta tag, Site verification, Path Redirect, and Google Analytics help in creating URL paths and optimize search engines. 

Drupal automatically operates and generate path identity for the content without asking the users to specify the path identity. These identities are based on pattern system that uses token with the administrator.

 An image of the Pathauto module saying hello world with a shade of blue on the screen
  • Path redirect

Drupal allows the user to redirect from one path to another path utilizing HTTP redirect status. This would prevent the user to encounter with error 404 if the path was changed or redirected at some instance. 

An image of the Drupal module known as path direct
  • Site verification

Drupal is such a user-friendly domain that it allows them to verify the site and domain ownership for a search engine. There are two types of methods which support verification - the addition of meta tags or uploading a particular file. 

Drupal automatically grants the users with structured metadata or meta tags. These elements help the website with ranking and displaying of the site in the search engine outcomes. 

An image consisting of a pen with a list of meta tags in blue and red color
  • Google Analytics

Drupal is one such platform which supports web analysis. It presents the users with class web analytic capability, these capabilities make Google analytics an excellent tool for monitoring SEO results. 

Community 

Drupal community constantly updates and builds modules to expand the platform for compatibility and security reasons. In other words, Drupal is one of those platforms which checks for errors and makes it certain that the site is protected all the time. 

Drupal association has a team that looks after the security of Drupal and its module. Thus, your movie website is surely in good hands as there are people watching it all the time. By providing with several customer support features that are built in the service. Features like:

The user can post a question or a query which is answered by the professionals once it is seen by them.

  • Slack and online chat

The user can chat with the Drupal community which is maintained by them and handled by them.

  • Community documentation

The user can read the online documentation which is written and maintained by the Drupal community. 

There is an ample number of user guide and manuals which presents the users with remedies and solutions. 

Case Study 

Cambridge film festival is one of the oldest and most prestigious cultural events in the East Anglia region. Drupal was chosen to build the website. It was selected because it maps the content-rich film data into a CMS that gave them an opportunity to build a powerful film search.

Screenshot of the homepage of Cambridge film festival


As a key part of the festival’s marketing strategy, the new website was used to raise awareness, increase audiences and attract the world's best filmmakers.

Focusing on the user experience (UX), it was built fully to have a responsive website which can be viewed across all devices. It was also essential to make searching, sharing and booking online via the mobiles and tablets easy.

Although Drupal 8 was still in the process of development during the introduction of this project, the breadth of functionality and flexibility in the core was taken into consideration.

While building the theme for the Cambridge Film Festival, the advantage of the new Twig theming system was also taken. Individual pages were built in a more styled and modular way, the Twig debug mode did a great job of guiding them through the process, making file name suggestions that offered a range of options for theming elements either globally or individually.

The film search utilizes the View module as well. Using Views made the complex relationships easy to set up, and the also advanced caching which meant that even though the view was quite complicated, it loaded very quickly under most circumstances.

Wrapping Up 

Just like every movie has a happy ending ( if not then that's not the ending), bringing your site to a position where the world watches it and appreciates it is what you desire for. And attaining this task is the big climax to the entire scene. 

Thus, to grab those standing ovations working smart is the key. At OpenSense Labs, we actually sense the need of you producing a user-friendly site and thus provide services that contribute highly to your journey of constructing the website. Thereby, call us at [email protected] to build the desired movie website. 

Dec 26 2018
Dec 26
It's not possible to use list values in a conditional operator. For example, if you try:
resource "aws_elasticsearch_domain" "es_domain" {
  ...

  vpc_options {
    ...
    subnet_ids = [ "${var.es_zone_awareness_enabled ? list("subnet-1", "subnet-2") : list("subnet-1")}" ]
  }

  ...
}
it will fail with "conditional operator cannot be used with list values" message. This is because terraform cannot assert that list's element types are consistent.

The workaround is to join list values into a string to bypass type check and then split string back to list:

resource "aws_elasticsearch_domain" "es_domain" {
  ...

  vpc_options {
    ...
    subnet_ids = [ "${split(",", var.es_zone_awareness_enabled ? join(",", list("subnet-1", "subnet-2")) : join(",", list("subnet-1", "")))}" ]
  }

  ...
}
You might've mentioned that there is an empty string as a second list value in second join function. This is needed to make result string contain a "," character for splitting by final split function.

Of course, it's just a synthetic example with list functions. In real life, those lists come from variables. For instance, I had a map variable which looked like

variable "private_subnet_ids" {
  type = "map"
  default = { "zone-1,zone-2" = "subnet-1,subnet-2" }
}
and I wanted to get a list which contains one or both subnet ids depending on bool variable. Possible steps were:
  1. Turn a map into a list.
  2. If we need both subnets:
    1. Get the first list value (string, "subnet-1,subnet-2").
  3. If we need only one subnet:
    1. Get the first list value (string, "subnet-1,subnet-2").
    2. Split by "," character (list, ["subnet-1", "subnet-2"]).
    3. Get needed list element (string, "subnet-1").
    4. Put it to a list along with an empty string (list, ["subnet-1", ""]).
    5. Join this list into a string by "," character (string, "subnet-1,").
  4. Split by "," character.
Result resource definition looked as:
resource "aws_elasticsearch_domain" "es_domain" {
  ...

  vpc_options {
    ...
    subnet_ids = [ "${split(",", var.es_zone_awareness_enabled ? element(values(var.private_subnet_ids), 0) : join(",", list(element(split(",", element(values(var.private_subnet_ids), 0)), 0), "")))}" ]
  }

  ...
}
Dec 26 2018
Dec 26

There is often a need to import and export content to and from your Drupal 8 website. The ability to do that lets you use the power of content in Drupal 8 more fully. One of the most popular content sources is a CSV file. Drupal 8 has a number of useful contributed modules for getting data from it, and many cases also need customization. Our Drupal team provides smooth CSV import for even for the most complex cases. Today we would like to share a simple way to import data from a CSV file to Drupal 8 with you.

For a start, what is CSV?

CSV, which stands for comma-separated values, is a popular format for data storage. A CSV file stores data as a table where values are separated by commas. CSV is compatible with any spreadsheet programs such as Google Spreadsheets, Microsoft Excel, and so on. Each value uses a cell in the table.

CSV files are incredibly lightweight, easy to organize, and awesome for manipulating large amounts of data. Huge tables with data can be quickly edited by website administrators and sent to Drupal when ready.

Some ways to import data from a CSV file to Drupal 8

Among the popular solutions for CSV import to Drupal 8 websites, there are contributed modules like Migrate Source CSV, Migrate Plus, and Migrate Tools. The CSV import process with these modules includes the creation of the migration configuration and the use of the “migrate-import” Drush command.

And there also is one very simple solution called the Content Import contributed module, which we would like to show in action.

An example of CSV import via the Content Import module

The Content Import module lets website administrators import data from a CSV file to a specific Drupal 8 content type. A content type has fields, and a table has columns, and this is where they should match. Remember, we can always save a CSV file as a table.

Each CSV file column should list the values of a particular field of the content type. The first cell of each column should match the field’s machine name.

Some special supported Drupal fields include:

  • Entity Reference for Taxonomy, Users, and Content
  • Geolocation, Timestamp, Boolean, and Date

There also are two columns announced as mandatory.

  • The first column should be called “title.”
  • There is also a “langcode” column that does not match a specific field of the content type. The default is “en” for English, and you can use other language codes.

In our example below, we are not using the langcode column, and still everything works. So it looks like using only one of these two is mandatory.

If your data has images, there will be a little more hassle — you will need an additional IMCE module for uploading images into the “public” folder.

Of course, our example will include images! ;) So let’s create a sample Drupal 8 content type and import CSV data into it. We have a tasty content type on our Drupal 8 website — “Menu item.” It has the following fields.

Drupal content type fields

In the settings of the image field, we specify the directory to which we will upload images like this: [content_type_name/images].

 Specifying the image upload directory in the field settings

The “Available for delivery” field is of “Boolean” type, and we put the options as “Yes” or “No.”

The Boolean type field in Drupal

Then we download the IMCE module that will help us put images in this directory. We go to site_name/imce, open the “public” directory, create the folder with our content type name, and within it, create the folder “images” so that the path is public/content_type_name/images. Then we upload our images there. A bulk upload works well for this.

 Uploding images with IMCE

Then let’s prepare our CSV file. We can create it as a Spreadsheet first, so it’s more handy to work with the cells. We put the machine names of the fields into the first row. Then we fill in the values for each field. The values for the images are their file names.

Data as a spreadsheet

When the spreadsheet is ready, we download the file as CSV.

Data as CSV

It’s time to import the CSV data to the Drupal 8 website. With the Content Import module installed and enabled, we go to Configuration — Content Authoring — Content Import and select the content type to import the CSV data to.

When we do so, we also see sample CSV file available for download. We are not interested in the sample right now, so let’s choose our CSV file from the computer and click “Import.”

Content import from CSV to Drupal 8

In a few seconds, we see the content is imported. All items are listed in Content, and each of them has all the field values imported from our CSV.

 Drupal content listedDrupal content item with fields

Our menu deserves to be created as a view on our Drupal 8 website, so it represents all our items in an attractive way.

Drupal content in a view

Your perfect CSV import

We have shown you how to import data from a CSV file to Drupal 8. Please keep in mind that this simple example will not fit on just any website. Especially if you have plenty of customizations, or need complex mapping between the CSV columns and Drupal fields, you will need custom migration solutions.

Contact our Drupal experts — and we will advise you the optimal CSV import scenario. And, of course, they will implement everything for you. Get the best from the efficient data formats and smart data exchange!

Dec 26 2018
Dec 26

Your step by step guide with easy to follow instructions for navigating Drupal 8.

Book cover of Drupal 8 Quick Start Guide

Available from Amazon and Packt.

Drupal is a powerful content management platform, flexible enough to accommodate almost any content requirements. This flexibility comes with a cost: complexity. Drupal 8 Quick Start Guide will clear your path from installation to a building usable site in minutes, and to a customized site in one sitting.

  • Create and customize Drupal structures, such as menus, tags, and content categories
  • Extend Drupal's capabilities with add-on modules
  • Administer site users, their roles, and the actions to which they are granted access
  • Understand user roles and permissions
  • Create, edit, and publish content
  • Use Views for custom content selection and display
  • Expand your audience with custom RSS feeds
  • Configure a home page with meaningful sections for a better UX
Of course, the Drupal Community isn't the only place to give back. It's a complex world, and there are as many worthy causes as their are melodies, with most being served by multiple charitable organizations. Here are a few of those that strike a 7th chord with me. St. Jude Children's Research Hospital logo UNICEF logo
Dec 24 2018
Dec 24

We want to get you better acquainted with the kind of company Agiledrop is, the practices we employ and the team spirit we cultivate. So, we’ve decided to start a series of blog posts that tell the story of how the company has managed to make a name for itself and form a team that major global agencies can trust and depend upon. 

In the first post of the series, we got you familiar with our workflow and the advantages it has brought for our team as well as for our clients. But defining the workflow of your business is not all sunshine and rainbows, especially if your goal is to be on the cutting edge in your field.

So, as promised in the first chapter, the second post of the series will take a look at the major challenges we faced when defining a workflow as unique as ours. We’ll discuss one of them in detail and present our very efficient solution to it.

The management of a team fragmented over different projects and agencies alongside the rapid growth of the company turned out to be quite challenging. We’ve had to:

  • Establish effective training programs to deal with people’s personal and professional development,
  • Find a way to monitor and control the work of developers integrated into different agencies and managed directly by the clients and their teams,
  • Promote an environment where everybody is encouraged to share their knowledge with each other to limit the skill gaps,
  • Create a system that motivates employees and maintains a strong company culture.

The first thing we had to do was establish a process for training new employees to meet requirements needed to work as independent members of the client’s team.

All freshly recruited developers are first given an initial onboarding project which involves tasks and environments that they will need later on in their work. This helps them get familiar with the practices and modules they will be using when working on actual projects with clients.

Understanding the importance of training has led us to take our best people from their projects and assign them to take over education and knowledge-sharing among new and existing developers. These dedicated mentors are available to new members of the team throughout their onboarding, offering them support and validating their tasks.

Even with such a well organized system, the training of new employees lasted from 3 to 6 months or more; but, in order to provide our customers with experienced Drupal developers, we had to find suitable long-term projects where they could improve their knowledge and skills to the level where we were confident they would meet all the expectations of our clients.

Besides onboarding new team members, the process of improving the knowledge of existing developers is constantly in progress and Agiledrop's investment in education is quite substantial. This helps us maintain the high standards we have set and it has proved to be crucial to maintaining a strong company culture based on personal growth and professional development.

One of the most prominent advantages of our investment in training and education is maintaining top-notch results despite the number of developers increasing rapidly. This has a double positive effect: the clients are satisfied and the developers are able to take pride in their work.

Of course, this was not the only challenge we had to deal with, as pointed out earlier. The next post of this series will talk about ensuring the long-term satisfaction of our clients by continuously involving ourselves in the projects and helping with their maintenance even after their launch. 

Check back early next year for chapter 3 of Agiledrop’s story!
 

Dec 24 2018
Dec 24

Droopler 1.4 is now available and you can download it right now! Personally, I’ve been testing the 1.4-rc version on Droptica’s websites for a number of weeks and I can honestly say that the new version is a great improvement in terms of editing work. Finally, creating long and beautiful websites in Drupal is a simple and pleasant affair.

Easier paragraph editing

The main content type in Droopler is paragraph-based. The Paragraphs module is – at least in my opinion – the best Drupal module geared towards easier content creation; however, when it comes to long and very long pages, editing content using Paragraphs becomes tedious and annoying. 

We looked for a solution for quite a while, and finally, we found the Geysir module. After installation, we had to make a couple of changes in the system in order to make this module work properly. After some customisation, we finally have a working Geysir module as part of our Droopler distribution. This is why starting with version 1.4, editing long pages will be a pleasure for all editors out there.

You can see an example of editing with Geysir module in the clip below.

[embedded content]

Products, services, listings

Another important change introduced in version 1.4 of Droopler is a product listing module. The module defines new content type used for creating products, sub-page listing products with filtering options and sub-pages for individual products. 

Droopler was developed to make making repeated functionalities easier, and this also includes listings. This usually concerns products, but this module can be also used for listing classifieds or job offers, as well as a portfolio and other use cases like these. The module has a multitude of use cases... And you get it for free with Droopler 1.4!

After installing Droopler, the module is disabled by default, so you will have to enable it via the module management panel in Drupal. 

How to start using Droopler? 

If you want to see what Droopler looks like, check out our demo: https://demo.droopler.com 
You can download the distribution as a package from Droopler | Drupal.org website – the distribution was downloaded more than 1300 times as of 2018.12.11!

You can also install Droopler using Composer and instructions available on GitHub. You can find them at droptica/droopler_project. 

The comprehensive description of the installation process can be found at our “Installing and Updating Droopler in a nutshell” page. 

I encourage you to test Droopler 1.4 – it is definitely worth checking out what the system looks like in its latest version and how easy it is to use for building websites.

Dec 21 2018
Dec 21

It’s official – Drupal 7 will be reaching its end of life in November of 2021. In a blog post announcing the June 2020 launch date of Drupal 9, Drupal founder and project lead, Dries Buytaert, revealed the latest roadmap for Drupal version support. 

The announcement marks an exciting milestone for the Drupal community but also starts the countdown to the end of life date for not one, but two, major versions of Drupal. With the support cycles for both Drupal 7 and 8 coming to an end in 2021, now is the time for Drupal site owners to consider what an upgrade or migration might look like for them, and to better understand the impact of these dates on the future of Drupal. 

What does end of life mean?

When a piece of software reaches its end of life date, it will no longer receive bug fixes or security updates from the maintainers. Dropping support for deprecated versions of Drupal is a way for maintainers to drive adoption toward modern platforms that leverage current technology as effectively as possible. Come November 2021, both Drupal 7 and 8 will reach end of life, but each for slightly different reasons.

In November 2021, Drupal 7 will be over 10 years old. In 2011, we were excited about the brand new iPhone 4S and Game of Thrones Season 1. Needless to say, times have changed drastically and Drupal has experienced more growth and evolution than Daenerys’ dragons.

Drupal 7 was a huge step forward when it was released, but Drupal 8 continued to push things with a complete rework of the underlying architecture and a wealth of powerful new features, including a revamped release cycle, that rendered Drupal 7 obsolete. While Drupal 7 is still supported with bug fixes and security updates, it does not receive any new core features and is definitely not the place to start a new Drupal site build. November 2021 will mark the long-overdue retirement of a piece of software that served its purpose, but is no longer able to meet the needs of a user base that demands something more robust.

Drupal 8 also reaching end of life in November 2021 marks a major milestone in the life of Drupal: only one major release will be supported for the first time ever. However, this is happening for a much different reason than the depreciation of Drupal 7.

an illustration of the Drupal version support roadmapImage Courtesy of Dries Buytaert

Thanks to the major architectural rework that took place in Drupal 8, Drupal 9 will essentially be Drupal 8’s final form. This means that Drupal 9 is the next step in the evolution of Drupal 8 and it can simply be included as part of a global Drupal release cycle, rather than something that needs its own special treatment. The impact of this change on site owners and the general longevity of Drupal websites is monumental.

For the first time ever, upgrading to a new major version of Drupal will not require a ground-up rebuild.

Assuming Drupal core and all of its dependencies have been kept up to date, migrating from Drupal 8.8.x to Drupal 9, should not be all that different from updating Drupal 8.7.x to Drupal 8.8.x.

Why is this a good thing?

While this could potentially be a painful transition for many Drupal 7 site owners, the upside of a Drupal 8 migration is larger than it has ever been. Drupal 8 is a modern, stable platform that is capable of handling massive websites with huge amounts of complex functionality, and that platform will no longer be hindered by the stagnation that can occur when the user base knows that a new major release is on the way with no backwards compatibility. This means site owners and module maintainers alike have a much clearer roadmap for how future releases of Drupal impact them, and that roadmap allows for more innovation without the concern of a full rebuild due to the incompatibility of a future major release.

Additionally, knowing the end of life date of Drupal 7, and the release date of Drupal 9, gives Drupal 7 site owners significantly more time to plan their migration than any other major release has allowed. Given that we are currently a little less than three years out from this date, there is ample time to secure budget and plan for a long-term investment in Drupal, knowing that your new site will be compatible with future major releases of Drupal.

When should I upgrade?

At the very least, you should be starting the planning process for your Drupal 8/9 migration now. Drupal 8 is, and has been, ready for prime time for quite a while. At Elevated Third, we’ve been building exclusively on Drupal 8 since May of 2016 and we’ve had no reason to look back. The Drupal core contributors have committed to a release cycle that will facilitate a much more sustainable life cycle for Drupal site owners, who can rest easy knowing that consistent maintenance will allow a well-built site a huge amount of longevity. 

Dec 21 2018
Dec 21

This blog has been re-posted and edited with permission from Dries Buytaert's blog.

Drupal 8 has been growing 40 to 50 percent year over year. It's a healthy growth rate. Regardless, it is always worth exploring how we can continue to accelerate that growth.

Earlier this week, I wrote about the power of removing obstacles to growth, and shared how Amazon approaches its own growth blockers. Amazon identified at least two blockers for long-term growth: (1) shipping costs and (2) shipping times. For more than a decade, Amazon has been focused on eliminating both. They have spent an unbelievable amount of creativity, effort, time, and money to eliminate them.

In that blog post, I promised to share my thoughts around Drupal's own growth barriers. What obstacles can we eliminate to fuel Drupal's long-term growth? Well, I believe the limitations to Drupal's growth can be summarized as:

  1. Make Drupal easy to evaluate and adopt
  2. Make Drupal easy for content creators and site builders
  3. Reduce the total cost of ownership for developers and site owners
  4. Keep Drupal relevant and impactful
  5. Promote Drupal and help Drupal agencies win

For those that have read my blog or watched my DrupalCon keynote presentations, none of these will come as a surprise. Just like Amazon's examples, fixing these obstacles have been, and will be, multi-year efforts.

A mountain images with 5 product strategy tracks leading to the top

Drupal's five product strategy tracks. A number of current initiatives is shown on each track.

1. Make Drupal easy to evaluate and adopt

We need to make it easy for more people to try Drupal. To help evaluators explore Drupal's possibilities, we improved the download and installation experience, and included a demonstration site with core. We made fantastic progress on this in 2018.

Now that we have improved the evaluator experience, I'd love to see us focus on the "new user" experience. When you put yourself in the shoes of a new Drupal user, you'd still find it hard to set up a local development environment. There are too many options, too little direction, and no one official way for how to get started with Drupal. The "new user" is not receiving enough attention, and that slows adoption so I'd love to see us focus no that in 2019.

2. Make Drupal easy for content creators and site builders

One of the most powerful trends I've noticed time and time again is that simplicity wins. People expect software to be functionally powerful and easy to use. This is especially true for content creators and site builders.

To make Drupal easier to use for content creators and site builders, we've introduced WYSIWYG and in-place editing in Drupal 8.0, and now we're working hard on media management, layout building, content workflows and a new administration and authoring UI.

A lot of these initiatives add tools to the UI that empower content creators and site builders to do more with less code. Long term, I believe that we need to more of these "no-code" or "low-code" capabilities in Drupal.

3. Reduce the total cost of ownership for developers and site owners

Developers want to be agile, fast and deliver high quality projects that add value for their organization. Developers don't want their tools to get in the way.

For Drupal this means that they want to build sites, including themes and modules, without being bogged down by complex upgrades, expensive migrations or cumbersome developer workflows.

For developers and site owners we have made upgrades easier, we adopted a 6-month innovation model, and we extended security coverage for minor releases. This removes the complexity from major upgrades, gives organizations more time to upgrade, and allows us to release new capabilities more frequently. This is a very big deal for developer and site owners!

In addition, we're working on improving Drupal's Composer support and configuration management capabilities. This will help developers automate and streamline their day-to-day work.

Longer term, improved Composer support could act as a stepping stone towards automated updates, which would be one of the most effective ways to free up a developer's time.

4. Keep Drupal relevant and impactful

The innovation in the Drupal ecosystem happens thanks to Drupal contributors. We need to attract new contributors to Drupal, and keep existing contributors excited. This means we have to keep Drupal relevant and impactful.

To keep Drupal relevant, we've been investing in making Drupal an API-first platform for many years now. Headless Drupal or decoupled Drupal is one of Drupal's competitive advantages. Drupal's web service APIs allow developers to use Drupal with their JavaScript framework of choice, push content to different channels, and better integrate Drupal with different technologies in the marketing stack.

Drupal developers can now do unprecedented things with Drupal that weren't available before. JavaScript and mobile application developers have been familiarizing themselves with Drupal due to its improved API-first capabilities. All of this keeps Drupal relevant, ensures that Drupal has high impact, and that we attract new developers to Drupal.

5. Promote Drupal and help Drupal agencies win

While Drupal is well-known as an Open Source project, there isn't a deep understanding of how Drupal is evolving or how Drupal compares to its competitors.

Drupal is improving rapidly every six months with each new minor version release, but I'm not sure we're getting that message out effectively. We need to promote our amazing progress, not only to everyone in the web development community, but also to marketers and content managers, who are now often weighing in heavily on CMS decisions.

We do an incredible job collaborating on code — thousands of us are helping to build Drupal — but we do a poor job collaborating on marketing, education and promotion. Imagine what could happen if these thousands of individuals and agencies would all collaborate on promoting Drupal!

That is why the Drupal Association started the Promote Drupal initiative, and why we're trying to rally people in the community to work together on creating pitch decks, case studies, and other collateral to promote and market Drupal.

Here are a few things already happening:

  • There is an updated Drupal Brand Book for organizations to follow as they design Drupal marketing and sales materials.
  • A team of volunteers is creating a comprehensive Drupal pitch deck that Drupal agencies can use as a starting point when working with new clients.
  • DrupalCon will have new Content & Digital Marketing Track for marketing teams responsible for content generation, demand generation, user journeys, and more; and a "Agency Leadership Track" for those running Drupal agencies.
  • We will begin work on a competitive comparison chart — contrasting Drupal with other CMS competitors like Adobe, Sitecore, Contentful, WordPress, Prismic, and more.
  • A number of local Drupal Associations are hiring marketing people to help promote Drupal in their region.

Just like all open source contribution, it takes many to move things forward. So far, 40 people have signed up to help with these marketing efforts. If your organization has a marketing team that would like to contribute to the marketing of Drupal, check out the Promote Drupal initiative page and please join the Promote Drupal team.

Educating the world about how Drupal is evolving, the amazing use cases we support, and how Drupal compares to old and new competitors will go a very long way towards raising awareness of the project and growing the businesses built on and around Drupal.

Final thoughts

After talking to hundreds of Drupal users and would-be users, as well as dozens of agency owners, I believe we're working on the right things. Overcoming these growth obstacles are multi-year efforts. While the various initiatives might change, I believe we'll keep working on these four tracks for the next decade. We've been making steady progress the last few years but need to remain both patient and committed to driving them home. Just like Amazon continues to work on their growth obstacles after more than a decade, I expect we'll be working on these four obstacles for many years to come.

File attachments:  product-strategy-mountain-december-2018.jpg
Dec 21 2018
Dec 21

Drupal's long-term growth obstacles and our strategy and current initiatives to overcome them.

Drupal 8 has been growing 40 to 50 percent year over year. It's a healthy growth rate. Regardless, it is always worth exploring how we can continue to accelerate that growth.

Earlier this week, I wrote about the power of removing obstacles to growth, and shared how Amazon approaches its own growth blockers. Amazon identified at least two blockers for long-term growth: (1) shipping costs and (2) shipping times. For more than a decade, Amazon has been focused on eliminating both. They have spent an unbelievable amount of creativity, effort, time, and money to eliminate them.

In that blog post, I promised to share my thoughts around Drupal's own growth barriers. What obstacles can we eliminate to fuel Drupal's long-term growth? Well, I believe the limitations to Drupal's growth can be summarized as:

  1. Make Drupal easy to evaluate and adopt
  2. Make Drupal easy for content creators and site builders
  3. Reduce the total cost of ownership for developers and site owners
  4. Keep Drupal relevant and impactful
  5. Promote Drupal and help Drupal agencies win

For those that have read my blog or watched my DrupalCon keynote presentations, none of these will come as a surprise. Just like Amazon's examples, fixing these obstacles have been, and will be, multi-year efforts.

A mountain images with 5 product strategy tracks leading to the topDrupal's five product strategy tracks. A number of current initiatives is shown on each track.

1. Make Drupal easy to evaluate and adopt

We need to make it easy for more people to try Drupal. To help evaluators explore Drupal's possibilities, we improved the download and installation experience, and included a demonstration site with core. We made fantastic progress on this in 2018.

Now that we have improved the evaluator experience, I'd love to see us focus on the "new user" experience. When you put yourself in the shoes of a new Drupal user, you'd still find it hard to set up a local development environment. There are too many options, too little direction, and no one official way for how to get started with Drupal. The "new user" is not receiving enough attention, and that slows adoption so I'd love to see us focus no that in 2019.

2. Make Drupal easy for content creators and site builders

One of the most powerful trends I've noticed time and time again is that simplicity wins. People expect software to be functionally powerful and easy to use. This is especially true for content creators and site builders.

To make Drupal easier to use for content creators and site builders, we've introduced WYSIWYG and in-place editing in Drupal 8.0, and now we're working hard on media management, layout building, content workflows and a new administration and authoring UI.

A lot of these initiatives add tools to the UI that empower content creators and site builders to do more with less code. Long term, I believe that we need to more of these "no-code" or "low-code" capabilities in Drupal.

3. Reduce the total cost of ownership for developers and site owners

Developers want to be agile, fast and deliver high quality projects that add value for their organization. Developers don't want their tools to get in the way.

For Drupal this means that they want to build sites, including themes and modules, without being bogged down by complex upgrades, expensive migrations or cumbersome developer workflows.

For developers and site owners we have made upgrades easier, we adopted a 6-month innovation model, and we extended security coverage for minor releases. This removes the complexity from major upgrades, gives organizations more time to upgrade, and allows us to release new capabilities more frequently. This is a very big deal for developer and site owners!

In addition, we're working on improving Drupal's Composer support and configuration management capabilities. This will help developers automate and streamline their day-to-day work.

Longer term, improved Composer support could act as a stepping stone towards automated updates, which would be one of the most effective ways to free up a developer's time.

4. Keep Drupal relevant and impactful

The innovation in the Drupal ecosystem happens thanks to Drupal contributors. We need to attract new contributors to Drupal, and keep existing contributors excited. This means we have to keep Drupal relevant and impactful.

To keep Drupal relevant, we've been investing in making Drupal an API-first platform for many years now. Headless Drupal or decoupled Drupal is one of Drupal's competitive advantages. Drupal's web service APIs allow developers to use Drupal with their JavaScript framework of choice, push content to different channels, and better integrate Drupal with different technologies in the marketing stack.

Drupal developers can now do unprecedented things with Drupal that weren't available before. JavaScript and mobile application developers have been familiarizing themselves with Drupal due to its improved API-first capabilities. All of this keeps Drupal relevant, ensures that Drupal has high impact, and that we attract new developers to Drupal.

5. Promote Drupal and help Drupal agencies win

While Drupal is well-known as an Open Source project, there isn't a deep understanding of how Drupal is evolving or how Drupal compares to its competitors.

Drupal is improving rapidly every six months with each new minor version release, but I'm not sure we're getting that message out effectively. We need to promote our amazing progress, not only to everyone in the web development community, but also to marketers and content managers, who are now often weighing in heavily on CMS decisions.

We do an incredible job collaborating on code — thousands of us are helping to build Drupal — but we do a poor job collaborating on marketing, education and promotion. Imagine what could happen if these thousands of individuals and agencies would all collaborate on promoting Drupal!

That is why the Drupal Association started the Promote Drupal initiative, and why we're trying to rally people in the community to work together on creating pitch decks, case studies, and other collateral to promote and market Drupal.

Here are a few things already happening:

  • There is an updated Drupal Brand Book for organizations to follow as they design Drupal marketing and sales materials.
  • A team of volunteers is creating a comprehensive Drupal pitch deck that Drupal agencies can use as a starting point when working with new clients.
  • DrupalCon will have new Content & Digital Marketing Track for marketing teams responsible for content generation, demand generation, user journeys, and more; and a "Agency Leadership Track" for those running Drupal agencies.
  • We will begin work on a competitive comparison chart — contrasting Drupal with other CMS competitors like Adobe, Sitecore, Contentful, WordPress, Prismic, and more.
  • A number of local Drupal Associations are hiring marketing people to help promote Drupal in their region.

Just like all open source contribution, it takes many to move things forward. So far, 40 people have signed up to help with these marketing efforts. If your organization has a marketing team that would like to contribute to the marketing of Drupal, check out the Promote Drupal initiative page and please join the Promote Drupal team.

Educating the world about how Drupal is evolving, the amazing use cases we support, and how Drupal compares to old and new competitors will go a very long way towards raising awareness of the project and growing the businesses built on and around Drupal.

Final thoughts

After talking to hundreds of Drupal users and would-be users, as well as dozens of agency owners, I believe we're working on the right things. Overcoming these growth obstacles are multi-year efforts. While the various initiatives might change, I believe we'll keep working on these four tracks for the next decade. We've been making steady progress the last few years but need to remain both patient and committed to driving them home. Just like Amazon continues to work on their growth obstacles after more than a decade, I expect we'll be working on these four obstacles for many years to come.

December 21, 2018

5 min read time

Dec 21 2018
Dec 21

Continuous Delivery - A trending word in the world of technology. Continuous Delivery(CD), along with Continuous Integration(CI), is becoming a popular term even with the non-technical people. And hence, every IT company is seeing a flood of clients coming with the demand of both of them. Both of these techniques - CI/CD are closely associated with the quality-oriented work methodologies - Agile and DevOps. And so are we!

Team AddWeb has been for years been associated with and following Agile and DevOps. Just as we’re associated with Drupal. No wonder, we have been ardently following continuous delivery with Drupal for years now. So let us first throw some light on this popular concept of ‘Continuous Delivery with Drupal’.

What is Continuous Delivery?

Continuous Delivery is a process of automatically deploying all your changes made on development stage, directly to the production stage. This kind of delivery is done by accepting all the unit-cases followed by coding standards. Once the code is merged with the stage branch from the development branch, the same stage branch also gets an automatic update with the help of Jenkins and git-webhook, which is triggered by merging the branches. A similar process of automatic delivery is also followed on the production site; where the code is merged with the master branch from stage branch, which is later deployed to the production servers.

Team AddWeb, as we mentioned previously, has been persistent followers of CD with Drupal via Jenkins, Ansible, and RocketChat. We believe, in today’s day and age, CD, and CI hold so much of significance because one can define repetitive tasks for one time and then on every build the same mentioned steps will run in order to update the new content. And when we speak of so much so of its importance, let us also share the tools, block diagram and process that we, at AddWeb, choose to follow for Continuous Delivery.

CD/CI Tools Used by Team AddWeb:

There are multiple tools that can we used to follow the process of Continuous Delivery. Let us share the ones that we, at AddWeb, have been using for years. You can consider this as a recommendation from us, for the amount of experience we hold in using them successfully for all these years.

  1. Git

  2. Docker

  3. Jenkins

  4. Ansible

  5. Rocket-chat

Block Diagram Used by Team AddWeb:

Just as a picture is worth a thousand words, a diagram for us - the techies, is worth a hundred written words. We at AddWeb, do understand and empathise with this fact and hence, here’s the block diagram that we personally use for Continuous Delivery.

Process Followed by Team AddWeb:

Every developer has their own process to be followed for Continuous Delivery. Here’s the one that team AddWeb choose to follow:

  1. As soon as the developer pushes code into the git repo, a webhook will be triggered. This will call Jenkins, which will further run the Ansible playbooks. These Ansible playbooks comprise of the code of delivery process, which is eventually followed by sending a push notification to the RocketChat server once the code is successfully built. One also receives this push notification in case of built failure condition.
     

  2. Pipeline code is written in Ansible playbook for a continuous delivery process:
    - Create a backup of code and database
    - Pull the latest code on the server by git pull
    - Run composer install for Drupal-8 sites to install new modules, libraries
    - Run drush updb -y
    - Run drush cim -y
    - Run drush cr
    - Send notification of successful build or failed build job details into Rocketchat

Hope the overall understanding and the provided guideline regarding the much-talked about and significant Continuous Delivery has proven helpful to you. In case, you have something to add on to the above information or even correct anything, feel free to contact us. Also, you can share what do you want us to share in our next blog. We’re all ears for suggestions and recommendations.

Dec 20 2018
Dec 20

Over the past five years, to meet the growing velocity in Drupal 8 core development and facilitate a more mature release process, we've gradually grown the Drupal 8 core committer team from two people to four, then six, then twelve people.

We've reached a team size where we'd benefit from additional team members whose primary focus is helping the committer team function more effectively, through facilitating process; communicating with other maintainers, initiative teams, and the community; and organizing meetings and discussions.

To this end, the core team is adding two additional roles to our governance (more details behind the link):

  • A committer team facilitator role, responsible for helping organize and run committer discussions. The committer team facilitator supports the committer team in the team's priorities (but does not set these priorities). This important project management assistance will allow the core committer team to spend more time reviewing and committing patches, which will increase the quality and speed of improvements.
  • A core initiative facilitator role, responsible for supporting core initiative teams across initiatives and helping initiative coordinators. This is a very important role because it helps initiative teams to deliver software that meets end user needs and brings better community awareness to the efforts going on within initiatives.

Both roles are estimated to be a 10-15 hour/month commitment, and we're suggesting a renewable one year term for each.

Adding project management backing to the team will help us be more effective, and to better focus on those roles and tasks that only committers can do. I'm excited about this direction, as it embodies our principle of everyone has something to contribute, valuing non-technical contributions at the same level as technical contributions by making these roles a formal part of the committer team.

If you're interested in one or both of these new roles, please get in touch!

Dec 20 2018
Dec 20

Travis Carden, (traviscarden), Senior Software Engineer at Acquia joins Mike Anello to talk about the spreadsheet-based Drupal Spec Tool, a very cool tool that allows teams to specify different parts of a Drupal site and then generates diagrams and Behat tests.

Interview

DrupalEasy News

Upcoming events

Sponsors

  • Drupal Aid - Drupal support and maintenance services. Get unlimited support, monthly maintenance, and unlimited small jobs starting at $99/mo.
  • WebEnabled.com - devPanel.

Follow us on Twitter

Subscribe

Subscribe to our podcast on iTunes, Google Play or Miro. Listen to our podcast on Stitcher.

If you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our contact page.

Dec 20 2018
Dec 20
Completed Drupal site or project URL: https://www.wildlifetrusts.org

For over 100 years The Wildlife Trusts (TWT) have been caring for Britain's wildlife. This UK-wide group of local wildlife charities now looks after 2,300 nature reserves, supported by a combined 800,000+ members, The Wildlife Trusts' UK website acts as a central hub for 46 local trusts, by managing content on nature reserves, volunteering, events, and member activities across the country.

TWT appointed CTI Digital as supplier to deliver a new Drupal 8 based platform for the nationwide web site and to act as framework for bringing local trusts into a single harmonised system.

Pages

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web