Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough
May 10 2020
May 10

“A pessimist sees the difficulty in every opportunity; An optimist sees the opportunity in every difficulty.” 
- Winston Churchill

On the left side: On a blue background, a man sitting with his laptop and working in the day time. On the right side: Black background, a man playing his DJ equipment at night time.


In a world where everyone is running after success, only a few take the advantage and grab the opportunity that life gives them, to achieve it. The ones who are ready for every kind of challenge, are the ones who achieve success. Capitalizing that opportunity is where the key lies! 

At OpenSense Labs, we have someone who believes that when opportunity knocks, grab it, and success will find its way. Deepak Sagar, known as Sagar, who is currently a Drupal developer with us, has a very interesting story. He went on from being a DJ in his initial college days to a developer later on. His story will definitely inspire you to have a keen eye for every opportunity that knocks your door.

"Partying is like work for me"

Tuba: So, the first thing that I'd like to know is, how was your life as a DJ and why did you choose DJ-ing?

Sagar: My Life as a DJ is not over, I'm still a DJ. There is a story behind why I chose to become a DJ. During my graduation, a DJ came to my college to play in the college fest. And I went up to him and asked him general questions about his DJ-ing equipment and his response triggered me to learn about the equipment. He said, ‘you won’t understand, let it be.’ It’s a short story, but I felt really bad at that moment and started learning DJ-ing from my cousin who is also a DJ. There were a lot of ups and downs as a DJ in the beginning. I got some work for 2 months and then there was a long gap until I got another job. Now, partying is like work for me.

A person working on his DJ equipment.


Tuba: You are still a DJ, how do you manage both your office life and DJ life?

Sagar: I leave for the office in the morning and after I'm done with the office, I go to the club I work for. I leave for office at around 9:30 AM in the morning and leave the office around 7:00 PM and directly go to the club and leave the club around 1:30 AM and sleep around 3:00 AM and then again the same routine from the next day.

Tuba: Now the big question, why the transition from a DJ to a developer? What triggered your interests towards Drupal?

Sagar: I had nothing to do during the day. I worked as a part-time DJ at a club at night. Vid (CEO at OpenSense Labs) and Devanshu used to visit that club very often. One day, I was just having a casual conversation with them where I told them that I had nothing to do during the day and was looking for something. They asked me to come to their office the next day. I went there, and since that day I tried my best to learn everything about Drupal. I started with them in September as an intern and joined full time as a Frontend Developer in January. I was completely new to Drupal and I had no idea about it or CSS or HTML before. It took time to understand but slowly things came inflow. 

Tuba: And what would you say about your post-Drupal experience?

Sagar: Drupal is a life-changing experience for me. A new opportunity that came in my life and I gained an interest in it. There is something about Drupal that I can't explain. It's the same as your first love, it's almost the same feeling. I guess this is the right example. [Laughter]

Tuba: So what are your plans for the future now? I mean, is it always going to be both the things together?

Sagar: Although both things are going in the flow right now, there is going to be a time where I'll have to choose between the two. So when it comes to choosing, it's going to be hard. But I guess I'm going to choose to be a DJ because it is my first love. [Laughter] Also, there is no scope of a DJ in India. People here think of a DJ as someone who would play music at weddings and nothing more. Not a lot of people value this profession here. So if someday, I get an opportunity from a different country where people value it, I’ll go for it. And about development, that can be done remotely also. But for DJing, I'll have to be present in that place to play. 

Tuba: Great! So let's talk about the two moments - one was when you decided that ok, let's learn Drupal and the second when you became a professional developer.

Sagar: As a DJ, it's all about working at night mostly. So I decided that let's do something in the day time, and this opportunity knocked my door and that's when I thought of giving it a try. I have not lived my life in a planned way ever. It has always been sudden decisions that have led me to where I am. I had no plans of being a DJ. It was a sudden decision and it was the same with development also. I had no plan and no idea about it. But it was a great opportunity and I did my best to learn and I'm happy being a developer now. My life-changing moment was when Vid and Devanshu and also Vinit offered me to come to the office. They welcomed me to the office very nicely. Vid used to discuss and solve all my problems for me. 

Tuba: Thank you so much for your time, Sagar. I was really excited to know the story behind your journey. And I believe, that after reading your story, many would be inspired to do more to reach their life goals.  

Think, Believe, Dare, and Dream! Say yes to all the opportunities that come your way and figure out the required plans later. You need to be visionary enough to recognize the opportunity that comes your way. This is the message that Sagar's story has conveyed and we hope that it proves to be the turning point in the lives of our readers! 

May 09 2020
May 09

I talk a lot about the Cloud.  In fact if I were doing shots every time I mentioned the word, I'd probably be facedown on my desk by 9AM.  Like many buzzwords in the C-Suite there's a lot of excitement and confusion around the term.  Unlike some other buzzwords, this movement really is so important it will change the way we all live and work forever.

Cloud is not the first (and probably not the last) disruptor to business via software.  Over the past 50 years or so there have been four major epochs of software, with Cloud being the latest:

  1. Commercialization
  2. Open Source
  3. SaaS
  4. The Cloud

Commercialization

The first major change in software after it was invented was the consolidation of software from disparate bits of code that were being written into commercialized software that could be sold to businesses and consumers alike.  The major ERP providers (Oracle, SAP, Microsoft) and many other companies were founded during this era (Oracle 1977, Microsoft 1975, SAP 1972) - and over the next 3 decades commercial software was sold into business resulting in tremendous consolidation and wealth creation for the players involved.  The peak output of this era was the creation of the ERP, an acronym so widespread in corporate America that few people even in the industry can tell you what it stands for off the top of their head (it's Enterprise Resource Planning).  ERP software in theory is software "to rule them all", which handles every corner of what is required to run a business.

Open Source

Microsoft: join us or dieThen in the late 80s, Richard Stallman launched the GNU Project - a licensing arrangement designed to make software free and easy to share.  The term "Open Source" wasn't coined until the late 90s around the time the code for the internet browser Netscape Navigator was released to the public.  For those not around at the time many nerds (myself included) were in full revolt against the "Evil Empire" of Microsoft whose dominance in Operating Systems, consumer and business software alike made them appear like the unstoppable force that Amazon appears to be today.

During this time there were a number of advancements in software: open source languages (eg, php) evolved to support frameworks (eg, Zend), frameworks in turn gave way to open source platforms (eg, Drupal).  The mood from the late 90s well into the decade that followed was a jubilant wave of enthusiasm: for proponents, there was no problem that open source software couldn't solve - and even better, the code was free!

The first cracks in the open source approach appeared during the upgrade cycles of the most well developed platforms.  In many systems, great care was taken to "preserve the upgrade path" with the intention that the underlying code should be able to be replaced with a minimal impact to application. In other systems less care was applied here, but no matter the approach the net result was the same: upgrading was more difficult and expensive than the initial build.  The reasons here are only obvious in hindsight: when upgrading not only did you need to write the custom code, and migrate your existing content over, but you also needed to add enough functionality to rationalize a major re-investment to replace something that already existed.

SaaS

In the late 2000s just as the shine was coming off Open Source, the Software as a Service market was coming into full bloom.  If the problem with Open Source was the cost of code ownership, why not lease it instead?  Costs for hosting had dropped significantly, the internet was everywhere, all the time, and the software itself (thanks to Open Source) had become a lot cheaper and easier to build.  The secrets for SaaS products were the ability to build and sell code at scale.  In the CMS space, DIY projects like WordPress and Drupal came under fire from products like SquareSpace and Adobe Experience Manager; Open Source CRM projects faced more challenges from SaaS providers like Salesforce and dozens of other smaller applications.  Even accounting software (never really Open Source) started to cannibalize their own user base by moving to online versions.  For existing software manufacturers it was an opportunity to convert single one-time purchases into recurring revenue streams that would last *forever*.  For many large Open Source projects and communities, it was a bloodbath.  In some cases the pull to SaaS was so strong that former benevolent corporate sponsors walked away with Open Source code and completely rebranded leaving some Open Source developer communities dazed, confused - and angry.

As a service provider who prides ourselves on making the best recommendations for our customers, we couldn’t deny the value that existed on these platforms for many of our customers, conceptually being aligned to a software platform with a robust roadmap just made sense.  As a result, there were a number of areas - video streaming, CMS, CRM - where we moved away from full software builds, or helped with product selection and consulting instead.

The Cloud

Metal Toad at the EmmysMetal Toad at the Emmys

Way back in 2009 we won our first hosting client - the website for the Primetime Emmys.  The scale required was big and the visibility was high, so we setup a small cluster of big, beefy, physical servers in a physical facility to host the website - and it worked.  We hosted the website for several years with 0 downtime (thanks lots of hard work by a smart team and Akamai CDN), and even though AWS had also launched in 2006 we never thought of moving the site there.  Back then I was fond of saying “the Cloud will be great someday, but not today”.  For us, someday came in 2011, with a high profile rebuild of a new website.  The code was released to us 1 week before a major televised event and the new code required a major increase in the required hardware to get to proper performance.  The short timeline meant we simply couldn’t purchase the physical hardware required and rack it in time.  In a Hail Mary attempt to get things across the finish line we set up the site on AWS, held our breath… and it worked perfectly.  From that point on we were true cloud converts.  “Someday” had arrived and the Cloud was great.

For a number of years after that, the Cloud was a cost-effective place to get storage and compute cycles.  The worst part about it was the pricing: Amazon kept dropping the price, a penny per hour at a time.  Google and Microsoft joined the fray in (2008 and 2010 respectively), and more and more traditional hosting providers (Rackspace, etc) started offering their own brand of cloud.  Virtualization was in full vogue and the marketplace was vibrant and varied.

Then with the launch of Lambda in 2015, things shifted again.  You didn’t need to reserve computing power for months, weeks, days or even hours - you could buy in milliseconds.  This shift had profound implications not only for the costs of hosting, but for the promise of how software itself should be built.  The concept of serverless architecture started driving discussions and capturing the imagination of developers - cloud applications spun up on demand using only the resources required, and freeing them up as soon as they were no longer needed.  If fully implemented, rebuilding the software in use today there’s no doubt billions of hours of compute time and associated watts of energy could be freed up - and that’s just the tip of the iceberg.  The AWS cloud now features over 120 products and services including compute cycles optimized for machine, video, AR/VR, IoT, voice, analytics - and even satellite.

By comparison, the promise of SaaS has gone stale.  Years of deferred investment on software roadmaps, maximizing profits, marketing fluff, and walled garden philosophies have left many SaaS providers in a state of high technical debt and high pricing.  The Cloud is going to eat them for lunch.  By way of example, back in 2003 I built a video transcoding engine (using an Open Source project).  The experience was a labor intensive, painful one, so in 2006 when the scores of SaaS video management platforms were released, I readily endorsed them for my customers - Brightcove, Kaltura, Ooyala - they were all better than my home spun system.  Now more than a decade later, many of these systems have fallen behind the times and include many features that customers simply don’t want.  On the cloud front, AWS Elemental offers a-la-carte video features on cloud instances optimized for various functions.  I’m also aware of not 1 but 3 large entertainment companies currently looking at overhauling how they manage video.  And that’s just one small corner of what’s possible!

The Cloud is changing how all software should - and will - be built.  Software is no longer a cost center or a need-to-have for most corporations, but rather a critical part of their customer experience and value chain.  If your competitors allow customers to buy online and you do not, you are in trouble.  If your competitors’ software costs are less than yours and this allows them to beat you on pricing, you are in trouble.  Most of the software in use in the world right now is old, clunky, out-dated, built on aging, poorly architected infrastructure.  For the visionary CEO, this presents an unparalleled opportunity; and for the luddite this is an existential threat.  It’s likely that a full shift to Cloud will take decades, but it will impact everyone.  If you haven’t looked at how your company’s and industry’s software will be impacted - it’s high time to elevate it in your priority list.  The Cloud is coming for all of us.

May 08 2020
xjm
May 08

In order to best resolve some packaging, dependency, and upgrade path issues that have come to our attention in the past week, we're extending the release windows for the following releases to the week of May 11:

  • 8.8.6 (final normal bugfix release of 8.8, which has security coverage afterward until December 2020)
  • 8.9.0-rc1
  • 9.0.0-rc1

The scheduled release date for 9.0.0 and 8.9.0 remains June 3. We will share another announcement with the community once 9.0.0-rc1 is available for testing.

May 08 2020
May 08

As many of us in the Drupal community are entering the second month of physical and social distancing, it is important to take a break from our - often repetitive - day-to-day activities to spend some time on self-care. This not only helps ourselves, but also those around us. With this in mind, the CWG’s Community Health Team has compiled a list of activities that can help all of us cope with everyday stresses a little better.

The team has prepared a presentation with some strategies to support our wellbeing during this challenging time.  Join us on May 22 for a Wellbeing Hour with Dr. Michelle Drapkin, the newest member of our Community Health Team.

Take a break from the digital world

Breathe. Go outside, sit at the window, stand on your balcony. Break up your day. Fresh air and sunshine can help you to recharge and be more focused when you return to the computer. Exercise can help reduce anxiety and tension, improve mental outlook, and create some mental peace. 

Keep Learning

Use this time to hone your skills. Take some classes, attend meetups, and other virtual events. Many companies and organizations have lowered the cost of their classes or established curriculums that can be accessed at a lowered cost or for free.

Exercise Caution Online

Equipping ourselves with accurate information can go a long way in keeping our anxiety levels low. Be sure to get information from trusted, reliable outlets that back up analysis with data that’s been vetted or verified by official sources. Social media can be a wealth of misinformation, and it’s important to validate what you see online before acting on it or sharing it with others.

Give Back

Giving back has many benefits, but first and foremost it feels good. Not only does giving back make an impact, but it also builds and makes our community stronger, and makes our projects better and more complete. When we mentor, share our expertise, we not only build other’s skills, but we also sharpen our own. By being leaders, we add to our street cred and contribute to our professional growth and development

Take it Easy On Yourself

It’s perfectly okay not to hold yourself to your usual standards of productivity right now. Balancing personal and professional life is harder than usual right now, and many of us are working in environments that are full of distractions. Communicate with your colleagues, let them know how you’re doing, and make arrangements to adjust your working hours and expectations as needed so that you can be your best self both personally and professionally.

Ask for help

You are not alone in needing some additional support, and there is never shame in asking for help. Stress is affecting our sleeping and eating patterns, our work habits, the ways we are interacting with those closest to us.

Call your local public health department or insurance company for resources. While going to an in-person appointment may not be possible, many therapists and counselors offer on-line or telehealth services.

Resources

News

Mental Health Call Centers

  • Disaster Distress Helpline, call 1-800-985-5990, or text TalkWithUs to 66746
  • National Domestic Violence Hotline, call 1-800-799-7233 and TTY 1-800-787-3224
  • We are looking for suggestions for non-US-based mental health resources to include here.

Giving back to Drupal

Drupal Events

May 07 2020
May 07

Today's guest post by Matt Westgate, CEO of Lullabot, is the next installment in our #DrupalCares series. My thanks to Matt and the Lullabots for sharing what the Drupal Association means to them.

It’s hard to believe that a little over a month ago, we were in DrupalCon planning mode. No one expected the Drupal community’s biggest event to come to a halt any more than we anticipated our lives totally changing due to a pandemic. While we’re all dealing with this new, and hopefully very temporary, normal, it’s more important than ever to keep things moving forward personally and professionally.

When it was clear that DrupalCon would most likely not happen this year, we decided to pledge our sponsorship dollars to the Drupal Association regardless of whether or not DrupalCon ended up taking place. We’ve been part of the Drupal community since the dawn of IRC, and many of our team members actively contribute to Drupal. We understood the financial hit that would occur by not having DrupalCon and because the Drupal Association has played such an important role in our business and the community, the decision seemed like a no-brainer. Let’s face it; the Drupal Association is the hub for Drupal success.

The Drupal Association is the conduit through which everyone on my team can contribute back to Drupal. They exist so we all can participate and receive the benefits of the community and the software. Simply put, there isn’t a Drupal without them."
Matt Westgate, co-founder and CEO of Lullabot

It’s been incredibly inspiring to see so many of our fellow sponsors step forward as well. No doubt, we’re all in this together.But, there’s still more work to do. In order to continue project velocity, ensuring that we have adequate tooling, marketing Drupal, and many other activities that the Drupal Association helms, they needed to raise $500,000. Raising this amount is no easy feat, but we are almost there. We are committed to supporting this endeavor and hope you will be too.

[Editor's note: As of publication the #DrupalCares campaign is 96% to goal!]

Lullabot Contributor Stories

Olivero Theme: Mike Herchel, Senior Front-end Developer & Putra Bonaccorsi, Technical Project Manager

The idea for the new front-end of Drupal 9 (Olivero) would not have happened without the Drupal Association. We serendipitously met up with Lauri Eskoka and Angie Byron at DrupalCon Seattle (which is put on by the Drupal Association), which led to the creation of the initiative.

Furthermore, the majority of Olivero’s development has taken place on Drupal.org, which is maintained by the Drupal Association. Without this tooling, development would be disparate and communication with the Drupal community (which is vital for this project) would be ineffective. 

We were able to pitch our ideas for the redesign and development of a theme that could ship with the release of Drupal 9 by submitting our proposal to the Drupal Association's “idea issue” queue. This ideas queue section of Drupal.org let us propose ideas for Drupal core and got them through validation and planning phases, which are a big part of the success of the Olivero project.

API-First Initiative: Mateu Aguiló Bosch, Senior Developer

The API-First initiative has been very thorough with automated testing. We have created comprehensive test coverage for all sorts of actions on all of the entity types defined in Drupal core. This allowed us to add features more soundly and eventually include JSON:API in core. The whole initiative would have been negatively impacted without the testing infrastructure provided by the Drupal Association to execute the tests and provide feedback in the issue queue.

Admin UI & JavaScript Modernization Initiative: Cristina Chumillas, Front-end Developer & Sally Young, Senior Technical Architect

The Admin UI & JavaScript Modernization Initiative idea started and evolved through several DrupalCons organized by the Drupal Association, where most of the main contributors were present. Also, drupal.org has been a key tool to move forward: the kick-off ideas issue queue was key, and Claro saw a huge increase in contributions when it moved to drupal.org. Using known tools by the community and the drupal.org credit system helped increase the project’s visibility.

Something else that made a huge difference on the design side was having the Drupal Association, especially Megan Sanicki, as the Drupal Association Director at that time, backing the design team as a legitimate group of the Drupal project to get free access to Figma. This online and real-time design tool has been a key factor allowing designers to be distributed across the world and timezones.

Join us in supporting the Drupal Association

May 06 2020
May 06

Drupal 9 is going to be the easiest major version upgrade in a decade. With the release of Drupal 9, the project has proven its vision of transforming the development process with an emphasis on continuous innovation and a regular update cycle. Over the course of Drupal 8's lifecycle, we've seen this new strategy come to fruition with six-month minor releases including major feature improvements. With Drupal 9's release, we prove that major version upgrades are easier than ever before. 

D8 to What?

For the last 5 years, Drupal 8 has used its own dedicated drop logo, and as the release comes closer and closer, it's only become more important that we update the brand to help unify Drupal's identity across the ecosystem.

With Drupal 9's release less than 30 days away, we're confident that we've achieved the easy upgrade goal, and we are doubling down on that success with the new Drupal brand.

The new brand represents the fluidity and modularity of Drupal, and our community value of coming together to create a greater whole. The new logo can be used by itself, or alongside the Drupal wordmark.

This new design was chosen for its ability to represent Drupal not just at a single moment in time (for a single major release), but onward into the future. We expect to continue using this new iteration of the Drupal drop for the Drupal 9 lifecycle, through Drupal 10, and beyond.

While this continuity is the central element of this new design, there is sometimes a need to represent a specific version of Drupal. That could be for celebrating a particular release, or highlighting new features in a minor version. For that reason, the new Drupal drop may also be used with a version number at its side. 

Drupal Drop Stand Alone        Drupal Drop + Wordmark - Vertical        Drupal Drop + Version

How did we arrive at this new design?

Late last year the Drupal Association put together a request for proposals for design firms to help us develop the evergreen brand for Drupal. All of the responses we received were excellent, reflecting the incredible passion and pride in their work of the design firms that work in the Drupal space. Ultimately, we selected SixEleven who had previously helped us design the brand for DrupalCon.

Thank you, Sixeleven

We brought together a team of people to navigate this process. Dries Buytaert as project founder was joined by Drupal Association staff members Heather Rocker, Carrie Lacina, and myself, board members Audra Martin-Merrick and Suzanne Dergacheva, and longtime community leaders Angie Byron and Gábor Hojtsy.

SixEleven provided a series of initial design concepts which were reviewed by this team, each providing a different take on the classic Drupal brand. How would we emphasize human contribution? Drupal's evolutionary path? Continual innovation and growth?

Eventually we realized that we'd addressed these questions before. When working on the DrupalCon brand several years earlier we created an inner drop that represented all of these ideas, while still remaining classically and recognizably Drupal.

As many design undertakes often do, our vision suddenly came together - each drop falling into place to create the new brand. 

Brand Consistency 

When the inner drop design from the DrupalCon brand became a front-runner for the Drupal brand itself, we realized there was an important opportunity to create consistency across all of the Drupal brands.
Drupal Association         DrupalCon

As such, we've updated the Drupal Association brand as well, to use the new inner drop surrounded by our simple blue circle, representing all of the ways that the Association surrounds and supports the Drupal project. The DrupalCon brand will continue to use the drop on a colorful field of triangles, representing the diverse voices and communities we bring together with the event. 

What about the Druplicon?

The beloved community mascot hasn't gone anywhere. The new branding simply replaces the Drupal 8-specific logo that was in use for the past 5 years during Drupal 8's life cycle; it does not replace the Druplicon. The Druplicon still exists as an emblem of the Drupal Community and a mascot to be remixed and reused by local community organizations, as it has been throughout Drupal's history.

Here are just a few examples from https://www.druplicon.org/ 

Druplicon    Druplicon Remixes

Spreading the word

In the coming weeks, we'll be updating materials across Drupal.org to reflect the updated brand. We encourage you to update your own materials using the resources and brand guidelines we have made available.

We'd like to see all of the organizations that provide Drupal services, or that create software that integrates with Drupal, adopting the new brand in their own materials as well. Consistent use of the Drupal brand across the ecosystem helps us achieve the goal of creating more market recognition of the brand. Together we can spread the message of what Drupal has become. 

Download the new brand kit

May 06 2020
May 06

Drupal 8 to 9 Upgrade

With Drupal 9 just around the corner, there's more and more buzz about preparing for the upgrade. From a project planning perspective, what do organizations need to consider when planning for the Drupal 9 upgrade? Developers may be wondering about the technical details; how to upgrade to Drupal 9. We’ve discussed who should upgrade to Drupal 9 and when to upgrade to Drupal 9. Here’s how to do it.

Drupal 9 Upgrade Project Planning

Plan a release window

Drupal 9 is currently slated for release in June 2020. However, Drupal 8.9.x is scheduled to reach end-of-life in November 2021, with older versions, such as 8.7.x slated to stop receiving security support in June 2020. You first need to plan a release window to upgrade to Drupal 8.9.x during this timeframe to make sure your site is upgraded before the older Drupal versions are no longer supported. Once on Drupal 8.9, you can perform and release all the preparatory work described below. After that, you’ll be ready to plan a release window for the final upgrade to Drupal 9. 

For more on planning a release window, check out Drupal 8 Release Planning in the Enterprise. Remember to factor in other development work, updates for the rest of your stack, and other ongoing development projects, and give yourself plenty of time to complete the work.

Scope the upgrade project

To scope the upgrade project, you'll need to consider a handful of factors:

  • Deprecated code that must be updated
  • Other development work that you'll do as part of the upgrade project

We'll dive deeper into how to check for and correct deprecated code and APIs shortly, but first, let's take a look at other development work you might do as part of the upgrade project.

Solicit feature requests from stakeholders

Does your website deliver stakeholder-required features using contributed modules that haven't yet been updated for Drupal 9? Do your key stakeholders want new features to better serve site users, or meet business objectives? 

For many organizations, major Drupal replatforming efforts have provided a cadence for other website development work, including new feature development. If it's been a while since your organization checked in with stakeholders, now might be a good time to do that. 

Regardless of whether or not you plan to deliver new feature development in the Drupal 9 upgrade project, it's a good idea to make sure you won't lose Drupal 8 contributed modules that provide the functionality your stakeholders can't live without - unless you've got a new way to deliver that functionality in Drupal 9.

Architecture, content, accessibility audits and more

For sites that are already on Drupal 8, the Drupal 9 upgrade is different than many previous major version updates; Drupal 8 to Drupal 9 does not require a content migration, so there's no real need to do a major information architecture audit and overhaul. In this new world, organizations should look at shifting the site redesign and content architecture cadence to an ongoing, iterative model.

How to Prepare for Drupal 9

Upgrade to Drupal 8.8 or Drupal 8.9

If you haven't already updated your Drupal 8 site to the most recent version of Drupal 8.8.x or 8.9.x, that's where you must start. Drupal 8.8 is a big milestone for API compatibility; it's the first release with an API that's fully compatible with Drupal 9. Practically speaking, this means that contributed modules released prior to 8.8 may not be compatible with Drupal 9.

Beyond API compatibility, Drupal 8.8 and 8.9 introduce further bugfixes, as well as database optimizations, to prepare for Drupal 9. If you upgrade your website and all contributed modules and themes to versions that are compatible with 8.9, those parts of your site should be ready for Drupal 9. 

Platform requirements 

One change between Drupal 8 and Drupal 9 is that Drupal 9 requires a minimum of PHP 7.3. Drupal 8 recommends but does not require 7.3. There are new minimum requirements for MYSQL and MariaDB and other databases. And your Drush version, if you use Drush, must be Drush 10. If you need to update any of these, you should be able to do it while still on Drupal 8, if you like. There may be other changes to the Drupal 9 requirements in the future, so double-check the environment requirements.

Audit for conflicting dependencies

Composer manages third-party dependency updates and will update Drupal dependencies when you do Composer updates. However, if anything else in your stack, such as contributed modules or custom code, has conflicting dependencies, you could run into issues after you update. For this reason, you should check your code for any third-party dependency that conflicts with the core dependencies. 

For example, Drupal 9 core requires Symfony 4.4, while Drupal 8 worked with Symfony 3.4. If you have contributed modules or custom code that depends on Symfony 3.4, you'll need to resolve those conflicts before you update to Drupal 9. If your code works with either version, you can update yourcomposer.json to indicate that either version works. For instance, the following code in your module’s composer.json indicates that your code will work with either the 3.4 or 4.4 version of Symfony Console. This makes it compatible with both Drupal 8 and Drupal 9 and any other libraries that require either of these Symfony versions.

{
  "require": {
    "symfony/console": "~3.4.0 || ^4.4"
  }
}

If you have code or contributed modules that require incompatible versions of third party libraries and won’t work with the ones used in Drupal 9, you’ll have to find some way to remove those dependencies. That may mean rewriting custom code, helping your contributed modules rewrite their code, or finding alternative solutions that don’t have these problems.

Check for deprecated code

Sites that are already on Drupal 8 can see deprecated code using a few different tools:

  • IDEs or code editors that understand `@deprecated` annotations;
  • Running Drupal Check,  PhpStan Drupal, or Drupal Quality Checker from the command line or as part of a continuous integration system to check for deprecations and bugs;
  • Installing the Drupal 8 branch of the Upgrade Status module to get Drupal Check functionality, plus additional scanning;
  • Configuring your test suite to fail when it tries to execute a method that calls a deprecated code path.

See Hawkeye Tenderwolf’s article How to Enforce Drupal Coding Standards via Git for more ideas. That article explains how Lullabot uses GrumPHP and Drupal Quality Checker to monitor code on some of our client and internal sites.  

Many organizations already have solutions to check for deprecated code built into their workflow. Some organizations do this as part of testing, while others do it as part of a CI workflow. In the modern software development world, these tools are key components of developing and maintaining complex codebases.

While you can do this check in any version of Drupal 8, you’ll need to do a final pass once you upgrade any older Drupal 8 version to Drupal 8.8, because new deprecations have been identified in every release up to Drupal 8.8.

Refactor, update and remove deprecated code

If you find that your site contains deprecated code, there are a few avenues to fix it prior to upgrading to Drupal 9. Some of those tools include:

Flag modules as Drupal 9 compatible

Once you’ve removed deprecated code from your custom modules, flag them as being compatible with both Drupal 8 and Drupal 9, by adding the following line to your module’s info.yml file.

core_version_requirement: ^8 || ^9

What about contributed modules?

If you're using contributed modules that are deprecated, work with module maintainers to offer help when possible to ensure that updates will happen. You can check reports in the drupal.org issue queue for Drupal 9 compatibility or by checking Drupal 9 Deprecation Status.

You should update all contributed modules to a Drupal 9-compatible version while your site is still on Drupal 8. Do this before attempting an upgrade to Drupal 9!

Update to Drupal 9

One interesting aspect of the Drupal 9 upgrade is that you should be able to do all the preparatory work while you’re still on Drupal 8.8+. Find and remove deprecated code, update all your contributed modules to D9-compatible versions, etc. Once that is done, updating to Drupal 9 is simple:

  1. Update the core codebase to Drupal 9.
  2. Run update.php.

Drupal 9.x+

The Drupal Association has announced its intent to provide minor release updates every six months. Assuming Drupal 9.0 releases successfully in June 2020, the Drupal 9.1 update is planned for December 2020, with 9.2 to follow in June 2021.

To make Drupal 9.0 as stable as possible, no new features are planned for Drupal 9.0. The minor updates every six months may introduce new features and code deprecations, similar to the Drupal 8 release cycle. With this planned release cycle, there is no benefit to waiting for Drupal 9.x releases to upgrade to Drupal 9; Drupal 9.0 should be as stable and mature as Drupal 8.9.

Other resources

May 06 2020
bgm
May 06

As of CiviCRM 5.25, the minimum required PHP version is version 7.1, with PHP 7.3 being the recommended version. Since Drupal 6 does not support PHP 7.1 (except LTS vendors, such as myDropWizard), and since there are very few active CiviCRM sites on Drupal 6, we have decided to officially stop supporting Drupal 6.

We strongly encourage Drupal 6 users to upgrade to a supported content management system (CMS), such as Drupal 7, Drupal 8, Backdrop or WordPress. Depending on how much of the content management integration is used, it can be as simple as installing a new CMS, then re-importing the CiviCRM database in that site. For more information, see the switching CMS platform documentation.

If you need a hand, you can find a CiviCRM expert on our partner and contributor listing.

Are you still on Drupal 6? Have you upgraded recently? We would love to hear from you. Please leave a comment!

May 06 2020
May 06

In recent years, it seems as if open source has taken the software world by storm. Nonetheless, many enterprise organizations remain hesitant to adopt open-source technologies, whether due to vendor lock-in or a preference for proprietary solutions. But open source can in fact yield substantial fruit when it comes to advancing your business in today’s highly competitive landscape. By leveraging and contributing back to open source, you can distinguish your business with open source as a competitive advantage.

A few years back, Michael Meyers (Managing Director at Tag1 Consulting) presented a keynote at Texas Camp 2016 about the individual and business benefits of open source. As part of that talk, he highlighted some of the best motivations for open-source adoption and the outsized benefits that open source delivers to not only individual developers but also businesses that are seeking to get ahead in recruiting, sales, and other areas. In this two-part blog series (read the first part), we analyze the positive effects of open source on everyone from individual developers to the biggest enterprises in the world, all of whom are benefitting from their adoption of open-source software.

In this second installment, we dive into some of the ways in which open-source technologies like Drupal can improve your bottom line, with the help of a hypothetical tale of two companies and real-world case studies that demonstrate that open source presents much more rewards than risks in the context of enterprise.

A tale of two enterprises

As I wrote in the previous installment in this two-part series, individuals who participate in and contribute to Drupal garner immense benefits from open-source communities. And organizations can leverage these benefits as well for themselves by encouraging their employees to attend open-source conferences and grow their expertise and knowledge.

Let’s consider a hypothetical scenario in which two enterprise organizations are attempting to outcompete others in their space. The two protagonists of our vignette are DIY Corporation (whose slogan is “reinventing the wheel since forever”), and their corporate headquarters is located in the silos next to a nearby waterfall. Collab Incorporated is the other main character in this story, and they focus on working with others.

Writing custom code vs. leveraging open source

In this hypothetical scenario, DIY Corporation downloads Drupal, one of the most commonly used open-source content management systems (CMS) in the world. However, it soon discovers that it needs to extend existing functionality to solve problems unique to its business requirements. DIY Corporation chooses to write code to solve the problem rather than leveraging others’ code, something that is a common event among organizations that are unaccustomed to open-source software. Writing code makes perfect sense, as the business needs are resolved, but the challenge is when developers leave and additional support is required. When DIY Corporation gets stuck, they have no one to turn to, because their code is located in a private repository.

Meanwhile, Collab Inc. first checks to see if there is a solution available that has already been committed to the open-source ecosystem in the form of a Drupal module or experimental sandbox project. The key distinction here is that if there is no solution already available, Collab Inc. can decide only then to write a solution—and they choose to do so in public rather than in a silo. Too often, Drupal companies download software and write code in isolation rather than contributing that code back. If every organization opts to do this, then we negate the value of the open-source community in the first place.

A real-world example: Fivestar module

The key lesson from this hypothetical scenario is that sharing code from the beginning translates into better results for everyone across the board. By being open to contributions and ideas from others, we can resolve shared problems when we hit a wall. After all, other organizations will have a vested interest in your contributed code, because they are dependent on it and appreciative of the outcomes they have been able to achieve as a result.

A real-world example of this situation is Drupal’s Fivestar module, which ironically does exactly what it says it does. Originally developed by Lullabot for Sony BMG, which needed to provide ratings on pages associated with the label’s musicians, it has quickly found ubiquity across a variety of businesses leveraging Drupal. After the Fivestar module was released, Warner Music Group also contributed to the module’s codebase by upgrading it to Drupal 6 from Drupal 5. This illustrates an increasingly rare scenario in the hyper-competitive music landscape: two competitors helping each other for better results all around.

Thanks to Warner Music Group’s contributions, when Sony BMG finally needed to update all of their artist websites to Drupal 6, they simply employed the existing Drupal 6 module. Because of this strategic alliance, even as direct competitors, Sony BMG and Warner Music Group recognized that they were not competitors in the technology space—only in the music space—and worked together to realize mutual benefits. In the end, technology is a commodity, and every dime spent on additional code is not in each organization’s best interest. Their five-star rating systems are not a differentiator; instead of building separate code in that arena, they can focus on creating good music.

Recruiting talent in open source

Consider another scenario. Organizations are always looking to recruit the best talent, particularly in the Drupal ecosystem. Our hypothetical DIY Corporation posts to a job board; they release information about their opening and wonder why their recruiting pipeline is running dry, especially if they are not a well-known household name. However, because DIY Corporation has not focused on recruiting open-source developers in an open-source community, they have not attracted the interest they desire.

This brings us to a crucial point: Locking up your code guarantees a disincentive for people to work with you as an employee. Developers who wish to grow their careers are willing to work with employers who have a vested interest in their growth as well. If an employer does not grant the necessary opportunities to engage with open-source communities, this results in a lack of opportunities. Thanks to open source, organizations can develop a bench of people who may be interested in the future, thus expanding their recruiting pipelines.

The competitive advantage of open source

The benefits and advantages conferred by Drupal cannot be overstated. While the most overt benefit is Drupal’s cost-effectiveness, the more subtle—and perhaps realer—benefit is that you can participate in a global community with common methodologies and best practices that expand your sphere of knowledge and influence. Open source has been proven time and time again to be better, faster, and cheaper.

For agencies interested in getting involved in open source, there are huge opportunities. For instance, if a customer is looking to hire a consultancy to solve a particular problem, they have a clear choice between an agency that simply uses Drupal as opposed to one that actively contributes meaningfully to the Drupal community.

Agencies can gain a significant advantage by contributing to open source. Granted, contributing to open source as a small agency can be difficult, and bench time can often be limited for developers not actively working on projects. However, organizations that do get involved and publicize their open-source contributions tend to get meaningfully more business as a result. For instance, prominent companies in the Drupal landscape such as Amazee Labs, Phase2, Chapter Three, and others with full-time Drupal contributors often have customers reaching out directly precisely because of their commitment to open source.

Conclusion

Getting involved in open source can yield substantial dividends for those who engage in it. Though there are thousands upon thousands of open-source projects in the wild that you can get involved in, Drupal in particular has a highly well-developed ecosystem for organizations to get involved in open-source contribution, including user groups and Drupal conferences around the world that are looking for sponsors interested in supporting open source. As a case in point, I organize a non-profit open-source conference in New York City called Decoupled Days, about decoupled Drupal (also the subject of my book), and we’re currently looking for more sponsors!

For businesses interested in contributing to open source, there are also business summits and events, such as Drupal Business Days, that can help you connect with other organizations exploring open-source software like Drupal. And there’s no need to be a developer to contribute to open source. In fact, among the most critical needs the Drupal community perpetually has are marketing and event support. That brings us to perhaps the most important message of open-source contributions: You, too, can contribute.

Special thanks to Michael Meyers for his feedback during the writing process.

Photo by Vincent van Zalinge on Unsplash

May 05 2020
May 05

Hands-On Machine Learning With PHP, Part Two

By Liam Wiltshire

Last month, we looked at how we can take our data and, using machine learning, categorize the data by groupings we’d already decided upon—spam, ham, fraudulent, good, etc. This usage is a great way to start, but you might quickly find you want to take things further. Perhaps this means analyzing the data differently, to come up with new relationships you hadn’t previously considered, or maybe you want to improve the accuracy of your results by avoiding some common pitfalls in machine learning. These are the questions we are addressing today, starting with a different approach to machine learning—unsupervised learning.

Decoupling Drupal From Its Frontend System to Use in an Existing Website

By Jack D. Polifka

The ability to create and publish content in real-time without knowing HTML or the ability to program is a common feature of many websites. This capability allows individuals to produce web content regardless of their technical ability. Producing web content is a common feature of many content management systems (CMS). Some websites don’t allow direct creation and publication of content, so a possible solution to address this shortcoming is integrating a CMS into these websites. This article describes how Drupal, a CMS, was added to an existing Symfony website to allow users to publish content in real-time. Implementation details about integrating Drupal into the existing website using Headless Drupal are shared.

Passwordless Authentication

By Brian Reterrer

Passwords are part of our everyday life. You may not even think about them most of the time, that is until you forget one. What if you never had to use a password again? What if I told you it was more secure not to have a password? Would you believe me? Find out why companies are ditching passwords and moving towards multi-factor authentication.

PHP Puzzles: Factorials

By Sherri Wheeler

Each installment of PHP Puzzles presents a small coding exercise typical of those we might encounter in a job interview, or on a coding challenge website. In the following month, we’ll look at a couple of possible solutions for today’s puzzle. Perhaps one of the most common coding puzzles, I recall this one from high school computer class&msdash;calculating a factorial.

Education Station: Anatomy of a Web Response

By Chris Tankersley

Last month, we looked at HTTP requests and how a user agent asks for a specific resource. How do we provide an answer? Web servers send it back in an HTTP response. Let’s look at the parts of a response, how to indicate success or failure, and how to build the response body.

The Workshop: Specification BDD with Phpspec

By Joe Ferguson

phpspec is a package which allows us to use Behavior-Driven Development, BDD, which comes from Test-Driven Development, TDD. When applying BDD, we write our tests first and then only enough code to pass our tests and then refactor and verify the tests still pass exactly as we would with TDD. This cycle continues and is often referred to as red-green development of writing tests that fail and enough code to make them pass, then restarting the process.

History and Computing: Transcontinental Railroad

By Edward Barnard

We’re looking at the background behind the U.S. Department of Justice plan to consider antitrust action against the giants of high tech. We’ll see how ocean transportation gave way to transcontinental transportation. That’s the background we’ll need for seeing how transcontinental transportation became the antitrust action that’s setting a precedent for big tech.

Security Corner: Request Replay Protection

By Eric Mann

One of the most overused terms of security is “token.” It’s used in many different, often unrelated contexts to mean very different things. This month we’re going to discuss one form of tokens—replay prevention nonces—and how to use them.

By Eric Van Johnson

This month, we revisit our Canadian friends, this time we travel north of Toronto, Canada, to the York Region of Canada and the You Region PHP User Group.

finally{}: What’s in PHP Eight?

By Eli White

While much of the world shuts down, the PHP core developers have been hard at work preparing for the release of PHP 8.0 at the end of this year! The feature freeze is in just a few months (July 28th), so this is the exciting time when there is a push to get various features into this momentous release! Let’s take a look at a few of the bigger things currently planned for PHP 8.0.

May 05 2020
May 05
Start:  2020-05-21 23:30 - 2020-05-24 03:30 UTC Organizers:  Gábor Hojtsy Event type:  Sprint

Join the Drupal Community in this worldwide event focusing on Drupal 9 stability and adoption across contributed projects. Over 1600 projects are already Drupal 9 compatible a month before Drupal 9's release which is unprecedented. However, there are still thousands that only need very small changes and a release made.

The first Drupal 9 Porting Day was on April 28, 2020, led by Gábor Hojtsy, Lee Rowlands, Vladimir Roudakov, QED42, Srijan, Adam Bergstein and Mike Lutz. Altogether 126 issues were worked on that resulted in 89 newly Drupal 9 compatible releases on that day and the following two days. It was not only successful but we had a lot of fun too. So we are of course here to do another one this month!

Dates

Drupal 9 Porting Weekend is on May 22-23, 2020. Friday, May 22 would have been contribution day at DrupalCon Minneapolis. We picked the dates in honour of the cancelled event.

Mentors / leaders needed worldwide

The following great people signed up so far to lead in their own timezones:

Friday leaders:

Saturday leaders:

We are looking for more leaders at various time zones to help mentor people working in that timezone. Spreading the effort to more people would help everyone's questions be answered. Contact Gábor Hojtsy if you are interested to be a mentor / leader in your timezone and we'll add you here. We are looking to cover as many time zones as possible.

How to participate

Anyone can help!

  • Let's meet online in the #d9readiness channel on Drupal slack: https://www.drupal.org/slack
  • We'll use slack threads to discuss projects and to help coordinate the work.
  • Do tag issues worked on with "Drupal 9 Porting Weekend" on drupal.org.

Tools that we'll definitely use include:

Check out Kristen Pol's post to prepare at http://www.kristen.org/content/preparing-yourself-drupal-9-porting-weekend or for a more developer focused short summary Tsegaselassie Tadesse's post at https://gist.github.com/tsega/ce47315a053f8453abcd7a289ae03500.

Help get the word out!

Excited about participating? Let your friends and colleagues know! You don't need to be a module maintainer to participate. Tweet and post on other favourite social platforms about Drupal 9 Porting Weekend using #Drupal9Weekend.

Special thanks to @surabhi.gokte and @gambry for their help to get this off the ground.

May 05 2020
May 05

The ability to create and publish content in real-time without knowing HTML or the ability to program is a common feature of many websites. This capability allows individuals to produce web content regardless of their technical ability. Producing web content is a common feature of many content management systems (CMS). Some websites don’t allow direct creation and publication of content, so a possible solution to address this shortcoming is integrating a CMS into these websites. This article describes how Drupal, a CMS, was added to an existing Symfony website to allow users to publish content in real-time. Implementation details about integrating Drupal into the existing website using Headless Drupal are shared.

This article was originally published in the May 2020 issue of php[architect] magazine. To read the complete article please subscribe or purchase the complete issue.

May 05 2020
May 05

05 May

Nick Veenhof

Open source as a top sport

If Drupal was a sport, the Drupal Association would be the International Olympic Committee (IOC). They don’t practice the sports on their own, they do not vouch for a specific nation, nor do they have a direct financial benefit. Mind you, a non-profit organisation doesn’t mean nobody gets paid. The IOC’s main job is to make sure the Olympic Games happen, and that the infrastructure, the contracts with the countries are set up, that in the end the sports are represented by the best and that fair-play is guaranteed.

The Drupal Association isn’t that different, just replace sports with Drupal. They support the infrastructure needed to make sure that agencies, hosting companies, etc. can all benefit from the Open Source Drupal project with the tools that are more than just source code. Think of events, composer repositories, collaboration tools, sponsorships benefits management, etc.. 

Without such a central component, many companies like Dropsolid wouldn’t be as productive as we are today, nor would we have the power to have such an impact on the world that is in dire need of digital transformation in these times
 

Even the Olympics suffer from COVID-19

Unfortunately, the global pandemic has a severe impact on the Drupal Association with DrupalCon Minneapolis that needed to be postponed. Even though Open Source is crucial for the world at times of crisis, at the same time it's being hit.

"People all over the world can access open source technology to create solutions for crisis communication, remote education, and community cooperation."
- Forbes, Daniel Newman

And that is where we, and maybe also you, stepped in.
 

We play the game, we make it better

Dropsolid is proud of identifying itself as a maker in order to sustain the growth of Open Source. In the last 3 months we were attributed to 61 maker credits on Drupal.org, which places us 32nd worldwide. 

Next to being a maker we also understand that hard cash is needed as an investment for the future. Not only do we consider the money that goes into the Drupal Association as a donation, we see it as a crucial investment, with a return an Open Source Dividend, in the future of Dropsolid. 

“These pivots can only happen in one kind of organisation. Organisations that have embraced digital transformation. These are the organisations that were ready for technology. These are the organisations that looked at a piece of technology and said: this can be used differently. They have the leaders who were ready for change. They have the cultures that were ready to step up. This is what digital transformation for good looks like. “
- Forbes, Daniel Newman

We sponsored Drupalcon Amsterdam 2019 as a Diamond sponsor and have early-on committed to being a Diamond Sponsor of Drupalcon Barcelona 2020, delayed or not. Also several local initiatives such as Drupal Dev Days, Drupaljam or Drupalcamp London. All these sponsorships in the last years amounted to more than 60.000 euro. However, in this difficult time we feel like we need to do more.  

That is why we decided to upgrade our partnership with the Drupal Association to a premium level at the end of March. We are in conversation with the Association about another 11.000 euro support. 

To stay in the game, we all need to play

Like the Olympics couldn't happen without the support of the IOC, we need the Drupal Association to support the global community of Drupal athletes.

We are proud supporters of the community. We hope that you will follow in our footsteps. It’s the right thing to do, and that is what we stand for.

Donate to the Drupal Association

May 05 2020
May 05

Drupal is one of the largest and most active open-source projects in the world, and the Drupal Association is responsible for enabling it to thrive by creating and maintaining tooling and other projects that keep Drupal humming. Though many in the Drupal community and outside it see the Drupal Association only as the organizer of the global DrupalCon conferences each year, the Drupal Association is, in fact, responsible for some of the most critical elements that sustain Drupal as a software product, including localizations, updates, security advisories, metadata, and infrastructure. All of the "cloud services" that we work with on a daily basis in the Drupal ecosystem represent fundamental functions of the Drupal Association.

In recent years, the Drupal Association has launched several features that reinvent the way developers interact with Drupal as a software system, including DrupalCI (Drupal's test infrastructure), Composer Façade (in order to support Drupal's adoption of Composer), and Drupal's ongoing migration to GitLab for enhanced source control. For many years, Tag1 Consulting has supported and contributed to the Drupal Association not only as a key partner in visible initiatives but also in the lesser-known aspects of the Drupal Association's work that keep Drupal.org and the ecosystem running. Though we've long provided 80 free hours of work a month to the Drupal Association, we're proud to announce we are expanding this commitment by 50% to 120 pro-bono hours per month (75% of an FTE). In addition we have also made a donation toward #DrupalCares' $100,000 goal.

In this special edition of the _Tag1 Team Talks _show, we introduce a miniseries with the engineering team at the Drupal Association, including Tim Lehnen (Chief Technology Officer, Drupal Association) and Narayan Newton (Chief Technology Officer, Tag1), along with Michael Meyers (Managing Editor, Tag1) and Preston So (Editor in Chief at Tag1 and Senior Director, Product Strategy at Oracle). In this first installment, we dive into some of the mission-critical work the Drupal Association performs for the Drupal community with the support of Tag1 and other organizations and how they represent the lifeblood of the Drupal project as well as its continued longevity.

[embedded content]

May 05 2020
May 05

Drupal 8 has thousands of contributed modules meant to make the lives of Content editors easier. The Focal point module in Drupal 8 is one such module that we are focusing on today. 
Content editors spend a big chunk of their time on editing images. Unless they are also experts in Photoshop, cropping and resizing could get messy sometimes. Simply cropping out an image to fit well on the screen might seize the importance out of it. Drupal offers many interactive means to crop and resize images but they don’t provide the flexibility that the Focal Point module offers. The Focal Point module allows for smart cropping while focusing on the important part of the image.

Focal Point Modules

Installation of the module

Step 1: Install the module using the composer. Use the command “composer require drupal/focal_point”.

Step 2: Enable the module.

Installation of the Focal Module

The module can be enabled through front-end or with the help of the composer, which also enables its dependency modules.

Working of Focal Point Module

Step 1: Create Image styles for the image.
Go to the path Configuration-> Media -> Image styles to create your custom image style.

Focal point module

Step 2:  Select the effect to your image style.

Select, Focal Point Scale and Crop option from the drop-down menu.

Focal Point Scale and Crop

Step 3: Give image Height and Width for smart cropping.

After the effect is added to the image style, an option to add the width and height of the image is offered. This is basically the width and the height to which the image should be cropped.

focal point module-height and width

Step 4: Selecting widget type in Manage form display.

After creating the image style, navigate to manage form display of the field, and select “Image (Focal Point)”.

demo focal point module

In the image widget settings, select the custom image style which you have created.

focal point widget settings

Step 5: Selecting image style in format settings of Manage display.

Under manage display, navigate to the format setting of your image field and select the image style which you have created.

Focal-point

After completing all these steps, you will be able to add content to a content type. Once the image is uploaded, a plus(+) mark appears at the center of the image. Also, a preview button will be displayed below the image.

Focal-point

In the above image, you can see the plus symbol, and also the preview button. If you click on preview, you will be redirected to the preview of the cropped image.

Focal-Point

Initially, the original image is  of a bigger size and once the image style is selected, the preview of your image is displayed. You can also change the crop section by moving the plus(+) mark anywhere on the image.

Focal Point

In the above image, I have moved the plus symbol to the right corner, so it crops the left portion of the image.

Focal Point

In the above picture, the left portion of the image is cropped by placing the plus(+) mark on the right of the image. This is how the drupal focal point works. 

May 05 2020
May 05

Businesses are different, and so are their websites. Each of the types of business websites has its own recommended features, specific design tweaks, and more. But there is something that unites them all!

First, regardless of the type, the decision to build a business website in the digital era is extremely beneficial. Next, there is an enterprise-level CMS that is able to meet the needs of all categories of websites. Its name is Drupal.

In this post, discover more about the different types of business websites that can be built with this CMS. If this inspires you for creating a website for your business, never hesitate to hire our Drupal agency that has affordable web development prices.

Why create a business website?

There are plenty of reasons why your business needs a website, but any doubts about it are melting away with every day of the digital boom.

Even the sad events such as the Covid-19 quarantine add their touch to the speed-up of digitalization. They show the whole world how important it is to be represented on the Web where plenty of prospective customers are surfing. The online business trends will continue ever after the sad story is over.

Meanwhile, let’s outline a few ways in which you benefit from building a business website:

  • you expand your reach with no geographical boundaries
  • you shape and promote your brand
  • you attract, engage, and convince your customers
  • you deliver your message via the design and content
  • you make your business known through search engines
  • you get to know your customers through marketing tools
  • you are available 24/7
  • you benefit from online sales or other transactions
  • and so much more

Key types of websites to make with Drupal

First of all, we want to emphasize that it’s possible to create a business website of any type with Drupal, with no exception. Drupal has a multipurpose, well-picked set of core modules, and all others can be added like in a Lego.

There are dozens of thousands of contributed modules to extend a website in every area of its work. Finally, Drupal also offers unlimited opportunities for developers in reaching the goals through custom code.

Build an e-commerce business website on Drupal

If you want to build a business site, choose Drupal and you will never regret it. Unlike purely e-commerce platforms with no content management system, Drupal provides exceptional opportunities for content-driven commerce. Drupal has a powerful e-commerce package called Drupal Commerce that is equipped with the coolest features. Integration with any payment gateways, flexible product management, opportunities for ultra-fast shopping carts are just some of the reasons to create an online store with Drupal.

International multi-domain store “JYSK” created by our team:

International multi-domain store “JYSK” on Drupal

Build a real estate business website on Drupal

Here goes the next type of business website on our list that pairs perfectly with Drupal. It is clear to see that Drupal is a great choice for real estate websites. They can have attractive property object listings, responsive images that look great on any device, smart filtering and sorting options, integration with any real-estate APIs, payment systems, and property management software, granular user roles and permissions, and much more. The popularity is proved by numerous examples of real estate Drupal websites.

Powerful real estate data and analytics platform “Gridics” created by our team:

Powerful real estate data and analytics platform “Gridics”

Build a university website on Drupal

More than 70 percent of top higher-ed websites are built with Drupal. This love has an explanation. Drupal’s benefits for university websites include robust multisite opportunities for multiple departments, different user roles with flexible permissions (for students, staff, teachers, parents, etc.), multilingual features to attract international students, mobile-first approach to engage the young audience, and so on. So you can easily build a university, college, school, or other education establishment site with Drupal.

Maryland Global University website created by our team:

Maryland Global University website on Drupal

Build a fundraising website on Drupal

Next in our collection of different types of business websites are various fundraising and crowdfunding websites that help users raise the money for specific purposes. They can be very interesting in terms of their functionality. The most popular features on them include the integration with payment providers, flexible payment options, dynamic real-time notifications for users, flexible user management, mobile-first design, social media integration, etc. Drupal is the winner again in all these features!

YaWave crowdfunding platform created by our team:

YaWave crowdfunding platform on Drupal

Build a law firm business website on Drupal

If you want to build a website for your law business, Drupal can make a “lucky union” with it. When searching for a law firm services, potential customers extensively use search engines and read online content. Thanks to Drupal’s SEO-friendliness and handy content publishing, you will get a change to attract more users. Any third-party integrations, email marketing, user-friendly contact forms, live chats, and anything else a law firm website needs is easy to build.

LSC (Legal Services Corporation) website on Drupal:

LSC (Legal Services Corporation) website on Drupal

Build a healthcare website on Drupal

Businesses that need special responsibility deserve a reliable CMS to build their websites with. Sites of this type need security, granular user permissions, if needed, two-factor authentication. Interesting features on them may include online appointment calendars, electronic signature, online messaging, various integrations, and more. Drupal can give it all and more to healthcare websites.

The AttendingDR doctors’ portal created by our team:

adr

Build a news and media business website on Drupal

Everyone who wants to build a publishing business website should consider Drupal’s benefits for news and media websites. They include easy content editing, the quick edit feature, Media Library, easy media embedding, multilingual capabilities, API integration, mobile-first design, and much more. With every new Drupal version, the focus on smooth and silky editorial experiences increases.

The FoxNews website on Drupal:

The FoxNews website on Drupal

Build a beauty business website on Drupal

What about the most beautiful industry? Of course, you can build a business website for beauty products on Drupal! Attractive presentation of images with due image optimization, good filtering and sorting, e-commerce integration, smart search, easy content publishing for various beauty tips, videos, and blogs — all this is just a part of its great features.

The Lush beauty product website on Drupal:

The Lush beauty product website on Drupal

Build a website for business with the help of our experts!

As you can see, Drupal can build the best “digital home” for your business in any industry. However, this only works in professional hands. Combined with our affordable prices, it’s your luckiest option to build a business website.

We will recommend to you the most reasonable implementation of your project in terms of the budget. Our experienced developers can deliver a better value in a limited time. The consultation is totally free, so contact us and let’s discuss how our website development team can help your business take wing!

May 05 2020
May 05

List of Drupal Commerce content entities.

For each entity we will present: the module that provides it, the class that defines it, and the available properties. For each property we will list its name, field type, a description, and a note if the field allows unlimited values (i.e. it has an unlimited cardinality). The list of properties available for a content entity depend on many factors. For example, if the entity is revisionable (e.g. revision_default), translatable (e.g. langcode), or both (e.g. revision_translation_affected). The modules that are enabled on the site can also affect the available properties. For instance, if the “Workspaces” module is installed, it will add a workspace property to many content entities. This reference assumes that Drupal was installed using the standard installation profile and only Drupal Commerce related modules that provide content entities are enabled.

It is worth noting that entity properties are divided in two categories: base field definitions and field storage configurations. Base field configurations will always be available for the entity. On the other hand, the presence of field storage configurations will depend on various factors. For one, they can only be added to fieldable entities. Attaching the fields to the entity can be done manually by the user, by a module, or by an installation profile. Again, this reference assumes that Drupal was installed using the standard installation profile with Drupal Commerce related modules enabled. By default, the commerce_product entity adds a bodyfield. For entities that can have multiple bundles, not all properties provided by the field storage configurations will be available in all bundles. For example, with the standard installation profile all content types will have a body field associated with it, but only the article content type has the field_image, and field_tags fields. If subfields are available for the field type, you can migrate into them.

If you are migrating into Drupal Commerce, make sure to check the Commerce Migrate module. It offers migrate destination field handlers for commerce fields and a plugin for commerce product types. It also provides a migration path from Commerce 1 (Drupal 7), Ubercart, and other e-commerce platforms. It is even possible to import data from other platforms like WooCommerce, Magento, and Shopify via CSV exports.

Store entity

Module: Commerce Store (part of commerce module)
Class: Drupal\commerce_store\Entity\Store

List of base field definitions:

  1. store_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. langcode: (language) Language.
  4. type: (entity_reference to commerce_store_type) Type. The store type.
  5. uid: (entity_reference to user) Owner. The store owner.
  6. name: (string) Name. The store name.
  7. mail: (email) Email. Store email notifications are sent from this address.
  8. default_currency: (entity_reference to commerce_currency) Default currency. The default currency of the store.
  9. timezone: (list_string) Timezone. Used when determining promotion and tax availability.
  10. address: (address) Address. The store address.
  11. billing_countries: (list_string) Supported billing countries. Allows unlimited values.
  12. path: (path) URL alias. The store URL alias.
  13. is_default: (boolean) Default. Whether this is the default store.
  14. default_langcode: (boolean) Default translation. A flag indicating whether this is the default translation.
  15. shipping_countries: (list_string) Supported shipping countries. Allows unlimited values.
  16. prices_include_tax: (boolean) Prices are entered with taxes included.
  17. tax_registrations: (list_string) Tax registrations. The countries where the store is additionally registered to collect taxes. Allows unlimited values.

Product entity

Module: Commerce Product (part of commerce module)
Class: Drupal\commerce_product\Entity\Product

List of base field definitions:

  1. product_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. langcode: (language) Language.
  4. type: (entity_reference to commerce_product_type) Product type.
  5. status: (boolean) Published.
  6. stores: (entity_reference to commerce_store) Stores. The product stores. Allows unlimited values.
  7. uid: (entity_reference to user) Author. The product author.
  8. title: (string) Title. The product title.
  9. variations: (entity_reference to commerce_product_variation) Variations. The product variations. Allows unlimited values.
  10. created: (created) Created. The time when the product was created.
  11. changed: (changed) Changed. The time when the product was last edited.
  12. default_langcode: (boolean) Default translation. A flag indicating whether this is the default translation.

List of field storage configurations:

  1. body: text_with_summary field.

Product variation entity

Module: Commerce Product (part of commerce module)
Class: Drupal\commerce_product\Entity\ProductVariation

List of base field definitions:

  1. variation_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. langcode: (language) Language.
  4. type: (entity_reference to commerce_product_variation_type) Product variation type.
  5. status: (boolean) Published.
  6. uid: (entity_reference to user) Author. The variation author.
  7. product_id: (entity_reference to commerce_product) Product. The parent product.
  8. sku: (string) SKU. The unique, machine-readable identifier for a variation.
  9. title: (string) Title. The variation title.
  10. list_price: (commerce_price) List price. The list price.
  11. price: (commerce_price) Price. The price
  12. created: (created) Created. The time when the variation was created.
  13. changed: (changed) Changed. The time when the variation was last edited.
  14. default_langcode: (boolean) Default translation. A flag indicating whether this is the default translation.

Product attribute value entity

Module: Commerce Product (part of commerce module)
Class: Drupal\commerce_product\Entity\ProductAttributeValue

List of base field definitions:

  1. attribute_value_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. langcode: (language) Language.
  4. attribute: (entity_reference to commerce_product_attribute) Attribute.
  5. name: (string) Name. The attribute value name.
  6. weight: (integer) Weight. The weight of this attribute value in relation to others.
  7. created: (created) Created. The time when the attribute value was created.
  8. changed: (changed) Changed. The time when the attribute value was last edited.
  9. default_langcode: (boolean) Default translation. A flag indicating whether this is the default translation.

Order entity

Module: Commerce Order (part of commerce module)
Class: Drupal\commerce_order\Entity\Order

List of base field definitions:

  1. order_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. type: (entity_reference to commerce_order_type) Order type.
  4. order_number: (string) Order number. The order number displayed to the customer.
  5. store_id: (entity_reference to commerce_store) Store. The store to which the order belongs.
  6. uid: (entity_reference to user) Customer. The customer.
  7. mail: (email) Contact email. The email address associated with the order.
  8. ip_address: (string) IP address. The IP address of the order.
  9. billing_profile: (entity_reference_revisions) Billing information. Billing profile
  10. order_items: (entity_reference to commerce_order_item) Order items. The order items. Allows unlimited values.
  11. adjustments: (commerce_adjustment) Adjustments. Allows unlimited values.
  12. total_price: (commerce_price) Total price. The total price of the order.
  13. total_paid: (commerce_price) Total paid. The total paid price of the order.
  14. state: (state) State. The order state.
  15. data: (map) Data. A serialized array of additional data.
  16. locked: (boolean) Locked.
  17. created: (created) Created. The time when the order was created.
  18. changed: (changed) Changed. The time when the order was last edited.
  19. placed: (timestamp) Placed. The time when the order was placed.
  20. completed: (timestamp) Completed. The time when the order was completed.
  21. cart: (boolean) Cart.
  22. checkout_flow: (entity_reference to commerce_checkout_flow) Checkout flow.
  23. checkout_step: (string) Checkout step.
  24. payment_gateway: (entity_reference to commerce_payment_gateway) Payment gateway. The payment gateway.
  25. payment_method: (entity_reference to commerce_payment_method) Payment method. The payment method.
  26. coupons: (entity_reference to commerce_promotion_coupon) Coupons. Coupons that have been applied to order. Allows unlimited values.

Order item entity

Module: Commerce Order (part of commerce module)
Class: Drupal\commerce_order\Entity\OrderItem

List of base field definitions:

  1. order_item_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. type: (entity_reference to commerce_order_item_type) Order item type.
  4. order_id: (entity_reference to commerce_order) Order. The parent order.
  5. purchased_entity: (entity_reference to node) Purchased entity. The purchased entity.
  6. title: (string) Title. The order item title.
  7. quantity: (decimal) Quantity. The number of purchased units.
  8. unit_price: (commerce_price) Unit price. The price of a single unit.
  9. overridden_unit_price: (boolean) Overridden unit price. Whether the unit price is overridden.
  10. total_price: (commerce_price) Total price. The total price of the order item.
  11. adjustments: (commerce_adjustment) Adjustments. Allows unlimited values.
  12. uses_legacy_adjustments: (boolean) Uses legacy adjustments.
  13. data: (map) Data. A serialized array of additional data.
  14. created: (created) Created. The time when the order item was created.
  15. changed: (changed) Changed. The time when the order item was last edited.

Payment method entity

Module: Commerce Payment (part of commerce module)
Class: Drupal\commerce_payment\Entity\PaymentMethod

List of base field definitions:

  1. method_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. type: (string) Payment method type.
  4. payment_gateway: (entity_reference to commerce_payment_gateway) Payment gateway. The payment gateway.
  5. payment_gateway_mode: (string) Payment gateway mode. The payment gateway mode.
  6. uid: (entity_reference to user) Owner. The payment method owner.
  7. remote_id: (string) Remote ID. The payment method remote ID.
  8. billing_profile: (entity_reference_revisions) Billing profile. Billing profile
  9. reusable: (boolean) Reusable. Whether the payment method is reusable.
  10. is_default: (boolean) Default. Whether this is the user's default payment method.
  11. expires: (timestamp) Expires. The time when the payment method expires. 0 for never.
  12. created: (created) Created. The time when the payment method was created.
  13. changed: (changed) Changed. The time when the payment method was last edited.

Payment entity

Module: Commerce Payment (part of commerce module)
Class: Drupal\commerce_payment\Entity\Payment

List of base field definitions:

  1. payment_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. type: (string) Payment type.
  4. payment_gateway: (entity_reference to commerce_payment_gateway) Payment gateway. The payment gateway.
  5. payment_gateway_mode: (string) Payment gateway mode. The payment gateway mode.
  6. payment_method: (entity_reference to commerce_payment_method) Payment method. The payment method.
  7. order_id: (entity_reference to commerce_order) Order. The parent order.
  8. remote_id: (string) Remote ID. The remote payment ID.
  9. remote_state: (string) Remote State. The remote payment state.
  10. amount: (commerce_price) Amount. The payment amount.
  11. refunded_amount: (commerce_price) Refunded amount. The refunded payment amount.
  12. state: (state) State. The payment state.
  13. authorized: (timestamp) Authorized. The time when the payment was authorized.
  14. expires: (timestamp) Expires. The time when the payment expires. 0 for never.
  15. completed: (timestamp) Completed. The time when the payment was completed.
  16. test: (boolean) Test. Whether this is a test payment.
  17. captured: (timestamp) Captured. The time when the payment was captured.

Module: Commerce Promotion (part of commerce module)
Class: Drupal\commerce_promotion\Entity\Promotion

List of base field definitions:

  1. promotion_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. langcode: (language) Language.
  4. name: (string) Name. The promotion name.
  5. display_name: (string) Display name. If provided, shown on the order instead of "Discount".
  6. description: (string_long) Description. Additional information about the promotion to show to the customer
  7. order_types: (entity_reference to commerce_order_type) Order types. The order types for which the promotion is valid. Allows unlimited values.
  8. stores: (entity_reference to commerce_store) Stores. The stores for which the promotion is valid. Allows unlimited values.
  9. offer: (commerce_plugin_item:commerce_promotion_offer) Offer type.
  10. conditions: (commerce_plugin_item:commerce_condition) Conditions. Allows unlimited values.
  11. condition_operator: (list_string) Condition operator. The condition operator.
  12. coupons: (entity_reference to commerce_promotion_coupon) Coupons. Coupons which allow promotion to be redeemed. Allows unlimited values.
  13. usage_limit: (integer) Usage limit. The maximum number of times the promotion can be used. 0 for unlimited.
  14. start_date: (datetime) Start date. The date the promotion becomes valid.
  15. end_date: (datetime) End date. The date after which the promotion is invalid.
  16. compatibility: (list_string) Compatibility with other promotions.
  17. status: (boolean) Status. Whether the promotion is enabled.
  18. weight: (integer) Weight. The weight of this promotion in relation to others.
  19. default_langcode: (boolean) Default translation. A flag indicating whether this is the default translation.

Module: Commerce Promotion (part of commerce module)
Class: Drupal\commerce_promotion\Entity\Coupon

List of base field definitions:

  1. id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. promotion_id: (entity_reference to commerce_promotion) Promotion. The parent promotion.
  4. code: (string) Coupon code. The unique, machine-readable identifier for a coupon.
  5. usage_limit: (integer) Usage limit. The maximum number of times the coupon can be used. 0 for unlimited.
  6. status: (boolean) Status. Whether the coupon is enabled.

Log entity

Module: Commerce Log (part of commerce module)
Class: Drupal\commerce_log\Entity\Log

List of base field definitions:

  1. log_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. uid: (entity_reference to user) User. The user for the log.
  4. template_id: (string) Log template ID. The log template plugin ID
  5. category_id: (string) Log category ID. The log category plugin ID
  6. source_entity_id: (integer) Source entity ID. The source entity ID
  7. source_entity_type: (string) Source entity type. The source entity type
  8. params: (map) Params. A serialized array of parameters for the log template.
  9. created: (created) Created. The time when the log was created.

Price list entity

Module: Commerce Pricelist
Class: Drupal\commerce_pricelist\Entity\PriceList

List of base field definitions:

  1. id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. type: (string) Price list bundle.
  4. uid: (entity_reference to user) Owner. The user that owns this price list.
  5. name: (string) Name. The name of the price list.
  6. stores: (entity_reference to commerce_store) Stores. The stores for which the price list is valid. Allows unlimited values.
  7. customer: (entity_reference to user) Customer. The customer for which the price list is valid.
  8. customer_roles: (entity_reference to user_role) Customer roles. The customer roles for which the price list is valid. Allows unlimited values.
  9. start_date: (datetime) Start date. The date the price list becomes valid.
  10. end_date: (datetime) End date. The date after which the price list is invalid.
  11. weight: (integer) Weight. The weight of this price list in relation to other price lists.
  12. status: (boolean) Status. Whether the price list is enabled.
  13. changed: (changed) Changed. The time when the price list was last edited.

Price list item entity

Module: Commerce Pricelist
Class: Drupal\commerce_pricelist\Entity\PriceListItem

List of base field definitions:

  1. id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. type: (string) Price list item bundle.
  4. uid: (entity_reference to user) Owner. The user that owns this price list item.
  5. price_list_id: (entity_reference to commerce_pricelist) Price list. The parent price list.
  6. purchasable_entity: (entity_reference to commerce_product_variation) Purchasable entity. The purchasable entity.
  7. quantity: (decimal) Quantity. The quantity tier.
  8. list_price: (commerce_price) List price. The list price.
  9. price: (commerce_price) Price. The price.
  10. status: (boolean) Status. Whether the price list item is enabled.
  11. changed: (changed) Changed. The time when the price list item was last edited.

Shipment entity

Module: Shipping
Class: Drupal\commerce_shipping\Entity\Shipment

List of base field definitions:

  1. shipment_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. type: (entity_reference to commerce_shipment_type) Shipment type.
  4. order_id: (entity_reference to commerce_order) Order. The parent order.
  5. package_type: (string) Package type. The package type.
  6. shipping_method: (entity_reference to commerce_shipping_method) Shipping method. The shipping method
  7. shipping_service: (string) Shipping service. The shipping service.
  8. shipping_profile: (entity_reference_revisions) Shipping information.
  9. title: (string) Title. The shipment title.
  10. items: (commerce_shipment_item) Items. Allows unlimited values.
  11. weight: (physical_measurement) Weight.
  12. original_amount: (commerce_price) Original amount. The original amount.
  13. amount: (commerce_price) Amount. The amount.
  14. adjustments: (commerce_adjustment) Adjustments. Allows unlimited values.
  15. tracking_code: (string) Tracking code. The shipment tracking code.
  16. state: (state) State. The shipment state.
  17. data: (map) Data. A serialized array of additional data.
  18. created: (created) Created. The time when the shipment was created.
  19. changed: (changed) Changed. The time when the shipment was last updated.
  20. shipped: (timestamp) Shipped. The time when the shipment was shipped.

Shipping method entity

Module: Shipping
Class: Drupal\commerce_shipping\Entity\ShippingMethod

List of base field definitions:

  1. shipping_method_id: (integer) ID.
  2. uuid: (uuid) UUID.
  3. langcode: (language) Language.
  4. stores: (entity_reference to commerce_store) Stores. The stores for which the shipping method is valid. Allows unlimited values.
  5. plugin: (commerce_plugin_item:commerce_shipping_method) Plugin.
  6. name: (string) Name. The shipping method name.
  7. conditions: (commerce_plugin_item:commerce_condition) Conditions. Allows unlimited values.
  8. condition_operator: (list_string) Condition operator. The condition operator.
  9. weight: (integer) Weight. The weight of this shipping method in relation to others.
  10. status: (boolean) Enabled. Whether the shipping method is enabled.
  11. default_langcode: (boolean) Default translation. A flag indicating whether this is the default translation.

Available properties for other content entities

This reference includes Drupal Commerce content entities and some provided by related contributed modules. The previous article included a reference for Drupal core content entities. That being said, it would be impractical to cover all contributed modules. To get a list of yourself for other content entities, load the entity_type.manager service and call its getFieldStorageDefinitions() method passing the machine name of the entity as a parameter. Although this reference only covers content entities, the same process can be used for configuration entities.

What did you learn in today’s article? Did you know that there were so many entity properties provided by Drupal Commerce? Were you aware that the list of available properties depend on factors like if the entity is fieldable, translatable, and revisionable? Did you know how to find properties for content entities from contributed modules? Please share your answers in the comments. Also, we would be grateful if you shared this article with your friends and colleagues.

May 04 2020
May 04

Even among teams who are accustomed to working remotely, staying positive and connected can be a challenge when statewide stay-at-home mandates turn lives upside down in a myriad of different ways.

At Promet Source, we took it up a notch this spring, with some new ways to enliven meetings and support each other. The following five initiatives helped us to:

  • Get a glimpse into each others’ lives beyond faces on a Zoom call, 
  • Encourage accountability beyond immediate tasks at hand, and
  • Just make regularly scheduled meetings more fun. 

1. Guess the Workspace

Prior to last month’s all-company meeting, I requested photos of six individual’s workspaces. Near the end of the call, I showed the photos of the workspaces and asked everyone on the call to match the six selected employees to their workspace and submit their votes via the Zoom chat. It was fun to speculate the owner, and in the end we all learned that we know each other better than we thought, because we mostly guessed them right!

Screenshot of employees and their workspaces

2. Meet the Family (Dogs and Children)

We played the above game with pets as well. Better than a picture is seeing them real-time on camera. Recently, I was in a meeting where someone’s baby was connecting with a team member’s dog through the camera. Working around children and dogs is part of this new normal for many of us, and instead of stressing about trying to keep other members of the family quiet and out of the way, we encourage team members to introduce us to current members of their household. Dogs and children bring joy to any meeting. Even if they’re only on camera for a few moments, it brightens everyone’s day!

Screenshot images of four dogs of Promet Source team members

3. Virtual Watercooler Questions

Since we can’t chat by the coffee machine or while sipping a LaCroix, I like to post fun random questions in our Slack Channel. Building rapport through light conversation is a great way to help connect the team with fun facts or experiences that we might have in common. After all, how else are you going to find out that someone else’s first concert was also Cool Kids On The Block?

screen shot from a Slack exchange concerning first album purchases

4. Get Fit Challenge

One of our team members reached out to the group wanting more accountability for his workouts. The cure? He started a “Promet Quarantine Fitness Accountability Challenge.” Participants share their goals and report in every week whether they are meeting them. 

5. Hat-Mandatory Meetings 

Most of us know about being able to change the Zoom background on a call (when settings allow for it), and that can spark some fun conversation. But matching a hat to the background, or simply requiring a hat, can be a fun way to kick off a meeting, and keep us from taking ourselves too seriously.

screenshot of a promet zoom meeting

This is just a glimpse into the many ways that Covid-19 quarantines have have sharpened our commitment at Promet Source to connection and creativity. 

In the meantime, we’re continuing to collaborate with our public sector, higher education, and enterprise clients on the development of amazing websites that redefine possibilities. Interested in what we can do you you? Contact us today.  

May 04 2020
May 04

Collecting rich and structured data

In our API-first and data-driven world, we need to collect rich and structured data. The Webform module for Drupal 8 empowers websites to build any type of form which collects any type of data.

The Webform module supports composites elements, which are multiple inputs working together to collect rich and structured data. Composite elements can collect information, including addresses. Composite elements combined with the Webform module's support for multiple values can collect multiple addresses that are represented using a table where rows can be added or removed. Yet, the Webform module's support for composite elements has some limitations.

Composites the good and the bad

Webform composites are easy to understand, implement, and customize.

The best way to begin using and understanding composites is to build a webform that contains an address element and examine how the address element's data is submitted, stored, and exported. Below is a quick demo of a basic address composite element. If you install and enable the Address module, you can add an 'Advanced address' element to your webforms, which does a great job of managing locality and zip codes.

Composite Address Example

Composite Address Example

If the default composite elements included in the Webform module do not meet your requirements, you can also create a custom composite in the Webform module's UI or using custom code.

To create a custom composite, add a 'Custom element' to your webform, select the desired elements and voila, you have a custom composite.

Composite Custom Example

Composite Custom Example

An immediate limitation that site builders will notice is the not all webform elements are available via the UI. Also, elements that collect multiple values are not supported. The Webform module stores submission data using an Entity-Attribute-Value (EAV) model, which limits the complexity of what type of data can be collected. Elements that require complex configuration, including entity references, are not supported via UI. Fortunately, developers can create custom composites in code.

Custom composites in code require that a developer defines a Form API composite element plugin and a webform element plugin with a summary template. Because this is a lot to understand, the Webform module includes a working example of custom composite in code. Custom composites in code allow developers to add complex elements with custom conditional logic and validation. All this functionality is encapsulated into a reusable element that can be added to multiple webforms.

Any organization needing to create rich and structured user data across multiple webforms should think about creating a custom composite in code. Learn more about creating a custom composite element by checking out the Webform Example Composite module.

If creating custom composites in code is too arduous, Rich Gerdes (richgerdes) created the Webform Composite Tools module, which provides UI for creating reusable composite elements.

Composites provide the easiest way of collecting rich and structured data. There are some limitations, and the Webform module now provides full support for tables, which offers another way to layout elements and collect rich data.

Tables the good and the bad

Tables provide a completely customizable way to collect information.

Before the Webform module supported composite elements, site builders were able to place elements in a table. A table is just a simple way to layout information using rows and columns to create cells. Any webform elements can be placed within a table cell, and "Yes!" entity references, multiple values, and even composite elements are supported.

The flexibility of building tables does require an understanding of the Drupal's render API. For this reason, support for tables was a hidden feature, but recently several people within the Drupal community began building custom tables within their webforms. I decided it was time to create a user interface for creating tables using the Webform's form builder.

To make it easier to build and maintain a table, all rows and child elements within a table are automatically named and incremented. The first row of a table can be duplicated to create new table rows. This automated naming convention ensures non-technical users can start laying out form elements in a table.

Tables and rows also support conditional logic. Conditional logic can be used to hide/show table rows and mimic how records are added and removed from a webform multiple element.

When to composite vs. when to table

Always start with a composite element and use tables for complex requirements.

Whenever possible, first try using a composite element. Composite elements are easier to manage, and they ensure that structured data is being captured and distributed. If a composite element does not meet your business requirements, it is worth exploring using a table.

The biggest plus and minus to building tables using the Webform module is every element is captured independently. The minus is the only 'data structure' provided by a table, comes from the table element's naming convention. The plus is that any element or conceivable layout can be built using a table. The Webform module sees each table cell as an individual element, which can be completely customized.

Webform Table Example

Webform Table Example

I feel that 80% percent of complex data form requirements can be addressed using a composite element. For the remaining 20%, building and maintaining a table provides unlimited possibilities that need to be properly planned out and executed.

If you are still not sure when to composite vs. when to table, please watch the video below for a recap of composite elements and tables.

Backing the Webform module

Open Collective is providing us, Drupal, and Open Source, with a platform to experiment and improve Open Source sustainability. If you appreciate and value what you are getting from the Webform module, please consider becoming a backer of the Webform module's Open Collective.

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OK

May 04 2020
May 04

I recently wrote about using drupal-check and drupal-rector to assist in upgrading your Drupal 8 code so that it's ready for Drupal 9. And in the comments for that post Gabor mentioned that I should check out the Upgrade Status module. So I spent a little bit of time playing around with it and here are my notes so far.

It's AWESOME, and you should try it. Thank you to everyone that's been working on it.

TL;DR: Upgrade Status generates a report that serves a sort of checklist to help you determine whether or not your site is ready to be upgraded to Drupal 9. It packs a lot of useful information into a single report. And it's worth taking the time to install it on a copy of your Drupal 8 site and seeing what it has to say.

Behind the scenes Upgrade Status performs the following checks, and probably more:

  • Are you using the latest version of the module?
  • PHP code deprecation via drupal-check
  • Check Twig templates for calls to deprecated functions
  • Check {MODULE}.libraries.yml files for deprecated dependencies
  • Analyze hook_theme implementations
  • Verify composer.json and {MODULE}.info.yml files are Drupal 9 compatible
  • Does the Drupal.org project provide a Drupal 9 upgrade roadmap?
  • Probably more...

Then it pulls this all into a nice visual report like the example below, complete with links to both issues and documentation to help you best resolve the issues it finds.

Screenshot of upgrade status report described in detail in this post.

Hosting environment report

The report starts by listing hosting environment compatibility. It's worth noting that you'll probably want to install the module and generate these reports on a non-production environment, and that these indicators are for the current environment. But it does give you an idea of what to look for on your production environment. Namely, are PHP, MariaDB (MySQL), and Apache up-to-date enough to be compatible?

Current requirements (in addition to what's already required for D8) are listed here: Environment requirements of Drupal 9 (drupal.org).

Custom code report

Then there's a section that reports on your custom code. Anything that's in this list is your responsibility to upgrade. So if you're looking for next steps, this is a good place to start. If you click the "X errors, Y warnings" link for any project it'll open a modal window with a detailed report of what needs to be done. And in most cases link you to the relevant change record, or documentation page.

Screenshot of detailed report for Drip module showing a single warning about missing code and a link pointing to where you can find more information.

Contributed projects report

This is followed by a report on all the contributed projects you have enabled. Note that Upgrade Status only scans enabled projects. This list provides the same link to see a detailed report as above, and a bunch of additional information as well. It'll indicate things like:

  • The Available update column will show either Up-to-date or a version number. If there's a version number this means you're currently using an out-of-date version of the project and should upgrade. Note that if this column lists N/A for everything make sure you've got the Update Manager enabled and that it's run a status check recently. If not, you can trigger one manually at Reports > Update status.
  • "Consumers >= 8.x-1.11 is compatible with Drupal 9.": There's a newer version of the module than the one I have installed and it is Drupal 9 ready. Learn how to update a module (or theme)
  • Some modules, like for example Recurly in the example above, provide detailed Drupal 9 roadmaps (Note: maintainers, you can add this via your project page!), that help indicate where things are at.

Try Upgrade Status on your site

Install it (I recommend you do so on a development environment) using Composer:

composer require 'drupal/upgrade_status:^2.0'
drush en upgrade_status -y

The project page mentions the optional Composer deploy, and Git deploy, modules. If you've got projects installed via Composer where the required version is a -dev version (e.g. "drupal/migrate_source_directory": "1.x-dev" or projects that have been added by cloning their Git repository, then you can install the respective optional helper module to ensure Upgrade Status can find the information it needs for those projects.

The reason you need these is because modules installed via either Composer (in some cases) or via Git don't contain the version key in their *.info.yml files that gets added automatically by Drupal.org. Upgrade Status uses this to determine what version of the module you're currently using.

Anyway, if you use Composer to manage your project adding Composer Deploy won't make things any worse and may make them better:

composer require drupal/composer_deploy
drush en composer_deploy -y

Note: After installing have Drupal run its Update status checks again (Reports > Update status).

Scan your projects

You need to tell Upgrade Status to scan your project(s) before it can provide detailed reports. This can be done either by navigating to the report page at Reports > Upgrade status then checking the box for each project you want to scan and pressing Scan selected at the bottom of the page.

Or use one of the included Drush commands. Because the module caches the results of each scan you can use Drush to run a scan and still view the detailed report via the module's UI.

What next?

I think the biggest win for me using Upgrade Status is that it helps illustrate where I should be spending my time. Once my custom code is ready to go I can pretty quickly see that state of the different contributed projects I'm using, and which ones are most likely to benefit from my helping out.

In my case the Group module is super important to what I'm doing, so I'll start by seeing what if anything I can do to contribute to getting that module Drupal 9 ready first. Simple OAuth is also very important so I should update to the latest version of that and run these checks again.

I also look at this list and think, I'm not using Configuration Installer, so I should remove that. And, in my use case I could switch to using the Drupal core Media Library instead of Entity Browser and Inline Entity Form which would remove those (plus their dependencies like dropzonejs and Entity Embed) from the list of things I need to worry about.

Here's some questions to ask yourself when reviewing the report provided by Upgrade status:

  • Do I know what the minimum hosting requirements are, and what do I need to do (if anything) to prepare my hosting environment?
  • Are there modules in this list that we're just not using at all and can be disabled and removed?
  • Are there modules that we might want to consider replacing with a new approach, or with a different project that is Drupal 9 compatible? Also consider new best practices. For example, Media Library can replace Entity Browser for many use cases, now that it's stable.
  • Which of these modules are the highest impact for my project? And what can I do to help move those ones closer to Drupal 9 readiness?
  • If I can't do this work myself who do I need to start working with to coordinate?

We've got a tutorial, Prepare for a Drupal-to-Drupal Migration that has lots of ideas about how to start the process of preparing for a Drupal 7 to Drupal 8 migration that's relevant here. One of the big ones is, start a spreadsheet and start collaborating with your team on tracking the status of things.

Example:

Google sheet showing a list of Drupal 7 modules and notes about their drupal 8 readiness.

Also, check out the Upgrade Rector project which aims to provide a UI for the drupal-rector toolset.

May 04 2020
May 04

Paul johnsonContinuing our short series of articles highlighting ways that the Drupal software and its community are building solutions to help combat the effect of COVID-19, today we hear from Paul Johnson of CTI Digital. Here, he describes their project at the Arts Council England.

Arts Council England support and help fund cultural activities within local communities, arts organisations, museums and libraries. After the UK government mandated the closure of all cultural venues including national parks and theatres, The Arts Council have made available 160 million GBP of emergency funding  to offer individuals and organisations working in the cultural sector new financial support during this crisis.

The Arts Council is providing:

  • Up to 90 million for National Portfolio Organisations (NPOs) and Creative People and Places (CPPs) lead organisations
  • 50 million for organisations that are not in receipt of regular funding from the Arts Council
  • 20 million for artists, creative practitioners and freelancers

(These figures are correct at time of writing)

Their Drupal platform is central to making the funding available by providing information and access to funding applications. With an urgent need to accept and process high volumes of applications, the Arts Council found themselves in a strong position as their existing Drupal website easily accommodating rapid creation of new site sections without need for developer intervention.

Arts Council England quickly created detailed pages using existing components that lead users through the application process. Clear and accessible design patterns help users hone in on useful information that answers everything from where the funding comes from, to how to use the funding application system. 

This information is available alongside videos and help articles. All of the content is also entirely accessible and provides a smooth user experience at what can be a distressing time.

screenshot of arts council website

Critically, the Arts Council is able to continue to build new pages, extend pages, and update content as the government introduces new measures. 

The funding applications currently push through a dedicated grant-based system, but Arts Council England have the capability to manage applications directly within their Drupal platform if required at a later date. 

Learn more about the Arts Councils support for arts organisations and individuals on their website

May 04 2020
May 04

If you’ve ever wished there was a way to easily import CSV data into your Drupal website then this post is for you. With the new Entity Import module, website admins can easily add and configure new importers that map CSV source files to Drupal 8 entities. Entity Import adds a user interface for Drupal 8’s core migration functionality. It lets you add importers for any entity in the system, map source data to entity fields, configure process pipelines, and of course, run the import.

Why Another Drupal Import Module?

In Drupal 8 there are already several good options for importing and migrating content using the admin interface.

The Feeds module is one approach for importing content, with a great user interface and huge community of support. Feeds has been around for 7+ years, has been downloaded 1.8 million times, and, according to its Drupal project page, is being used on more than 100,000 websites.

The Migrate module, a part of core for Drupal 8, is an incredibly powerful framework for migrating content into Drupal. With Migrate, developers can create sophisticated migrations and leverage powerful tools like rollback, Drush commands, and countless process plugins for incredibly complex pipelines.

We use both Migrate and Feeds extensively. (Check out this recent post from Joel about getting started with Migrate.) Recently, though, we needed something slightly different: First, we wanted to provide Drupal admins with a user interface for configuring complex migrations with dependencies. Second, we needed Drupal admins to be able to easily run new imports using their configured migrations by simply uploading a CSV. Essentially, we wanted to give Drupal admins an easy-to-use control panel built on top of Drupal core’s migrate system.

My First Use Case: Complex Data Visualizations

Here at Aten, we do a lot of work helping clients with effective data visualizations. Websites like the Guttmacher Institute’s data center and the Commonwealth Fund’s 2018 interactive scorecard are great examples. When I started working on another data-heavy project a few months ago, I needed to build a system for importing complex datasets for dynamic visualizations. Drupal’s core migration system was more than up for the task, but it lacks a simple UI for admins. So I set about building one, and created Entity Import.

Getting Started with Entity Import

Download and Install

Entity Import is a Drupal module and can be downloaded at https://Drupal.org/project/entity_import. Alternatively, you can install Entity Import with composer:

composer require drupal/entity_import

Entity Import is built directly on top of Drupal’s Migrate module, and no other modules are required.

Importer Configuration

Adding New Importers

Once the Entity Import module is installed, go to Admin > System > Entity Import to add new importers. Click “Add Importer.”

For each importer, you will need to provide:

  • Name - In my case I used “Dataset,” “Indicators,” and “Topics.” Generally speaking, I would name your importers after whatever types of data you are importing.
  • Description - An optional description field to help your Drupal administrators.
  • Page - Toggle this checkbox if you want to create an admin page for your importer. Your administrators will use the importer page to upload their CSV files.
  • Source Plugin - At the time of this writing, Entity Import provides just one source plugin: CSV. The system is fully pluggable, and I hope to add others – like XML or even direct database connections – in the future.
  • Plugin Options - Once you choose your source Plugin (i.e. CSV) you’ll have plugin-specific configuration options. For CSVs, you can choose whether or not to include a header row, as well as whether or not to support multiple file uploads.
  • Entity Type - Specify which entity type your data should be imported into.
  • Bundles - Once you pick a entity type, you can choose one or more bundles that your data can be imported into.
Field Mappings

Configuring Importers

Each Importer you add will have its own configuration options, available under Admin > Configuration > System > Entity Importer. Configuration options include:

  • Mappings - Add and configure mappings to map source data to the appropriate destination fields on your entity bundles. (Important side note: when creating mappings, the human readable name can be whatever you wish; the machine name, however, needs to match the column header from your source data.)
  • Process Plugins - When you add new mappings you can specify one or more process plugins directly in the admin interface. This is where things get interesting – and really powerful. Drupal 8 provides a number of process plugins for running transformations on data to be migrated (read more about process plugins in Joel’s recent migrations post). With Entity Import, you can specify one or more process plugins and drag them into whatever order you wish, building process pipelines as complicated (or simple) as you need. Your admins can even manage dependencies on other imports; for example, mapping category IDs for an article importer to categories from a category importer. Again, no coding necessary. Entity Import provides a user interface for leveraging some of Migrate’s most powerful functionality.
Import Screen

Importing the Data

Once you’ve added and configured importers, go to Admin > Content > [Importer Name] to run a new import. You’ll see three tabs, as follows:

  • Import - This is the main import screen with upload fields to upload your CSV(s). If your import has dependencies specified in any of its process plugins, the import(s) it depends on will show up on this screen as well. (TODO: Currently, the interface for managing multiple, interdependent imports is a little complicated. I’d like to make it easier for users to visualize the status of all interdependent migrations at-a-glance.)
  • Actions - After you run an import, you can rollback using the options on the actions tab. (TODO: I’d like to add other actions as well; for example, the ability to change or reset import statuses.)
  • Logs - Migration logs are listed for each import, allowing admins to quickly see if there are any errors. You can quickly filter logs by message type (i.e. “notice” or “error”).
Import Actions

My Second Use Case: Importing Courses for a University

Soon after wrapping up a working prototype for the data visualization project I mentioned above, I was tasked with another project. A prominent university client needed to quickly import an entire course catalog into Drupal. Beyond running a single import, this particular organization needed the ability to upload new CSVs and update the catalog at any point in the future. The use case was a perfect match for Entity Import. I installed the module, spent a few minutes adding and configuring the course importer, and presto!

Next Steps for Entity Import

Writing clean, reusable code packaged as modules is a huge benefit for Drupal development workflows. Even better, Drupal.org module pages provide really great tools for collaboration with features like issue tracking, release management, and version control built into the interface. I have a few TODOs that I’ll be posting as issues in the days ahead, and I am excited to see if Entity Import fills a need for others like it has for me.

If you run a data or content -intensive website and have trouble keeping everything up to date, Entity Import might be just the ticket. We’d love to give you a quick demo or talk through how this approach might help – just give us a shout and we’ll follow up!

May 03 2020
May 03

Time and again, we are reminded of the adage: “There’s unity in diversity.” Contemplating this deeply would make one realise the vastness of this statement. Depending on the region of the world you operate in, diversity may connote issues of religion, race, nationality, ethnicity, class, gender, age, sexual orientation or physical ability. It may constitute all of these or none of them. To formulate a perfect diversity and inclusion (D&I) strategy that is really global in nature, one has to understand the culture, politics, economics and relevant legislation within the regions. Taking diversity and inclusion global is not about the distribution of certain programs but about creating a movement that holds D&I as a fundamental tenet.

Black and white photography of a white person and a black person holding each others' hands to represent diversity and inclusion


Defining, leveraging, and measuring diversity and inclusion is of great relevance. More than ever, businesses, governments, nonprofits and other institutions have been putting a lot of emphasis on the adoption of a global mindset in order to remain viable and relevant in the global marketplace of this day and age. Diversity and inclusion practitioners have been perpetually engaged in assisting people from all backgrounds to hear and be heard, understand and be understood, and work in unison with higher levels of productivity.

Open source communities have been at the forefront of this work. Building a diverse and inclusive community is increasingly becoming a top priority of open source enthusiasts. Drupal, one of the market leaders in the world of open source content management systems, is also backed by a strong and growing community that embraces the principles of D&I. From workplaces to open source communities, the D&I factor has been very impactful. To understand how the open source community, the world over (Drupal, in particular), is grabbing the plate full of diversity and inclusion strategies with both hands, we need to look deep into its immense necessity and importance.

Richness of diversity and inclusion

Diversity is a powerful term and calls for empowering people. It emboldens the idea of respecting and appreciating what makes a person different from another. Exploring the differences in a secure, positive and nurturing ecosystem is the basic principle of diversity.

When you talk about inclusion, you talk about a sense of belonging that a person, no matter what socioeconomic status or ethnicity or race or any other criteria he or she belongs to, feels in a community. People feel valued and respected which makes them put their best put forward and lend immaculate performances.

Illustration showing four icons resembling holding hands, fist pump, people sitting around a table, and a bulbSource: Deloitte

It’s the leadership group that can make a massive impact. Every individual leader, both intellectually and emotionally, needs to buy into the value of belonging. In other words, you can call it empathetic leadership. It’s a critical starting point. It makes a person, who is part of the leadership group, remember the times when they were excluded, shamed, or interrupted. Tuning into empathy can make a person understand the feeling of being excluded or making others feel excluded. When you have a strong leader, who embraces D&I principles, practices them, and enables others to choose this path, you can expect behavioural changes to kick in and culture reset to happen. According to Deloitte, following characteristics, interrelated and mutually reinforcing, defines a good leader.

Illustration showing a circle encircling a human with different icons resembling people on the circleSource: Deloitte

The importance of diversity and inclusion at the workplace has already been realised by top companies and necessary steps have been taken. If you look at the financial sector, for example, D&I remains a higher priority according to a global CEO survey. This, they believe, would eventually pave the way for newer talents.

Bar graph with orange coloured vertical bars and red backgroundSource: PwC

As one of the largest media networks, BBC has chalked out a clear-cut plan of making diverse thinking and inclusive action as its elemental parts.

Tabular column in violet colour with text and numbers written about diversity and inclusionSource: BBC

Another industry giant, Nestlé, has also made discernible commitment to embed diversity and inclusion across everything that it does with a primary focus on culture, innovation and society. Action plans for creating a gender balance, promoting cultural agility, empowering different generations at the workplace, supporting people with disabilities, tackling discrimination against LGBTQ+ community, and so forth, have been increasingly emphasised upon and put to work.

[embedded content]


Open source communities embracing D&I

Technology that has taken birth with the help of homogenous groups has shown to be negatively impacting the women in the past. Amazon had to scrap an AI recruiting tool as it showed bias against women. Back in 2014, menstruation was not included as a health metric in Apple’s health tracking app. And, a story on Vice stated how the prospect of fully artificial heart implants seemed exciting for men and not for women as they were not designed to fit women. Therefore, while building open source software, diverse participation can ensure equitable outcomes.

While building open source software, diverse participation can ensure equitable outcomes.

The importance of diversity and inclusion has been coming to realisation and large organisations have already been trying to make sweeping changes to make their workspaces more diverse and inclusive. 78% of organisations, according to a report on ZDNet, are running all part of their businesses with open source software. So, in addition to organisations, open source communities need to imbibe the principles of D&I.

A building in blue and red with statistical information on diversity and inclusion written around itSource: ZDNet

It’s true that anyone who wishes to license an open source project has to agree, among other things, to not get involved in any discriminatory action. However, it is easier said than done. For example, in a GitHub survey, which is the world’s leading repository of open source code, over thousands of open source users and developers across the globe were asked questions on a range of topics. Of that randomly selected cohort, 95% of the respondents were found to be male, 3% as female and 1% as non-binary. 

Let’s put it this way: Only the scanty vestiges of the day have come in through the open door. In spite of a faint shimmer of light in the hall, the doorway yawns impenetrably black. Open source has work to do. A lot needs to be done because the obstacles faced by the under-represented groups in the open source fraternity are piling up. The position, they are finding themselves in, can’t be addressed through a single lens or strategy.

In spite of a faint shimmer of light in the hall, the doorway yawns impenetrably black.

The positive sign is that the open source world has shown tremendous improvement and has been proving their commitment to D&I. To start with, there’s a collective of people called Open Source Diversity that is working on driving more D&I initiatives in free and open source software communities. It has laid down the basics that can help make an open source project more friendly and inclusive. For instance, the Open Source Diversity prescribes the usage of the Contributor Covenant. This is a code of conduct for open source projects that is created to overtly welcome everyone to contribute to open source software.

Mozilla, in 2018, to promote D&I within their ranks and their work, prepared an action plan for making the code review process more egalitarian and subvert unconscious gender bias.

The Linux Foundation takes a lot of pride in being an open, friendly, and accessible community for new participants and doesn’t leave any stone unturned to show the world the proof of that.

Illustration with blue background and statistical information on diversity and inclusion inside itSource: The Linux Foundation

Open source meritocracy, where there is recognition and decision-making on the basis of work or talent that a person can contribute to the project, is something that Tor firmly believes in and likes to put to practice. This is why it started the Global South Initiative to improve diversity, inclusion and equity in the work that it was doing and get more people from the ‘global south’ to be involved in the Tor community.

GitHub, to cultivate a culture of inclusion, provided training to its managers on the best practices of promoting inclusivity and established a recurring dialogue between its Leadership Team and its Inclusion Advisory Council.

The Apache Software Foundation has ambitious plans too. It wants to become the most equitable open source foundation in the world.

In a bid to promote nonprofits that are dedicated to education, inclusiveness and skill-building for under-represented groups, IBM even awarded $50,000 to Girls Who Code for the latter’s terrific work on increasing the number of women working in computer science.

Drupal’s contribution to promoting diversity and inclusion

It’s more strategic than arbitrary when it comes to the efforts of the Drupal Community to promote D&I. There has been a year-on-year statistics aggregation happening to check how Drupal’s development is being sponsored.

In an in-depth analysis report of 2018-2019 edition, characteristics like gender diversity and geographic diversity were analysed. The data showed discernible gender imbalance in Drupal and underscored the need to continue fostering D&I in our community.

bar graph with blue and green vertical bars showing diversity and inclusion statisticsSource: Dries Buytaert's blog

When measuring geographic diversity, it was seen that Europe and North America continued to contribute more and more to Drupal but the contributions from Asia were declining year over year.

https://dri.es/Source: Dries Buytaert's blog

Before exploring Drupal and its various efforts of creating a sense of belonging among its community members, let’s go across the pond and check out WordPress Community’s efforts.

With a clear hegemony over the market share, WordPress, as an open source CMS, is powering the most number websites around the world. (Drupal wins on the security front.) It’s the big players in the open source CMS market, like WordPress and Drupal, who need to show the way forward. WordPress has been working on making its community more diverse by driving some splendid initiatives. They have developed a workshop, for example, that trains women and other people from traditionally underrepresented groups in technology. They help them out to present sessions at conferences. The sole aim is to see more underrepresented groups as speakers and bring about a real change in the speaker roster for their annual conferences. WordPress has also been very supportive of its LGBTQ+ community and has been celebrating Pride Month every year. In short, WordPress is doing great work.

There’s a reason why we talked about WordPress (a competitor to Drupal). When it comes to the question of diversity and inclusion, open source communities work together to increase the number of participants and contributions from marginalised and underrepresented groups. Jill Binder, who has been at the forefront of major speaker diversity improvement programs within the WordPress community, helped the Drupal Diversity and Inclusion Contribution Team with its efforts.

Blue coloured heart shaped icon that represents the logo of diversity and inclusion team of Drupal


DDI is an independent collective within the Drupal Community that champions a number of initiatives to foster a welcoming and inclusive culture everywhere Drupal exists - from events to online meetups to workplaces. Jill helped DDI organise a speaker diversity workshop in September 2019 to help people from underrepresented groups to prepare for submitting talks to global events.

To make sure prospective and existing community members are treated with respect, Drupal has instituted a community-wide code of conduct. Drupal’s Community Working Group’s documentation includes clear guidelines for:

  • Handling the conflict between you and another contributor
  • Escalating the conflicts to this Community Working Group if an issue feels unresolvable
  • Reporting the cases of harassment no matter if you are the victim or an observer of it

To make the Drupal project accessible to a diverse user base, it has a Core Accessibility Gate which has to be passed before any patch can be shipped.

With a majority of demographic surveys requiring users to conform to restrictive identity fields and alienating underrepresented groups, the Open Demographics Initiative wanted to develop forms that are more inclusive. In addition, it wanted to give people more authority over the data they think is right to be revealed. Therefore, the Drupal Association planned to implement Open Demographics Initiative’s recommendations on Drupal.org. It collaborated with the Open Demographics team for adding the recommendations to the user registration process on Drupal.org.

Dries Buytaert, the founder and project lead of Drupal, firmly believes that “everyone deserves the opportunity to contribute”. He encourages Drupalists to inspire and enable a new, diverse group of people to contribute to Drupal through Drupal Core Mentoring. He also advises leveraging the Drupal Apprentice Initiative by TalentPath that can help businesses in building a diverse talent pipeline through apprenticeships.

Major events like DrupalCons and DrupalCamps gather a range of citizens of the Drupal ecosystem to learn, share and collaborate together. The perspectives, vigour and diversity of experiences these participants share make these conferences invaluable. These Drupal events ensure that everyone, no matter who they are or where they are from, is invited to attend.

Tweet showing coloureful droplet like icon on top-left and text below about diversity and inclusion in Drupal event


These Drupal events have made it a priority to include D&I as an important element to be tracked, measured and improved. For instance, DrupalCon Seattle 2019 saw an increase in the number of sessions submitted from underrepresented groups.

White background and statistics in numbers written inside it about diversity and inclusion in Drupal communityWhite background and red strips on top with statistics on diversity and inclusion in Drupal community written inside itSource: DrupalCon Seattle 2019

Final note

Open source community carries a great potential to transform society for the better. The more diverse and inclusive an open source community is, the stronger, vibrant and ambitious it is in its approaches. Drupal is making giant strides. A lot of positive signs have emerged in the recent past to make the Drupal project better.

Drupalists have to constantly work on making the Drupal ecosystem a place where people from all walks of life can participate and contribute their knowledge and skills.

OpenSense Labs embraces the principles of diversity and inclusion and ensures that it sets an example of an organisational culture eloquent of wonderful diversity at the workplace. Ping us at [email protected]om to explore the wonders of promoting and embracing D&I.

May 03 2020
May 03

This is part two of a two-part series on different ways and benefits of contributing to an open-source project. In the first part, we looked at the perks of contributing to an open-source project. In this article, we will explore Drupal project, one of the largest open-source projects with a thriving community, and the ways to get involved with it.

Don’t we all want to leave our mark on this world and to know that our life matters? I’m sure all of us want to leave a legacy that means something to people. By legacy, I mean putting a stamp on the future, and making a contribution to coming generations. 
In one of the scenes of Dead poets society, John Keating, who is an English teacher, discusses with his students about the meaning of life. During his lesson, he quoted from Walt Whitman’s poem, Oh Me Oh Life, as follows:

“Oh life! of the questions of these recurring, Of the endless trains of the faithless, of cities fill’d with the foolish. What good amid these, O me, O life? Answer: That you are here — that life exists and identity, That the powerful play goes on, and you may contribute a verse.”

Illustration, symbolising Drupal contribution. consisting of a blue coloured Drupal logo, shaped like a droplet, being carried on a palm


The poem explains that life is like a play, in which anyone who has ever lived gets to contribute one verse. Later, Keating questions the students: “What will your verse be?” 

Your legacy will be that you contribute to the verse! 

Similarly, when you contribute to an open source project, you not only contribute to its growth but also to yours. You leave your mark in the project that you contribute to, inspiring hundreds of other contributors. Drupal allows its users to freely modify and integrate the work into their projects. It gives you ways to freely plan and exchange ideas with like-minded people in their community. It also offers immense opportunities to contribute and leave your mark. Drupal.org is home to thousands of contributors and it's where users find the projects and succor they need to make Drupal better everyday.

Why Drupal?

Now that we know how much value a contribution holds, let’s talk about why we should specifically choose Drupal over any other CMS.

Have you wondered about the one similarity between the websites of The Economist, NY Government, Arizona University and Mint? 

Well, these websites are a product of Drupal open source content management system (CMS) framework. 

PHP is an open source script code, which is freed from any licensing costs and a choice of developers from a few years. Drupal is written in PHP code, and, therefore, it saves money when it involves developing a web site using it.

A blue coloured droplet shaped icon with Drupal features being written inside it


Drupal is very flexible due to its modularity. Which means, you can easily extend it. It is capable of managing and creating a wide variety of content and this has proved to be one of its greatest selling points. Hence, Drupal enables a flexible design platform to create content rich websites for different markets like commerce or media. 

Another major reason to choose Drupal is its scalability. It’s used by NASA and Oxford University because it’s highly scalable and great at accommodating content growth. Even if you plan to deliver the best digital experience to your customers, it will all go in vain if your site is hit with a lot of traffic and goes down. No matter how much traffic you receive, Drupal can handle it.

In addition to being one of the best tools for creating websites, the greatest strength of Drupal is that it is one of the largest open source communities. The open source community proffers voluminous public documentation, chat and mailing lists, well-developed discussion board parallel to an air of affable online culture.

Drupal ensures that its users get rapid responses from a dedicated security team along with a large professional service provider ecosystem and Drupal's community, which is one of the largest developer communities in the world. The goals of the Drupal security team include resolving reported security issues, helping the infrastructure team to keep the Drupal.org infrastructure secure and providing documentation on securing your site. 

According to the Imperva’s report on The State Of Web Application Vulnerabilities in 2018, Drupal reported less number of security vulnerabilities in comparison to Wordpress. While Wordpress reported 542 security attacks in 2018, Drupal reported 107. 

A bar graph with yellow, blue, violet and red coloured vertical graphsSource: Imperva

Drupal also makes content authoring easy. The tools that Drupal provides makes it easier for the content creators to do their jobs. Drupal allows the creators to edit and write the content in place. Even if you are away from your laptops/PC’s, mobile editing comes to the rescue! You can very easily edit and approve content from any mobile device. Content revision is another tool that comes in handy to keep a track of all the changes made in the content and by whom.  

Drupal has made building multilingual websites faster and easier. Full translation of every part of the site is provided by four core modules in Drupal. Every part of the interface can be customised according to your language and needs. 

Drupal 8 comes with 94 different languages and they can be installed without any additional components. Also, the diversity in languages makes it hassle-free for the site administrators!

Doesn’t matter what device you’re using, Drupal helps in building responsive websites and provide a seamless content experience anytime, anywhere. 

In order to make Drupal content ready for delivery to site apps and free from presentation, Drupal lets you decouple the back and front-end where needed.

Frank Nagle, in his research at Harvard on the hidden benefits of giving back to open source, found that those who contributed to open source projects gain more productivity and knowledge of the software they use everyday. So, the more you contribute to Drupal, the more you learn about it.

Your contribution is visible to anyone around the world and can learn your name and admire your skills and also might be the one to help you land your dream job! 

Statistical outlook on the development of Drupal

Drupal, being an open-source project, does not have employees to deliver improvements and support. It depends on its varied community of individuals who work diligently to push the project forward by working on not just web development and user support but also many other contributions and interests that comprise, marketing, helping to review issues, organizing user groups and camps, maintaining documentation and speaking at events.

To start doing your bit, you can start by making an account on Drupal.org. Follow the steps and you will be ready to start contributing in no time! Now, let’s look at some of the key stats related to the contributions made to the Drupal project.

The project pipeline

According to Drupal Business Survey 2019,  the Drupal project pipeline has shown significant growth or stayed the same in 2019 as compared to last 2018. 

The win rates of Drupal projects have also remained the same. The future of Drupal looks moored in the coming years, based on the response of 2019. 

The survey also stated that out of the total 118 businesses that, 111 contribute to Drupal and 7 don’t. 

Pie chart with blue coloured regions to show who's contributing to Drupal and the overall percentage of Drupal contributionSource: Drupal.org

In total, the Drupal community worked on 3,474 different Drupal.org projects in 2019 compared to 3,229 projects within the period of 2017-2018 which is an 8% year over year shoot up!

Credits

Every contribution made to Drupal is valued, whether they're code contributions, or non-product and community-oriented contributions such as organizing events, giving talks etc.

The credit system has proven to be more accurate in conceding types of Open Source contribution and is both pragmatic and important.

The initial ideas for giving credits were proposed in 2014 by Dries Buytaert, the project lead and founder of Drupal. He wanted to start a page on Drupal.org that would show which organization contributed to Drupal and the number of times the contributions were being made. Credit is a very powerful motivator for individuals and organizations. 

Later, in the spring of 2015, Drupal added the credit feature for people to credit their work. The credit feature has played a very important role in increasing the scalability and development of Drupal. 

According to Dries Buytaert's report on Drupal.org’s contribution data  for 2018-19, Drupal.org's credit system received contributions from 8,513 different individuals and 1,137 different organizations which shows a significant growth in comparison to the report of 2017-18.

Bar graph with orange and yellow bars to representing who's contributing to Drupal


The majority of work is done by a relatively small number of contributors. These contributors put a large amount of time and effort into developing Drupal and its projects. One of these contributors includes Gaurav Kapoor who is a Drupal Architect at OpenSense Labs.

Volunteer contributions proved to be very important to Drupal, even though there are almost four times as many purely sponsored credits as compared to Purely Volunteer credits. 

The community captured more number of non-product contributions because of the large jump in volunteer credits. Even though the ‘sponsored credits’ grew more in number in comparison to ‘volunteer credits’, the relative number of ‘volunteer credits’ seemed to make a jump!

Bar graphs with blue and green horizontal bars to show Drupal contribution dataSource: Dries Buytaert's blog

Diversity and inclusion

Supporting diversity and inclusion within Drupal is supremely important for the health and success of the project. Drupal welcomes all kinds of contributors ranging from programmers to designers and writers to mentors.

The Drupal diversity and inclusion team tries to recruit teams from places where the people from diverse backgrounds collaborate. Drupal contributors have become more diverse but need more efforts to be put in for widespread reach of D&I principles among its members. And when a team has diverse members, it makes better products for more people! 

According to the data contributions that were recorded in Drupal.org’s contribution data for 2018-2019, only 8% were made by contributors who do not identify as males which is a 1% increase in comparison to last year. 

Bar graph with yellow and orange bars to show who's contributing to Drupal


One of the reasons that Drupal suffers from a lack of diversity is that not everyone has an equal amount of free time to make contributions. Research shows that women still do more unpaid work in comparison to men, for example, household chores, child care etc. This makes it difficult for women to contribute on an unpaid basis. 

When geographic diversity was measured, it was observed that individual contributors were from six continents and 114 countries:

Bar graph with yellow and orange bars to show who's contributing to Drupal


Contributions from Europe and North America have increased. Asia, South America and Africa together account for 6.3 billion out of 7.5 billion people in the world and hence, pose great opportunities for Drupal. 

Different ways to contribute to Drupal

Coding Is The New Literacy

If you are the one who likes to fix issues, developing is for you! So many coders believe that coding should be open. Developers’ contributions can be in the form of both contributed modules/themes and patches to core. When you find a bug in the project, you'd want to have a look on the source and patch it yourself. 

When you contribute to an open source project like Drupal as a developer, you ensure that Drupal can do what the contributor needs to do in his next project.

The Drupal core issue queue contains a substantial amount of unresolved issues, and demands the assistance of more volunteers to address these issues deftly. 

Mentoring: Effective Way To Contribute

Every contribution holds value and mentoring is the most effective way to contribute. When you mentor as a contributor, you not only help the individual but also the entire Drupal community. 

Drupal core mentors inspire, enable, and encourage new core contributors by working on the core tools, process, and community for a hassle-free experience for the new contributors. 

And not just that, the gratitude you earn by mentoring someone is beyond everything! 

Interacting With The Community

When you join Drupal as a new contributor, you would like to interact with someone who shares the same interest as yours, someone who has experience in contribution. Drupal has a community of thousands of passionate individuals around the world. It also offers some tools that are used to keep in touch with them. There are support forums on Drupal.org where you can put your queries and get your doubts cleared by other members of the forum. Find like-minded individuals who are working on the same tasks as yours on Drupal Groups. It is an online space where hundreds of groups come together to plan projects and work on them and also to organise local meetups or discuss anything for that matter. The Drupal community is also very active on IRC and Slack.

Running Drupal Tests

There is so much more in open source than just coding. Testing is one of the ways to contribute and there are so many things to test for and so many ways to help in Drupal (like reviewing patches).. For helping Drupal with testing, you need to have a keen eye for detail or just a knack for breaking things. Good testing directly contributes to the stability of the platform and is a preeminent way for individuals of all backgrounds to make a valuable contribution to the project.

Translating Drupal to Your Language

People get involved in Drupal from around the world. Drupal supports many languages, and there is always a need for contributions in translation. If you are the one who knows multiple languages, you can contribute by helping to maintain Drupal core or contribute to module translations. All the translations are managed on the Drupal.org translation server. You can start contributing by logging in with your Drupal account and join the relevant language team. 

Designing and Usability

If you are into design and graphics, you can help with a lot of projects who need work in their logo designs, icons and other graphics that are visually appealing. Being a designer, you first need to find yourself a project whose goals you understand and relate to. A designer needs to focus and make sure that they understand users' needs. There is Drupal’s usability group where you can create, discuss and plan great Drupal UX designs

Making A Donation

There are so many people who want to contribute but don't have the time. So, if you want to say "thank you" to the folks who have put hard work into making Drupal what it is and ensure that Drupal's infrastructure stays healthy and strong, you can consider a monetary donation! Donations are also a part of the contributions that take Drupal forward in many ways. During the uncertain times, like the current Covid-19 pandemic, Dries Buytaert has pledged $100,000 in individual contributions to the Drupal Association. After a week of taking this pledge, 29 organizations of the Drupal community pledged another $100,000. Now, for every $1 you donate, Drupal gets $3. To donate to #DrupalCares visit the donation page of Drupal association.

Marketing Drupal

Marketers love the various marketing tools as they help them get better analytics and also effectively streamline their work benefits. Drupal provides easy integration with marketing automation tools which is a plus for marketers! Marketers can freely produce convincing and more powerful campaigns in their native languages. Drupal marketing group for the branding and marketing committee is open for all the marketers out there!

Organizing An Event

You can do your bit for Drupal by organizing events in your area. There are many types of Drupal events, starting from the colossal and comprehensive DrupalCons that are organized by the Drupal Association, to smaller local DrupalCamps and local Drupal Group meetings. DrupalCon unifies experts from around the world who create progressive digital experiences that include keynotes & sessions for leaders, developers, and end-users, summits & training industry-focused to elevate your skills. Drupical displays all the Drupal events and you can also check out local Drupal groups and stay updated on what events are taking place.

Conclusion

There are many benefits to contribution: from individuals gaining knowledge and expertise, to organisations building stronger more productive teams, to the broader open source community as a full. Drupal is continuously growing in government, higher education and the enterprise state.

Even the smallest of contributions count on Drupal. The feeling when you see your name appear on a project is beyond words. 
So, are you ready to leave your legacy? Ping us at [email protected] to be a part of the growing number of Drupal contributors.

Keep your customers! Drupal + eCommerce + You

May 01 2020
May 01

How to Futureproof Your Next Project with Drupal Rector

Apr 30 2020
Apr 30
Apr 29 2020
Apr 29

CRMs are helpful assistants for businesses in their communication with current and prospective customers. No wonder that many business owners want to integrate CRM software with their sites.

Luckily, the enhanced third-party integration opportunities in Drupal 8 pave the way to any integrations you need, which is one of the significant Drupal 8 benefits for a business.

The InternetDevels web development team has extensive experience integrating Drupal sites with various CRMs, so you can ask us for help with a task like this at any time.

The focus of our today’s post is specifically on Drupal integration with Salesforce. We will review the opportunities in this area, as well as share one of the recent Drupal case studies of building a Drupal 8 website with Salesforce integration.

What is Salesforce? A glimpse of the famous CRM solution

Salesforce is an industry-leading cloud-based CRM (customer relationship management) solution that brings businesses and customers together. The word “sales” in its name clearly shows one of its key missions — it helps companies effectively manage their sales, customer service, marketing automation, collaboration, and analytics. The platform gives the sales, marketing, commerce, and other departments a shared view of every customer.

Salesforce Suite

Benefits of integrating Drupal and Salesforce

If you have a Drupal website, your sales and marketing team can enjoy all the power of Salesforce described above through a smooth integration between the two systems. Here are at least a few benefits you will get:

  • your sales and marketing workflows become much more efficient
  • you save time and money thanks to a completely integrated system
  • you never miss a prospective customer thanks to instant email notifications
  • you have a chance to track your competitors
  • both one-way and two-way data sharing between Drupal and Salesforce is possible
  • it’s easy to create and update the data thanks to smooth synchronization
  • authorization features improve the data protection

Drupal integration with Salesforce: how it works

The essence of any integration is a perfect data exchange — Drupal websites need to both push the data to and pull it from Salesforce. As stated above, any integrations have become a breeze in Drupal 8 thanks to its API-first approach.

Drupal also boasts a wealth of ready made contributed modules that facilitate specific integrations. So, of course, there is a useful Salesforce module for Drupal 8 (and Drupal 7 as well). It’s called the Salesforce Suite and takes care of the seamless integration. The suite includes a bunch of submodules, so let’s take a tour on them.

A glimpse at the modules for setting up Salesforce on Drupal websites

The Drupal 8 Salesforce Suite module

The Salesforce Suite is the main module for the integration. It synchronizes Drupal website’s entities (content nodes, users, etc.) with Salesforce objects (contacts, organizations, etc.) The exact relationship between these is provided by field mapping.

The module supports the import and export of data, which can be both in real time or asynchronously, based on the Cron runs. The Drupal 8 Salesforce module version has been updated in 2020.

The Salesforce Suite submodules

Here is how the particular tasks are performed by the efficient team of the submodules in the suite’s Drupal 8.4 version:

  • Salesforce Integration. This submodule is responsible for the Drupal and Salesforce integration.
  • Salesforce JWT Auth Provider. This tool in the suite takes care of the key-based Salesforce authentication.
  • Salesforce Mapping. To better synchronize the exchanged data, field mapping is used. This submodule maps Drupal entities to Salesforce objects.
  • Salesforce Mapping UI. This submodule provides a handy user interface that allows you to manage the mapping settings.
  • Salesforce Logger. This member of the suite provides for the consolidated logging of the Salesforce Log events.
  • Salesforce Push. This tool is particularly responsible for pushing the Drupal data to Salesforce when updates are made on Drupal.
  • Salesforce Pull. The opposite job is performed here — the Salesforce objects are imported based on the mapping.
  • Salesforce Soap. This submodule exposes a SoapClient service to communicate with the Salesforce SOAP API.
  • Salesforce Webform. This submodule adds support for webforms fields in the mapping process to provide Drupal Salesforce webform integration.

Salesforce Suite module for Drupal and Salesforce integration

How to integrate Salesforce with Drupal: case study

For the Drupal 8 case study we are sharing now, our customer recently reached out to us with a request to build a simple website. The site didn’t have to include anything special — just a few content types to match the InDesign template, Google Analytics tracking, and, at the most complex part, Drupal integration with Salesforce.

When we are asked for “simple website development,” we understand the customer’s budget is limited. So we try to help them and make even the seemingly complex parts simple. If you are also interested in development services based on this approach, you can drop us a line.

One of the ways to achieve this is to use the Drupal core and contributed solutions. That’s exactly what happened in our case — we used the Salesforce Suite to implement this integration.

To relate the Drupal data to the Salesforce data, we relied on the built-in field mapping types of the Mapping module in the Suite without writing custom ones. The built-in field mapping types include properties, related IDs, constants, tokens, and more, so they cover plenty of simple cases. This is exactly what was needed for our customer’s case — simple user properties.

Steps of Drupal integration with Salesforce

Here are the standard steps to integrate Salesforce with Drupal that we performed and that may come in handy to anyone.

1. The Salesforce part

  • Our customer signed up for a Salesforce Developer Edition account.
  • We advised them on how to create a new Salesforce Connected App (at Setup — Create — Apps — Connected Apps — New), including the enabling of the OAuth settings and specifying the callback URL to their domain.
  • After that, they received their consumer keys that needed to be saved for the next step.

2. The Drupal part

  • On the customer’s Drupal website, we installed the Salesforce Suite and enabled its key submodules.
  • On the Administration — Configuration — Salesforce — Authorization page of our customer’s Drupal admin dashboard, we entered the credentials received from the Salesforce in the previous part.

3. Mapping Drupal to Salesforce

  • Next, we went to the Administration — Structure — Salesforce — Mappings page on the Drupal dashboard.
  • We created a mapping instance labelled “Customers” and specified the Drupal entity type “User” should be mapped to the Salesforce object “Contact.”
  • Next, we mapped all the necessary Drupal user properties (first name, last name, email, etc.) to the corresponding Salesforce fields.

Finally, how to test Salesforce and Drupal Integration?

Here are the steps to test whether the integration works:

  • We created a new test user on the Drupal website to see if it would be automatically pushed to Salesforce.
  • Next, we ran Cron at Administration — Configuration — System — Cron to refresh the Salesforce contacts.

Integrate your Drupal website with Salesforce or another CRM!

If you’ve been thinking about integrating your website with Salesforce or any other CRM of your choice, or building an entire website for your business, the time is now. Our special priority today is to provide our customers with reasonably-priced solutions. Our Drupal development team will find ways to resolve your tasks quickly and efficiently, while saving where it is possible. Let’s discuss!

Apr 29 2020
Apr 29

These are the steps I went through on "Drupal 9 porting day" on April 28, 2020, which was initiated by Drupal core "Initiative coordinator coordinator", Gábor Hojtsy. It was focused around timezones: Australia & New Zealand, Europe, and Americas.


Image credit: Aaron Deutsch

I'd like to dedicate this post to Hook 42 and to my family in lockdown (sons Aaron & Jacob, husband Josh, and mom Merleigh). Hope everyone reading this is healthy and safe!

Please pardon my super crude Drupal site (especially if you are on mobile)! I haven't written blog posts here since 2013, and it's running on Drupal 6! o_O Yes, the cobbler needs new shoes, and I hope to get some in the next few months. Meanwhile, this was important and timely enough information that I didn't want to wait to update the website before putting it out into the world. And, it's pretty ironic I'm writing about Drupal 9 patches on a D6 site ;)

Thank you!

Huge thanks to Gábor for the porting day idea and coordination as well as the amazing #DrupalCares Drupal 9 module challenge! The Drupal community is very lucky to have you.

Also a big thanks to the many porting day coordinators and participants listed in order of Slack participation (if I missed someone, please ping me on Twitter or Drupal.org and I'll try to add quickly): heddn, xjm, berdir, longwave, mondrake, penyaskito, ccjjmartin, drumm, damienmckenna, nterbogt, larowlan, shrop, kimb0, dww, surabhi.gokte, Peter Wong, jungle, Ankush Gautam, Ankush Gautam, Ankit Pathak, VladimirAus, mirom, dan2k3k4, klausi, Kiran Rao, geerlingguy, DuaelFr, renatog, svenbergryen, neetumorwani, shaktik, bircher, Matroskeen, alexpott, Jeevan, Atul Sharma, Manuel Garcia, piyuesh23, Nitish Singh Guleria, wizonesolutions, rahulrasgon, renatog, Paulo Calaes, JayKandari, Amit Sharma, Sonal, Matroskeen, Tejas Shah, kristen_pol, nerdstein, Nitesh, jrockowitz, mikelutz, jurgenhaas, eojthebrave, KarinG, Leeotzu, mixologic, japerry, Vishal Chaudahry, mikelutz, Aimee Rae

Step 0: Resources used

There are a lot of Drupal 9 resources out there but here's what I focused on for the porting day:

  1. Slack readiness channel
  2. Drupal 9 compatibility contribution quickstart guide
  3. Drupal 9 Deprecation Status
  4. drupal-check
  5. Upgrade Status
  6. drupal8-rector
  7. Upgrade Rector
  8. Running PHPUnit tests
  9. State of Drupal 9
  10. Various Drupal issue queues and change records


Image credit: Gábor Hojtsy

Step 1: Checking in via #d9readiness

I woke up early due to an Ash-throated Flycatcher repeatedly pecking the window. Since my family was asleep, I checked the #d9readiness Slack channel to see what was going on. I saw a message from Gábor asking if anyone needed help picking a project to work on. Someone else said they wanted help finding a project, and Gábor suggested they look at projects from "group 100" in the Drupal 9 Deprecation Status report that only need info file updates. Earlier others had already been looking at "group 50".

I chimed in saying that I couldn't sleep so would try to find one from the list as well. I went to get (decaf) coffee (yes, I know) and more importantly chocolate to keep me going. The person asking for help chatted that they couldn't find anything in "group 100" so they were going to start looking in "group 200". So that is where I started. (Side note that it did turn out there were projects in "group 100" that could have been worked on but I found that out after picking something from "group 200".)

Step 2: Looking at an existing Slack thread for example

Gábor suggested looking at a Slack thread to see the process with a real example for D8 Editor Advanced link module. He went through the analysis roughly as follows:

  1. Searched issue queue and found existing D9 deprecated report that showed no errors: https://www.drupal.org/project/editor_advanced_link/issues/3042615
  2. Checked in the dev code that the info file hadn't been updated yet
  3. Scanned the dev code and found it was "very simple"
  4. Suspected there might be JavaScript deprecations but they were using core so "ok"
  5. Double checked deprecations with Upgrade Status module to get a more complete picture (has more detail than drupal-check) and found no issues
  6. Concluded that only the info file needs updating
  7. Was going to submit an issue for the info file but found existing one: https://www.drupal.org/project/editor_advanced_link/issues/3105317
  8. Added comment with review process and tagged the issue with "Drupal 9 porting day": https://www.drupal.org/project/editor_advanced_link/issues/3105317#comme...
  9. Pinged a project maintainer via Slack to see if it could be committed
  10. Maintainer is busy but will hopefully will commit it soon
  11. End of work on this project... time to move to another one :)

Step 3: Finding a project

Needed to find a project that isn't D9 ready but isn't being actively worked on by others.

  1. Go to "Drupal 9 Deprecation Status" for <=500 for projects that appear to only need info file updates

  2. Decided to work backwards from the end of the list of "Group 200" because other people are probably going in top-to-bottom order. This is the order I will check:
    • views_accordion 1.3
    • override_node_options 2.4
    • ckeditor_font 1.0
    • workbench 1.1
    • field_formatter_class 1.1
    • contribute 1.0-beta8
    • block_content_permissions 1.8
    • auto_entitylabel 3.0-beta2
    • menu_admin_per_menu 1.0
    • search_api_autocomplete 1.3
    • media_entity_browser 2.0-alpha2
    • username_enumeration_prevention 1.0
    • colorbutton 1.1
    • panelbutton 1.2
    • real_aes 2.2
    • schema_metatag 1.4
    • antibot 1.3
    • token_filter 1.1

  3. Checking views_accordion

Step 4: Info patch review

The info patch was the easiest to review so I started there:

https://www.drupal.org/project/views_accordion/issues/3100388

  1. Read through the change record for the change

    https://www.drupal.org/node/3070687

  2. Reviewed the patch and, for Drupal 8, the patch is correct (note that for D9, the info file will need to be updated)

  3. Tests are failing so checked the note from @katherined about $defaultTheme and confirmed that it's fixed in the other issue (see below)

  4. Downloaded the module code

    git clone --branch 8.x-1.x https://git.drupalcode.org/project/views_accordion.git

  5. Downloaded the patch

    wget https://www.drupal.org/files/issues/2020-03-21/3100388-3.patch

  6. Applied the patch
    [mac:kristen:views_accordion]$ patch -p1 < 3100388-3.patch
    patching file views_accordion.info.yml
  7. Added comment with findings and unassigned issue

    https://www.drupal.org/project/views_accordion/issues/3100388#comment-13...

Step 5: Checked back into with the #d9readiness channel

It's a good thing to check in with the relevant Slack channel regularly if you are doing a sprint or contribution day. Fortunately I did because I saw @penyaskito pointed to an earlier message from the module maintainer, @Manuel Garcia, related to the issue I was about to review.

https://app.slack.com/client/T06GX3JTS/CDDD98AMN/thread/CDDD98AMN-158808...

They were worried the patch might break existing installations. The thread had a helpful discussion with @berdir and @penyaskito on how to proceed. This is a great example why the Drupal community is amazing!

Step 6: jQuery UI patch review

Besides the info file, there was a blocker for D9 compatibility due to the use of jQuery so I moved on to reviewing the related patch:

https://www.drupal.org/project/views_accordion/issues/3091388#comment-13...

  1. Reviewed the change records
    • https://www.drupal.org/node/3064015 - "Modules and/or themes depending on jQuery UI should remove it as a dependency and manage their own libraries."
    • https://www.drupal.org/node/3067969 - "The jQuery UI asset libraries not in use by Drupal core have been marked deprecated and will be removed from core in Drupal 9." Note: has an explicit example for switching to the jQuery UI Accordion module
  2. Reviewed the patch against the example in the change record
    1. Info file is updated with dependency: jquery_ui_accordion:jquery_ui_accordion
    2. Reference of core/jquery.ui.accordion changed to jquery_ui_accordion/accordion in libraries file
    3. Fixed failing tests by adding:
      protected $defaultTheme = 'stark';
    4. Also updated composer.json with dependency:
      "drupal/jquery_ui_accordion": "^1.0"
    5. Looks good
  3. Downloaded patch

    wget https://www.drupal.org/files/issues/2020-03-21/3100388-3.patch

  4. Applied the patch successfully (note that it was applied on top of the info file patch to see if they were compatible)
    [mac:kristen:views_accordion]$ patch -p1 < 3091388-6.patch
    patching file composer.json
    patching file tests/src/Functional/ViewsAccordionTest.php
    patching file tests/src/FunctionalJavascript/ViewsAccordionTest.php
    patching file views_accordion.info.yml
    Hunk #1 succeeded at 5 with fuzz 1 (offset 1 line).
    patching file views_accordion.libraries.yml
  5. Searched the code for "jquery.ui.accordion" after applying the patch and found a reference to it in the documentation
  6. Added comment, marked "Needs work", and unassigned
  7. Next steps needed are to update this patch with minor change and manually test the updated patch and the info file patch together on Drupal <8.7.7, 8.8, and 9 (optionally, an update function could be added for the new module dependency)

Step 7: Review project page

Note that this should have been done before step 4 but I forgot to check until after reviewing the issues I found by manually looking at the issue queue.

Project maintainers can add Drupal 9 information and link to relevant issues as noted by in https://twitter.com/DropIsMoving/status/1130868996771844096. Adding D9 information to the project page will potentially help the previous two issues get worked on faster and avoid duplicate issues.

  1. Reviewed the views_accordion page for D9 info but nothing was there

    https://www.drupal.org/project/views_accordion

  2. Checked the issue queue to see if a related issue was already created but didn't find anything relevant

    https://www.drupal.org/project/issues/views_accordion?text=drupal+9

  3. Created an issue to add the Drupal 9 info to the project page and tagged it for "Drupal 9 porting day" and "Drupal 9 compatibility"

    https://www.drupal.org/project/views_accordion/issues/3131959

Step 8: Install D8 site to check deprecations

For this round, I decided to use simplytest.me to check again for deprecations after adding the jQuery patch above, the jQuery UI Accordion module, and the Upgrade Status module. Note that initially I applied both patches but got an error that I created an issue for: https://www.drupal.org/project/simplytest/issues/3131964

  1. Go to https://simplytest.me/
  2. Open "Advanced options"
  3. Type "views_accordion" for "Enter a project name" text field
  4. Choose 8.x-1.x for version
  5. Click "Add an additional project" button
  6. Type "jquery_ui_accordion" into text field
  7. Click "Add an additional project" button again
  8. Type "upgrade_status" into text field
  9. Click "Add a patch" button
  10. Copy/paste the patch file URL

    https://www.drupal.org/files/issues/2020-01-30/3091388-6.patch

  11. Click "Launch sandbox" button
  12. Wait for simplytest.me to finish installing
  13. Success! You'll get a URL similar to:

    https://stm5ea90733d366a-snjvt0qoedy7maoqy3mzycrx6vzbeixv.tugboat.qa/

  14. Log into site (admin/admin)
  15. Go to Upgrade Status report at /admin/reports/upgrade-status

  16. Go to the CONTRIBUTE PROJECTS section

  17. Choose Views Accordion
  18. Click "Scan selected" button
  19. Found 5 warnings
  20. Click on warnings link to view warnings and really found 3 things
    1. Class Drupal\Tests\BrowserTestBase not found and could not be autoloaded.
    2. Class Drupal\FunctionalJavascriptTests\WebDriverTestBase not found and could not be autoloaded.
    3. Add core_version_requirement: ^8 || ^9 to views_accordion.info.yml to designate that the module is compatible with Drupal 9. See https://drupal.org/node/3070687.

  21. I assume a and b are due to running via simplytest.me (I looked at other deprecation issues and didn't see anyone "fixing that") and c is handled by the other patch so this should be covered
  22. Updated Slack channel thread with note about the autoload warnings

Step 9: Go to bed :)

I was hoping to do more poking around but it got late and I got tired. So… this will have to do. I updated this blog post and went to bed. :)

Goodnight!

p.s. I'm zonked so probably made some mistakes... please let me know if you find any.

Apr 29 2020
Apr 29

Seemingly overnight, much of the professional workforce was catapulted into remote work arrangements. 

For many, this has led to an adjustment curve. At Promet Source, collaborating with co-workers from all over the world is built in to our culture, and over the past several weeks, we’ve taken this opportunity to share insights and ideas for optimizing productivity and connectedness among virtual teams

Free Webinar! Winning at Remote Project Management with Jira and Confluence

Remote work success is largely contingent upon superior project management tools that provide an easily accessible framework for collaboration and information sharing. Our clients count on us for adept management of large scale web design and development projects, and the top two project management tools that we recommend are Jira and Confluence.

Why Jira and Confluence

When effectively aligned and fully leveraged, Jira and Confluence can be relied upon for significant enhancements to efficiency and effectiveness -- providing stakeholders at every level with the ability to drill up or drill down on projects and receive reminders of upcoming deadlines, real-time status reports, productivity updates, and a lot more. 

With Jira and Confluence at the foundation of a project, remote teams are able to move forward with their various sprints as seamlessly as if the entire team was working under the same roof -- often with even greater efficiency. 

Remote work arrangements tend to drive a level of discipline that can fall by the wayside when there is the option of interrupting a co-worker at a nearby workspace to check on the status of a project. With Jira and Confluence, status updates and shared documents are easy to access. There is far less of a chance for work to stop due to an interruption from a team member who wants help accessing information or who stops by with a random inquiry. 

Jira at Work

Big project plans are laid out as a series of sprints, with tasks and individual accountabilities spelled out within each sprint. Generally speaking those sprints represent dependencies -- one needs to be completed for the next one to begin. 

When using Jira, team members are reminded throughout the process of upcoming deadlines. A comprehensive, realtime report is available for checking on the status of any part of the project, and revised as needed.

Within Jira, project managers are able to monitor progress, assign new tasks, and calculate completion dates. 
.
Another essential Jira benefit: transparency. The ability to closely and objectively monitor the progress and contributions of all individuals on a major project can potentially get muddied when multiple expectations and accountabilities are involved. Jira provides a tool for closely tracking individual progress, eliminating the possibility of any team member flying under the radar or becoming overwhelmed with an undue number of tasks.

Aligned with Confluence

While Jira allows for drilling down on the details of a project, Confluence provides perspective on the big picture.

Confluence has been described as a corporate Wikipedia, housing the project’s knowledge base and serving as an easily accessible repository for sharing large files among both team members and clients. 

Confluence serves as a single, cohesive vehicle for communicating with clients. It allows for the creation and sharing within specific project areas, while keeping track of feedback, client deliverables, and the exchange of all assets that support the completion of the project. Images or files that would be too large to send via email can easily be dragged and dropped into Confluence.

Top Tips

  • Document everything. All meeting notes should be uploaded to Confluence, and the notes will automatically be emailed to all clients or team members who are referenced in the notes or listed as attendees. This is an essential step in helping all stakeholders remember what was agreed to and why. 
  • Utilize the search feature in Confluence when necessary, to locate notes from a particular meeting or conversation. Over the course of a project, a vast collection of notes will be created.
  • Leverage the permissions feature and determine which documents will be accessible to which clients and team members.
  • At the start of an engagement, offer clients a tutorial on Jira and Confluence, emphasizing the depth and breadth of efficiency enhancements. Drill down on features such as the calendar in Jira, which specifies not just delivery dates and key meetings, but also indicates travel and vacation schedules for all stakeholders and team members.
  • Understand that while the majority of clients have not yet used Jira and Confluence for project management, the learning curve is short. In the event that there is any pushback from clients at the beginning of a project, that is quickly overcome as the ease and efficiency of the tools are realized.  

More so than ever before, the tools are available that allow for the adept management of major projects from multiple locations. Jira and Confluence provide the foundation for assembling project teams that are based on talent, expertise, and commitment to successful outcomes for the client -- location no longer needs to stand as a limiting factor.

There’s more to learn!

Register Now for a Free Webinar: Winning at Project Management with Jira and Confluence

When:
Thursday, May 28, 2020    12 p.m. CST

Or looking to start a conversation now concerning what’s possible when talented designers and developers leverage the full capabilities of Jira and Confluence? Contact us today. 

Apr 28 2020
Apr 28

Having trained thousands of people how to use Drupal since 2011, I've learned a lot about what makes students tick. Most of our classes have been in-person, since it's easier to teach effectively when I can instill enthusiasm by jumping up to the whiteboard, or rush over to help someone who's stuck. In wake of COVID-19 and the rapid transition to online learning, I'm reflecting how to make virtual training as engaging as it can be. I'd like to share four key factors for effective learning that go deeper than which video-conference or chat platform to use.

Motivation

Motivation

One of the most essential parts of teaching is motivating the learning. When I teach, I constantly bring up use cases and scenarios to explain why something is the way it is, or how what you're learning will solve a problem when you go back to your desk and are working on a real-world project

Students have less patience when they're interacting with you through a tiny screen. Without in-person presence, it's harder as a teacher to pull out the motivating examples that will bring the material alive. Likewise, students are conditioned to expect higher production values from a YouTube explainer video than a whiteboard explanation. To hold the user's attention in a virtual format, the motivating materials need to be more visual and condensed, and referenced repeatedly.

Affirmation

Affirmation

Nobody likes to feel like they're behind the class, asking "dumb questions". Affirmation that you're in the right place learning the right thing is empowering. Newbie students will repeatedly ask themselves: Am I at the right level? Do I have all the prerequisites? Will I succeed? Being in a room of their peers who are facing the same challenge builds a sense of "I belong" and "I can do this". And it's contagious.

Fostering such affirmation is tougher in an anonymous crowd, so pairing students up or splitting them into small, supportive groups can help. As a trainer, I'm constantly working to understand where every student is at, acknowledging it's okay that they don't know something, and helping them get to the next step. To provide affirmation in a virtual learning environment, we incorporate break-out rooms, office hours, encourage chat between students, reaching out to each student for direct one-on-ones.

Engagement

Engagement

Sustaining student attention for several hours demands a lot of effort from the trainer, especially when the virtual training is competing with email and social media. But there are many techniques that can help.

Working through a problem together as a group allows students to switch between active and passive contribution, and take a break without falling behind. It's also satisfying if the exercises can be populated with realistic prepared content to produce a functional web application, perhaps a recipe listing or meme sharing site. And this is a great opportunity for injecting humour or cat photos.

Students tend to feed on the engagement of others. A couple outwardly enthusiastic students can bring a whole classroom to life. With virtual training, small, interactive classes are essential, as well as breaking up the material into shorter, easier-to-digest pieces.

Permission to Play

Permission to play

Every experienced programmer remembers how difficult it was to set up their first development environment. Many people who work with Drupal professionally only have access to Drupal in a corporate development environment that they're afraid to break, and don't know how to clone for themselves. When you're teaching a technical skill that requires experimentation, students need to overcome the fear of breaking things. A small typo or incorrect version of a dependency can cause a "fatal error" and block a student from even trying to get something to work.

One of the keys to success is to set up a learning sandbox that feels real, but that doesn't have the element of "I can't mess this up". Before each coding class, we send out instructions on how to set up a local dev environment using Acquia Dev Desktop, Lando, or WAMP. For a site building class, we usually suggest a cloud Pantheon sandbox environment. Before training starts, the trainer can walk around the room to ensure that everyone has their setup working, and troubleshoot any errors they might have encountered.

I am still figuring out how to best incorporate such "personalized tech support" in an online context, but helping people trouble-shoot their environment and get set up in advance is definitely part of the solution. And tools like screen sharing and Remote Desktop are definitely helpful.

In Conclusion

In the coming weeks, our team will be experimenting with new training formats that will incorporate these ideas. We have a whole slew of live, online training sessions coming up. If you have feedback or ideas, specific technical solutions to suggest, or experience to share, we'd love to hear from you! And if you're passionate about teaching and web development, we're hiring for consulting roles in curriculum design, training delivery, and marketing for our training program.

Apr 28 2020
Apr 28

Portrait of Mike AnsleyContinuing our short series of articles highlighting ways that the Drupal software and its community are building solutions to help combat the effect of COVID-19, today we hear from Mike Ansley of Colorado Interactive. Here, he describes their project at the Colorado Department of Public Health & Environment and the Colorado Governor's Office.

Official State COVID19 Website

Colorado Interactive (CI) hosts, manages, and supports over 300 state and local government websites on its Drupal platform as the official portal integrator for Colorado’s Statewide Internet Portal Authority. In March 2020, Colorado Interactive proactively engaged the Department of Public Health & Environment (CDPHE), the agency leading the State’s COVID19 response. Leveraging Drupal’s flexibility and configurability, the CI team ultimately worked with CDPHE to develop, provision, and launch an entirely new, fully responsive COVID19 website.

The site immediately served as the State’s primary source of updates, aggregated data, and general information. To promote the resource, CI created a custom banner application in Drupal to implement universal COVID-19 messaging and links for its 300+ websites. 

CI’s Drupal platform enables CDPHE staff to manage site content and leverage custom design elements to provide the public with clear, uniform information, including the integration of data visualizations from the State’s Tableau server to graphically illustrate the number of cases, by county, age, date, etc. This data visualization site consistently has 67% of the entire site traffic across all hours of the day. At 4:00 pm each day, when CDPHE publishes the latest pandemic data set on the site, traffic grows from roughly 1,500 to tens of thousands of users on the site.

The highest number of users to the site was 99,684 users at 7:00 am on Thursday March 27, shortly after the Colorado Emergency Operations center included the site’s url in the message to announce the State’s Stay at Home Executive Order via the Emergency Alert System (distributing cell-phone alerts to statewide residents). Over its initial two weeks, there have been over 12 million page views and over 2 million user visits to the COVID-19 website, with average visit duration exceeding 2 minutes. In the initial month, over 3.6 million users visited the website.

Governor’s Stay-At-Home Resource Website

Colorado Interactive (CI) hosts, manages, and supports over 300 state and local government websites on its Drupal platform as the official portal integrator for Colorado’s Statewide Internet Portal Authority. CI developed and provisioned the State’s official COVID19 resource, a Drupal website for the Colorado Department of Public Health & Environment in March. In early April, immediately following the Governor of Colorado’s statewide Stay-At-Home Executive Order, CI responded to the Governor’s Office’s urgent request for a new website to aggregate resources for Coloradoans during the Order.

CI led a collaboration among the Governor’s Office, the Governor’s Innovative Response Team (IRT), and volunteers from the Citizen Software Engagement Group (CSEG) to design and publish an entirely new, fully responsive Drupal 8 website in less than 48 hours. The site features an online directory of services and resources available to Coloradoans as they face an extended period of a stay-at-home order. Visitors of the site can utilize extended predefined lists and key term search functionality to find resources. Via an integration with CI’s application tool, businesses and organizations can submit an online form to be included in the public-facing directory. The CI team also designed a new theme, including custom blocks to showcase highlight calls-to-action, drive ease of use, and accommodate easy admin management. The Governor’s Office, as well as a variety of public and private sector stakeholders, have since acknowledged CI’s Drupal website as a valuable resource in helping Coloradoans during the crisis.
 

Apr 28 2020
Apr 28

Combining the powers of Apache Solr and Drupal 8     results in unmatched digital experiences with high-performing, enterprise-level search features and functionality. In this article, we will learn about why Apache Solr should be chosen and how we can configure Apache Solr in Drupal 8. 

What is Apache Solr? 

Solr is a solid and ascendable open-source search platform that provides distributed indexing and load-balanced querying. Built initially for and by CNET Networks, this Java based project was later offered to the Apache Software foundation.  Apache Solr is the best solution for super-fast, credible and awesome search applications. Big guns like Netflix, Instagram and Twitter including various e-commerce sites and CMSs, use Apache Solr for their search functionality.

config-apache-solr

Why choose Apache Solr?

With many options available in Drupal 8 core to implement your search functionalities and features, why should you choose Apache Solr with Drupal 8? Here are some reasons Apache Solr might be the best fit for your project:

  1. Apache Solr offers Faceted navigation to let users add multiple filters that can help them navigate easily through piles of information. Facets are elements for navigation that can be queried.
  2. It allows for Full-text searches that offers precise results along with its near real-time indexing and searching capabilities. Indexing with Apache Solr is not only faster, it can also be merged and further optimized. 
  3. The Hit Highlight feature enables highlighting the search words or phrases to make it easy to identify.
  4. The Dynamic clustering feature allows to group search results and offer related searches or recommendations.
  5. Allows spell check and auto-complete suggestions for a better search experience.

Using Apache Solr with Drupal 8 enables better control over your website search and offers an interactive admin interface. Check out how we enabled a leading Healthcare provider to boost their search experience with Apache Solr and Drupal.

Implementing Apache Solr in Drupal 8

Let us divide this process into the following parts:

  1. Install Apache Solr
  2. Install the Drupal Solr Module 
  3. Configure Apache Solr with Drupal Module

1. Installing Apache Solr

Step 1: Install Java

As Apache Solr is completely based on Java, we need to install Java to begin with. For Apache Solr 7, we need Java 8 or higher to run. If you don't have Java installed in your system, install Java using the below command –

$sudo apt install openjdk-11-jdk

Verify the active Java version using the below command - 

$java -version

Step 2: Install Apache Solr on Ubuntu

Now, you can download the latest Apache Solr version from its official site. Else, you can also use below command –

$cd /opt
$wget https://archive.apache.org/dist/lucene/solr/7.7.2/solr-7.7.2.tgz

Now, extract Apache Solr service installer shell script from the downloaded Solr archive file and run the installer using the following commands.

$tar xzf solr-7.7.2.tgz solr-7.7.2/bin/install_solr_service.sh --strip-components=2
$sudo bash ./install_solr_service.sh solr-7.7.2.tgz

Now, Solr should be installed on your system. You can use these commands to Start, Stop and check the status of Solr service –

$sudo service solr stop
$sudo service solr start
$sudo service solr status

Default Solr runs on port 8983. You can access your Solr admin panel by typing localhost:8983 in your browser.

Install-apache-solr

2. Installing the Solr module in Drupal 8

The Drupal 8 Search API Solr module should be installed before we go any further. This module integrates Drupal with the Apache Solr search platform and provides a Solr backend for the Search API module.

Install this module in your site using Composer using the below command –

$composer require drupal/search_api_solr

Once it is done, enable the module.

Go to Extend → Search Search API Solr Search → Enable it

3. Configure Apache Solr with the Drupal Search API Solr Module

Step 1: Create a core in Apache Solr

After Installation of Solr, you need to create a core in the Solr in order to work with the Solr platform. This is an important step where we can index the contents to the Solr core. You can see the indexed content in the core which you have created. You can create the core using the below command in ubuntu –

$sudo su - solr -c "/opt/solr/bin/solr create -c first_solr_core -n data_driven_schema_configs"

This command will differ depending on where Solr is installed. Here, it is in the /opt folder of my Ubuntu system. You can see the created core in the Solr admin panel.

solr server

Step 2:  Create a Solr Server

In this step you need to create a Solr server and index in your Drupal website. To create a Solr server –

Go to Configuration -> Search And Metadata -> Search API -> click on Add server

Apache solr

When you click on the Add server you will get one form you need to fill that form 

  1. Server name: Enter the Server name
  2. Enable: You need to check the enable check box. If you don’t enable it, you cannot index the items
  3. Add server description: A brief description of the server.
Apache-solr

Next, you need to configure the Solr backend. Click on the CONFIGURE SOLR BACKEND in the form. You can see the form elements as shown in the image below:

solr collector

Solr Connector: There are four connectors available. You need to select a connector to use for this Solr server. I am using the Standard connector.
 
HTTP protocol: Choose https or Http (depending if your server uses SSL or not).
Solr host: localhost (if your Solr Server is on a different machine, please enter the IP or hostname of that host here)
Solr port: 8983 (This is Default port)
Solr path: "/" (The path to locate server and this is based on the solr server version If the solr server version is 6.6.4 in this case solr path is different like "/solr" ).
Solr core: Enter the solr core name which you created before.
The values as defined default work fine. However, you can also change them accordingly.

Step 3: Create the Search Index

Here we are going to create a Search API index that will index the Datasources that you selected in the index. To create an index –

Go to Configuration -> Search and Metadata -> Search API -> Add index

apache-solr

Index name: Enter an index name.

Data sources: Here you need select the Datasources to index the items for the search functionality. In my example, I selected content. When you select the content, you will get the option to select the bundles in the CONFIGURE THE CONTENT DATASOURCE. Here you need to select the bundles you want to index.
Server: Select the server to index the items. I have selected the Apache-solr-server.
Enabled: This enables the index. Don’t forget to enable the selected server as well for this to work.

Once done, hit Save and add the field. 

solr-apache

After successfully creating an index, you now need to add fields to the index. 

To add the field that you need, go back to the search API, click on Edit the index which you have created.

You will then see the Fields tab. Click on the fields tab and you will see a window as shown in the image below.

solr-apache

Next, click on the Add fields. In the popup that appears, you need to add the fields you need. After adding the fields, click on Done and then Save.

index-solr

Now, the Index and server are created on the website. After this, the next Important step is copy the configuration files to Solr core. For this, you need download the config files from the server in the website. 

Go to Configuration -> Search and Metadata -> Search API -> <Server name> 

You will get a window as shown in the image below –

solr apache

Next, click on the “Get config.zip” button. This will download the config folder. Once done, extract the zip folder and copy all the files into the conf folder in the core.

get-config.zip

To copy the files, open the terminal and move to the Solr core folder. In Ubuntu, Solr core folder will be stored in the /var/solr/data. In the data folder, you will see the Solr core folder which you had created earlier. Go to that Solr core folder and you will find a folder with the name conf. in this folder you will find some files. Delete those files and copy all the files from the config folder that is downloaded from the website server. Once done, you need to restart your Solr server in the terminal.
Next step is to index the contents –

Go to Configuration -> Search and Metadata -> Search API -> click on the index that you have created. You will see a window as shown in the image below.

search and metadata

Next, click on the index to index the contents. Now all the contents are indexed in the Solr core. Now you can create a view of Solr index and add the indexed fields to the view to get the results from the Drupal 8 Solr.

Maps In Drupal - A Complete Guide

Apr 27 2020
Apr 27
Apr 24 2020
Apr 24

Taco PotzeTo open our short series of articles highlighting ways that the Drupal software and its community are building solutions to help combat the effect of COVID-19, today we hear from Taco Potze as they describe their project at the Biotechnology Innovation Organization.

The BIO Coronavirus Hub was rapidly created and deployed in 48 hours by the internal BIO Digital Team and Open Social. The Hub was developed as a response to the many requests from medical research centers, biopharmaceutical companies, testing developers, and testing sites for various supplies.

Open Social helped launch the new BIO Coronavirus Hub to connect companies and organizations that have relevant supplies, capacities, and resources to share, with those companies, researchers, or healthcare providers in need of those items. Already there 1200+ users with over 400 requests made inside the Hub.

BIO is the global trade association representing the biotechnology industry. Their role in this effort is to serve as a conduit to connect those in need with those who can share, many of whom may be BIO members. We do this through the BIO Coronavirus Hub, which is a public platform open to anyone in need and anyone who can help.

Drupal empowers Open Social to use its modules for people to use and build upon. Our existing ‘out of the box’ features included many of the functionalities BIO required. The most useful feature for them is the creation of a new supply/demand topic, which, when tagged with “supplies,” would be moved to a closed group after creation. The members of that group would then coordinate and process it.

The Group module in Open Social helped a lot here. We were able to quickly identify the tag and then move it to the group. This module ensured that we could empower BIO to achieve its mission. BIO could focus on configuring and filling their platform.

The speed with which this community was launched is a testament to how flexible Open Social and Drupal are. In this fast-moving environment, time is of the essence, through this hub BIO, and their partner Healthcare Ready was able to connect medical research centers, biopharmaceutical companies, and testing sites requesting supplies and inquiring about manufacturing capacity. 

Open Social continues to work together with BIO to improve the online Hub. 

Apr 24 2020
Apr 24

This is part one of a two-part series on different ways and benefits of contributing to an open-source project. In the first part, we will look at the perks of contributing to an open-source project. In the second part of this article, we will explore the Drupal project, one of the largest open-source projects with a thriving community, and the ways to get involved with it.

We are all looking for online learning platforms to enhance our skills. We are also sometimes confused if it is ok to be investing online. Well, that’s where open source projects come in. 

Open source enables us to innovate and grow with the digital pace. 

Multiple words like Open source, Drupal, Contribution, contributor etc are stacked togethe


Companies don't just seem to be using it but also contributing to open source projects to steer growth and revenue. Contributing to an open source can be a rewarding way to build your experience and skills.

According to Red Hat's the State of Enterprise Open Source survey, which was published in April 2019, 99 percent of IT leaders believe that open source software is important to their enterprise IT strategy.

As outlined in his influential essay on the subject, Why Open Source (which itself draws from David Wheeler's seminal paper, Why Open Source Software), Ben Balter states: "Open source isn’t a fad, or a bunch of hippies get in California passing around tie-dye laptops like they'd illicit substances. Open source is how modern organisations and increasingly more traditional organisations build software."

Contributing to an open-source project

To see what it means to contribute to an open-source project, let’s take a look at the Firefox project. There are many fun and impactful ways to get involved with Firefox.

You can make both technical and non-technical contributions to Firefox. Technical contribution includes coding, documentation and designing whereas the non-technical contributions include helping in the user forums, replying to queries and also reviewing contributions. 

The Firefox browser has thousands and thousands of lines of source code and information on how to use those codes, for example into a web browser. Anyone who wants to contribute to Firefox can make changes to the source code and then build a customised version of it. They can then send the customised version back to the main project maintainers. 

There is so much more in an open-source project than coding, which includes the user interface, user experience (UX), usability.

The open source community needs you

The open-source community needs contributions from diverse set of people.

Developers

There are a lot of developers who believe that coding should be open. The code will be exposed to everyone naturally and makes them focus on making it readable. 

Lots of open source contributors start by being users of software they contribute to. After you find a bug in an open source software you use, you'll want to have a look at the source to work out if you'll patch it yourself. If that’s the case, then contributing the patch back is the best way to make sure that your friends (and yourself after you update to the subsequent release) are going to be ready to enjoy it.

Designing

A Designer’s perspective to look at a project is completely different from others.

They make sure that everybody performing on the project understands users’ needs and stays focused on them because the community makes decisions. Open source projects need designers as much as any other contributor. 

If your niche lies under designing, you can always contribute to user experience and help a lot of projects who need help. 
It is very important for a designer to find a project whose goals they really support and understand. 

Writing

Writers are very valuable to the open-source community. Because, the members have to contribute and communicate remotely and more often than not, in a non-native language. 

Documentation, especially on open source projects, is never up-to-date.

Although, it is one of the easy ways to contribute to any open source project. 

It is a part of the open-source projects which is often overlooked. The topics should be very easy for the writers. Text assets and translations also present an easy entry.

For instance, Drupal provides all sorts of writing and editing of documentation including community documentation, help pages within the core Drupal software, blog posts and more.

Contributing to Drupal as a writer will help you gain experience in technical writing and editing. 

It’s ok to not code

Whatever your reason is to avoid coding, there are always plenty of other contributions you can make! 

There’s a lot of administrative work too. So, coding is optional. For the coders, who don’t want to code, they can help users on forums, reply to issues, translate tutorials, review contributions and much more which is as important in the open source community as coding. You can always write a blog post or publish your designs which is as important as any other contribution if you find the right project. You can also get involved in marketing, which is often lacking in open source projects. If you are able to contribute to it, you benefit the complete project and the community behind it.  

Then there is the legal part which majorly concerns the large projects. There are many lawyers who have volunteered their time for open source projects, primarily. 

You do not have to be worried or scared if you’re not capable of doing the above-mentioned things, the least you can do is report errors that you find in a project. And remember, every contribution is valuable. 

Now that we know that contributing to an open source can be a great way to augment your skills, let’s talk about the benefits of being an open source contributor.

Benefits 

A puzzle-like illustration with words like open source, gratitude, learn, opportunity and reputation written on them


Contributing is fun

It will be a project that you have chosen, so you can enjoy it a bit more. When you contribute to an open source project, you get to know new people who are working on the same project. You can learn from them, and exchange ideas with them. You might also get to use stuff that you probably can’t in your day job.

You increase your proficiency

It might be challenging at first, but you will slowly be able to identify and contribute to creating working solutions.

Contributing to an open source project can be a great exercise for someone looking for a career change. In an open source project, it doesn’t matter if you are a senior developer or a doctor or even a gardener. All that matters is the quality of your contribution. You will gain some valuable experience, once you prove yourself in an open source project.  And once you prove yourself in an Open Source project, you will have gained some valuable experience. You will be an established member of a community with a track record that anyone can check.

Contributing builds reputation

Behind every great open source software, there is a community that aims to make it even more popular. The advantage here is that you can improve your skills and get inspiration and support from like-minded people. If you are a freelancer, you can also increase your chance of being hired by professionals. Contributing to an open source project also increases the visibility of your other channels. 

The visitors on the project that you contribute to can learn about your youtube channel or find your LinkedIn profile and offer you a job.

By contributing to an open source project, you are actually creating a real-life resume that anyone can verify. You don’t have to contact your former employer or client. 

You might also get a paid offer if you’re really good at what you do.

You find new employees

If you do something creative, publish it as an open-source project and there might also be a chance that someone would want to work for you.

Helping them is helping yourself

Another advantage is that you gain gratitude when you contribute to a project. 

The thank-you notes and the reviews you receive are always worth your time and efforts. And it feels great when you see your name appearing in a project. And let’s not forget, the experience is the best CV.

Conclusion

Contributing to open source projects is free, it can be distributed and it can be modified. 

You can always get out of your comfort zone and experiment with your skills. If you are a doctor and want to code, do it. If you’re a coder and you want to design, the open source world is your canvas!

And if you value the idea of contributing to open source, you are worthy of earning recognition, and being a respected member of the community.

Ping us at [email protected] to know how you can be a part of a growing open source community.

Apr 24 2020
Apr 24

I'm happy to be presenting two talks remotely at this year's CMS Philly conference (formerly Drupaldelphia).

The first talk is Deploying PHP applications with Ansible, Ansible Vault and Ansistrano at 1pm (6pm UK time) where I'll be doing an introduction to Ansible and show how to use Ansistrano to do deploy a Drupal 8 application.

The second talk is Taking Flight with Tailwind CSS at 2pm (7pm UK time) where I'll show how to configure and use Tailwind CSS.

CMS Philly is happening virtually on Friday, May 1st via GoToWebinar.

#DrupalCares Fundraising Update & Program Enhancements

Apr 23 2020
Apr 23
Apr 23 2020
Apr 23

Carrie Lacina, the Drupal Association’s Director of Fund Development, provides an update on fundraising efforts and program enhancements.

Hello! I’m Carrie Lacina, I’ve been at the Drupal Association for over 5 years in various Fund Development roles. I worked in the digital media and advertising space for 12 years before making the jump to the nonprofit open source world. At the Drupal Association, I enjoy engaging with a global community of organizations using or connecting with Drupal, partnering to solve their business needs while supporting the financial sustainability of the Drupal Association. 

You may have read recent #DrupalCares updates from my teammates including Frequently asked questions, answered by Angie Sabin and Sustaining the DA through the COVID-19 crisis by Tim Lehnen. Today I’d like to build on their updates by providing information on new or enhanced fundraising program elements along with a general update on our progress. 

But first, I’d like to say THANK YOU! I am overwhelmed by the outpouring of activity from individuals and organizations offering financial support for the Drupal Association.  You have proven what I’ve known all along: Drupal is strong and together we thrive.

Why support the Drupal Association? 

You probably know that Drupal will be fine and that open source projects, including Drupal, survive and even thrive during economic downturns. But the Drupal Association may not. Why does that matter? I appreciate how Matt Westgate framed it in the latest Lullabot Podcast:

Drupal the software will survive, that's the ‘engine.’ We will always have that and will continue to work on it. The Drupal Association is the ‘car,’ the vehicle to which we put the engine in, to make things move, with doors that open to include and invite other people into the project."

-Matt Westgate, CEO, Lullabot

From an organizational perspective, open source contribution is essential to any business that relies on the project. The Drupal Association provides the tools to drive that success, but we need financial support to execute on our mission. By participating in Drupal Association programs, you directly support the Drupal Project, serve the global community and support its velocity and growth. Your support allows us to:

  • Maintain Drupal.org and expand how individuals and organizations can contribute and achieve recognition
  • Keep Drupal secure with advisories, documentation and releases
  • Drive initiatives for diversity, equity, and inclusion
  • Help the community follow the same path by bringing people together in person and online to collaborate and celebrate their Drupal successes

#DrupalCares Fundraising Update 

We launched the #DrupalCares campaign in early April. It’s incredible how quickly the community rallied to make a huge impact on our financial outlook:

  • 26 DrupalCon Minneapolis sponsors have pledged to keep their marketing dollars intact with the Drupal Association in 2020
  • 28 organizations have joined or upgraded their Drupal Association Supporting Partner program
  • More than 800 members have joined or upgraded their individual memberships
  • We’ve raised $228,000 in donations and matching challenges from Dries and Vanessa Buyteart and the Drupal business community, with a full week left to go.

We’ve made so much progress, and we're only $24,000 away from reaching our #DrupalCares Match Challenge!  Please consider donating today to help us reach our goal.  Any individual donations, increased memberships, or new memberships through the end of April will receive a 3:1 matching contribution to the #DrupalCares program, up to $100,000, for a total match potential of $300,000.

Drupal Association Program Updates and Enhancements

In addition to the $500,000 gap we are facing from the loss of DrupalCon Minneapolis net revenue, we anticipate a drop in our non-conference related revenue during an economic downturn. The Drupal Association has been working diligently to diversify funding while weaving in program changes and enhancements that continue to provide value and make it easier for organizations and individuals to invest in our mission.

Individual Memberships

Thank you to the new and renewing Drupal Association individual members!  We’ve had an outpouring of support through this program and have heard your suggestions for how we can improve our membership options.  Our team recently rolled out improvements to make it easier than ever to support Drupal as an Individual Member.  In the last few weeks we have:

  • Implemented monthly recurring payment option for memberships, since it’s often easier to give smaller monthly amounts rather than a lump annual sum
  • Enabled early renewals for recurring members who want to make an impact sooner
  • Added new tiers for individuals who have the capacity and desire to give more
  • Provided marketplace credit to organizations for each member of staff who has a membership

Please stay tuned for even more feature improvements, like:

  • Creating a mechanism to allow organizations to purchase memberships on behalf of their staff
  • Updating payment tools to support more currency types
  • Offering lower tiers for regions of the world that can’t easily support the current levels of member pricing

Supporting Partner Program

The Drupal Association Supporting Partner program offers organizations a way to financially support our mission which includes Drupal.org. Thank you to our supporting partners, technology supporters, and hosting supporters - your continued support and generosity is crucial to the Drupal ecosystem.

Often seen as an infrastructure investment for organizations that make significant cost-savings by using a CMS with no licensing fees, the Supporting Partner Program has evolved over the years to offer even more benefits. From thought leadership, accreditation, networking opportunities, talent support and industry visibility - there’s something to meet every organization’s needs.

In an effort to grow participation from all types of organizations, we’ve launched two new Supporting Partner tiers. The “Community” Supporting Partnership is geared towards small businesses with fewer than 5 employees, while the “Enterprise” tier was designed with a focus on large organizations and their unique business needs. We’ve also added new benefits including complimentary Individual Memberships for staff and additional marketing opportunities on Drupal.org. You can learn more about the new tiers and benefits here.

Drupal.org Advertising & Sponsorships

We’ve heard your input about diversifying revenue away from DrupalCon even further.  We are exploring additional advertising and sponsorships opportunities on Drupal.org over the next few weeks, please stay tuned for updates on our advertising programs soon.

DrupalCon North America shifts for 2020

You may have seen the recent news that DrupalCon Minneapolis was officially canceled due to COVID-19.  Visit https://events.drupal.org/global2020/ to learn more about the cancellation and the launch of our first virtual DrupalCon Global event.  

Thank you to the DrupalCon Minneapolis sponsors that have pledged to keep their dollars intact, regardless of the outcome of the event.  Now that we have officially gone virtual, we are working on translating DrupalCon Minneapolis sponsorship benefits to DrupalCon Global 2020. We are weaving sponsor plans into our platform selection and program updates, which will be finalized at the end of the month. Stay tuned for updates in May!

Community Driven Fundraising Efforts

In closing, we’d like to thank and celebrate a few of the unique individual fundraisers happening throughout the community.

Gábor Hojtsy opened the individual community fundraising efforts with an offer to donate €9 for each module the community update to be compatible with the upcoming Drupal 9 release. The offer has been so successful that, after only a few days, the €900 Gábor put into the fund was running out and the fund was boosted to €2250 by donations from Ron Northcutt and Ofer Shaal.

Jeff Geerling was clearly inspired to create a video telling the world how important the Drupal project has been to his life, how helping the Drupal Association helps Drupal and making a generous offer to donate $1 for every person who watches and likes his video, up to $1000. Of course, now that donation will be tripled. 

Kevin Kaland (that’s Kevin with the amazing wizard’s hat we all see at Drupal events) is the maintainer of the FillPDF module project and has a patreon page to sustain work on the module. He has pledged that, if you join his patreon page, he will donate double your subscription to the Drupal Association.DrupalCares Remix

Finally, the community have helped in many other creative ways and these initiatives are still coming in. We were delighted to see that Kirsten Pol’s son (who has his own d.o account, of course) made a special #DrupalCares mascot that we absolutely love!

And as a reminder, here are the ways you can help too!

  • DrupalCon Sponsors…
    … can commit to pledging your full sponsorship to the Association, regardless of what shape DrupalCon takes this year. This will prevent the gap from getting wider.
  • Drupal Businesses…
    … Can join the supporting partner program, or increase your partner level. Organizations can also make tax deductible donations above and beyond their partnership tier.
  • Individuals…
    … Can join or renew the Drupal Association membership program, or make tax deductible individual donations.
  • Everyone…
    … can help us get the word out! The Drupal Association has deep, deep roots within the community, and tight relationships with those of you who build your livelihoods on Drupal. Unfortunately, there are 10 times as many end-users of Drupal out there who may not even know that the Association exists. Would you leverage your networks to help us reach them?
Apr 23 2020
Apr 23

We’ve been making big websites for 14 years, and almost all of them have been built on Drupal. It’s no exaggeration to say that Four Kitchens owes its success to the incredible opportunities Drupal has provided us. There has never been anything like Drupal and the community it has fostered—and there may never be anything like it ever again.

That’s why it’s crucial we do everything we can to support the Drupal Association. Especially now.

The impacts of COVID-19 have been felt everywhere, especially at the Association. With the cancellation of DrupalCon Minneapolis, the Drupal Association lost a major source of annual fundraising. Without the revenue from DrupalCon, the Association would not be able to continue its mission to support the Drupal project, the community, and its growth.

The Drupal community’s response to this crisis was tremendous. For our part, we proudly joined 27 other organizations in pledging our sponsorship fees to the Association regardless of whether, or how, DrupalCon happened. I ensured my Individual Membership was still active, and I made a personal contribution.

But we need to do more.

You can help by joining us in the #DrupalCares campaign.

The #DrupalCares campaign is a fundraiser to protect the Drupal Association from the financial impact of COVID-19. Your support will help keep the Drupal Association strong and able to continue accelerating the Drupal project.

The Drupal Association

The outpouring of support has been… Inspiring. First, project founder Dries Buytaert and his partner Vanessa Buytaert pledged their generous support of $100,000. Then, a coalition of Drupal businesses pledged even more matching contributions. We are proud to count ourselves among the dozens of participating Drupal businesses.

Any individual donations, increased memberships, or new memberships through the end of April will be tripled by these matching pledges, up to $100,000, for a total of $300,000.

Please join us in supporting the Drupal Association. Your contribution will help ensure the continued success of the Association and the Drupal community for years to come.

Give to #DrupalCares through April to help the Association receive a 3:1 matching contribution. 

Apr 23 2020
Apr 23

Everyone is looking for positive news, and we have some for you. Drupal web development in times of Covid-19 continues — severe crises are even opening new perspectives! One of the characteristics of a good web development company is that it only becomes stronger in hard times.

Read on to discover why the idea to hire remote software developers for your Drupal project is an especially good one during the Corona crisis. We also describe how we provide Drupal web development services now, under quarantine.

Remote work is our team’s natural environment

Due to the quarantine restrictions, we, like most IT companies, transferred our team to remote work mode. However, nothing has changed for anyone who wants to find software developers for hire. Some things have even become better.

In our case, remote work is not new — this is something we had mastered already because we had a chance to. Outsourcing web development overseas has always been a popular approach among businesses. Ukraine is always on the list of the best countries to outsource web development to, we have always seen Ukraine — indeed, there are particular good reasons to work with a Ukrainian outsourcing company. Multiplied by our skills and reputation, this has always provided the InternetDevels Drupal web development company with overseas customers.

That said, everyone who is looking to hire developers should know that the Covid-19 quarantine has had no impact on the quality of our web development services:

  • First, we established high-level remote communication and smooth workflows with the overseas customers long ago.
  • Second, we have always been flexible with allowing our own developers to do their work from home and this is not a problem.

As always, we invite you to hire remote developers from the InternetDevels team and promise to provide as efficient workflows as ever! We firmly believe that efficient Drupal development services should be available from any location.

Key components of our remote development services

The staff

Drupal developers, just like most other IT experts, value a quiet environment that is not always available in the office. They need inspiration and concentration in order to be productive. So the quality of their work may even improve from their home isolation. 

While working remotely, our team members are able to make themselves comfortable on their personal couch when they want to and deliver their genius ideas. In addition, they are never stuck in traffic jams and have more time for their families.

Of course, working from home takes self-discipline and responsibility. But we only keep people on the team who have proved responsible and reliable. They keep to the deadlines and regularly meet with the whole team and the customer via video calls according to the best Scrum practices.

Remote work requires establishing a good work-life balance, and our Drupal team tries to stick to the best recommendations here. These include having strict working hours, changing clothes from pyjamas to something more official, informing the family about their video conference time, and more. However, these are just recommendations, because it’s not the clothes that matter —- it’s the skills.

The equipment

Drupal development is in a very lucky industry that can continue through the lockdown. The only necessary equipment being computer hardware. It’s very easy — an office can be at home if it is properly equipped with the right PCs! For many IT specialists, the capacities of their PCs and the characteristics (and the number) of their monitors are indispensable for their productive work.

InternetDevels remote home office in times of quarantine

So we have provided our development team with all the hardware they need and have also helped with the deliveries to their homes. There was even a case when one member of our development team suddenly had their laptop fail, and we quickly delivered another one so this person did not lose a precious working day.

That said, if you hire remote developers from the InternetDevels web development agency, you can be sure they have everything they need to do the work as efficiently as ever.

The tools

As always, we use the best tools to provide for smooth remote communication and efficient workflows. They eliminate repetitive tasks, increase the development speed, take care of the shared work, and do much more. These include messengers, video conferencing tools, project management software, version control tools for developers, etc.

Among the tools are Zoom, Slack, Google Hangouts, Jira, Skype, Github, Bitbucket, Google Docs, Google Drive, and many more.They are crisis-proof and work at any distance. We have been using them with our overseas web development customers for a long time, so there is nothing new in them.

The new perspectives of your digital presence

Here is what we meant when we promised to tell you about your new perspectives. As you know, the world has moved online due to the lockdown. People browse the web instead of travelling, hiking, or doing other outdoor activities. They are online, and are you there for them?

Businesses that are represented online have a clear advantage. There is an increased need for online shopping, delivery services, online educational and entertainment activities, blogs and news, and much more.

The lockdown will end someday and Covid will be happily defeated — there is no doubt about it! People will travel again, walk around their beautiful cities, and see their loved ones.

However, the trends of online activities will remain ever after — the world has understood their convenience. For example, someone who once enjoyed shopping in your Drupal online store with a user-friendly shopping cart will continue to do it just because it’s quick and easy — so don’t miss a chance to hire the best e-commerce developers.

Loyalty to customers and affordability of services in times of crisis

We strive to help our customers in difficult times, so we are offering very reasonable pricing if you would like to hire remote developers. We want to take part in providing your business sustainability now.

We know that Drupal websites can absolutely give businesses a big boost by attracting customers, promoting their brand, and driving conversions.

We can always find more affordable Drupal development solutions — for example, the use of the core and contributed modules where it is relevant. The efficiency also matters — our devs are able to do much more work per hour in order to deliver the results to you quickly and without extra costs. We started a strategy to immediately divide the scope of work into the standard and custom parts and advising our customers on a faster and more affordable option. So drop us a line to discuss this for your site.

The benefits of outsourcing web development

In our big world full of Drupal talents and having a great level of remote workflows, there is no more need to look for “software developers near me.” Finding a software developer that meets your needs can be a much more successful task if you expand your search across the globe and hire overseas. Here are just a few reasons why outsource web development:

  • Considerable cost savings. Costs can be saved thanks to the big choice to hire developers at more affordable prices outside of your country. Another big advantage of outsourcing vs hiring in-house is the savings it gives you on the recruitment process, permanent monthly wages, work equipment, and so on. By outsourcing web design overseas, you only get your services when you need them.
  • Broader skills. Outsourcing web development is a chance to find top talents in the industry. If you hire an in-house developer, they will find it hard to compete with a team of experts who have worked on many projects, faced a variety of issues, and can combine their specific skills in ever-changing technologies on your project. In addition, UX design, QA, SEO, and other specialists are also part of Drupal web development teams and play their valuable role.
  • Focus on your business. When you hire an outsourcing team, you entrust it to experts without having to worry about or dedicate your precious time to it. You can focus on your own key business processes instead. Still, you are fully able to control the project — your input is welcome in the Agile practices and we are fully available through remote communication and transparent task tracking.
  • Stable workflows. What to do if a developer “falls out” of the process due to an illness or other unforeseeable circumstances, or a particular one cannot fully meet your needs? To cover these cases, outsourcing web agencies have other devs to substitute them. By signing a contract, they take the responsibility to provide stable workflows throughout your project. This is a significant advantage over hiring an in-house developer.
  • Flexibility on your project. Every stage of your project needs a specific amount of work from particular experts: developers, designers, QA engineers, etc. You don’t permanently need all this staff in-house. You are free to vary your requirements according to your business situation — for example, first create an MVP (minimum viable product) and then add features and scale your project. This is not a problem with Agile agencies.

Hire our remote web development team

If you are ready to join the customers who outsource development projects and enjoy the resulting efficiency, our Drupal team is here. Hire remote developers from InternetDevels to outsource web development at affordable prices today. Stand strong against the crisis and more forward thanks to your digital presentation! Contact us to discover more details.

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