Drupal Planet

Evolving Web: My 2 Years on the Board of the Drupal Association

1 month ago

Exactly two years ago, I decided to step up and nominate myself to run for the board of the Drupal Association.

You might wonder, how does someone decide to volunteer hundreds of hours of their time to sit on the board of a non-profit organization? What's the motivation?

Stepping Forward

To be elected to the board of the Drupal Association, you have to nominate yourself. To me, nominating yourself feels strange, like telling all your friends at the dog park that your dog is cuter than theirs. Telling people to vote for you in an open source "do-ocracy" feels like the opposite of standard behaviour.

Volunteering for a board position might seem like a big career leap; something you're not qualified to do. But I think in most volunteer board positions, really wanting the job is the most important prerequisite.

What Motivates My Volunteerism

Earlier this year at a Drupal Association board retreat, we went around the table and answered the question “Why Drupal?”.

Not “Why do we use Drupal the software?”, but rather “Why are we each personally passionate about Drupal and the community that creates and supports it?”.

The answers were varied and heartfelt.

People volunteer for a board because they truly care about the vision of the organization they serve. That motivation has to be there.

It's also about the board members and staff you get to work with—volunteering with a group of talented people from around the world is inspiring. And even though the Drupal Association is small, it accomplishes a lot.

Over the past two years, highlights have included:

🧰 🔧 Join Suzanne for our upcoming free webinar, How to Use Assistive Technology to Improve Web Accessibility, on September 9! You'll discover all kinds of tools and techniques that you can use to unlock valuable insights about your website's accessibility. Save your spot today!.

Getting Perspective

If you are motivated by the vision of a non-profit organization, think about stepping up to volunteer for the board. Over my two-year term, not only have I had a chance to contribute to a really unique and inspiring community, I’ve also learned a lot of practical leadership skills from fellow board members and the staff of the Drupal Association. And I've gotten a much broader perspective of what marketing and community engagement looks like in a global organization, beyond the 30-person agency that I run.

While I’m sad to leave my board position now that my term is up, I also now have more skills, and more confidence to continue contributing to marketing Drupal and growing the community around it. The Promote Drupal initiative in particular is a unique opportunity to amplify the Drupal brand around the globe, and I'll be continuing to push Promote Drupal forward.

Step Up and Nominate Yourself

If you are elected to the board of the Drupal Association, you’ll get a chance to serve with the most dedicated groups of volunteers you’ll ever encounter. And if you nominate yourself and aren’t elected, just the act of making a video of your “Drupal story” is a really great experience (even if you’re an introvert like me, and it puts you outside your comfort zone).

If you're thinking about it, I highly recommend that you go ahead and nominate yourself.

+ more awesome articles by Evolving Web

Amazee Labs: The Business Case for Going Decoupled: Part One

1 month ago
<img src="https://www.amazeelabs.com/sites/default/files/styles/leading_image/public/images/current-affairs/The-Business-Case-for-Going-Decoupled-Part-1_2.jpg?h=994a2424&amp;itok=gAkAc_wV" width="1120" height="630" alt="The Business Case for Going Decoupled: Part One" title="The Business Case for Going Decoupled: Part One" class="image-style-leading-image" /> At Amazee Labs, we’re known for decoupled web development and building high-quality web applications using both Drupal and frontend technologies such as React and Gatsby. This can be in the form of standalone decoupled Drupal backends, modern decoupled frontend web apps or some combination of both packaged together as full-stack applications.

Lucius Digital: Sending html mails in Drupal 8/9 programmatically. An example Drupal module including Twig template

1 month ago
Last month we implemented a user story for our Drupal distro OpenLucius: we needed to send clean html from Drupal 9 modules. This should also be scalable, as in: different modules should be able to mail different content in a consistent template. After some time of coding and trying different modules and options within those modules, we finally got it together in a nice, clean and scalable way.

Specbee: How to create and apply a patch with Git Diff and Git Apply commands for your Drupal website

1 month ago
How to create and apply a patch with Git Diff and Git Apply commands for your Drupal website Akshay Devadiga 18 Aug, 2020 Top 10 best practices for designing a perfect UX for your mobile app

Git has been a reliable version control tool for a large number of closed and opensource projects. With Drupal being an extremely collaborative opensource content management framework, a trackable, transparent and distributed version control system like Git is a perfect fit. Git replaced a long-time version control partner – CVS – in early 2011 and became every Drupal contributor’s favorite tool for its security, distributed nature, agile workflow and of course, being opensource!

If you’re a Drupal developer, you should be familiar with patches already. Patches are like band-aids. They are small pieces of code that are added on top of already existing code files to support it or to fix any issues. Different types of patches include bug fixes, security vulnerability fixes, performance enhancements, styling fixes, etc. If you are a regular contributor to the Drupal project, you should know that to fix an issue in Drupal core or contributed modules, you need to submit a patch to an issue in the issues queue. These patches are then examined and tested by the module maintainer and applied if found beneficial.

There are different ways to apply Git patch. Let’s learn more about various Git Diff commands and how to create / apply a patch with the help of git diff and git apply. We will assume that you have already cloned/obtained a copy of the project in your local repository and have pulled the latest changes so you’re not working on an older version of the project. Take a look at some Github best practices here.

What does the Git Diff command do? 

Git diff is a command used to output the changes between two sources inside the git repository. The data sources can be two different branches, commits, files, etc.
The common use cases of git diff commands are listed below.

•    $ git diff 

This command will output all the modified changes which are not added to git or staged.

•    $ git diff filename

This will output the changes of that current file to its previous committed state.

•    $ git diff branch_name

This will output the modifications of the current branch to the mentioned branch to its previous committed state.

•    $ git diff --staged path/to/file

Once the changes are added to Git or moved to staging, you will not be able to see the diff of the files. To see the staged changes, you can use diff with --staged or --cached option.

•    $ git diff commit_id1 commit_id2

To see the difference between any two commits you can use this git diff command where you need to mention the two commit ids. 

If you want to see the list of commits made in the Git repo, use the command $ git log. This will list out all the commits (starting from the latest commit) along with their respective commit ids, the author (developer) and the date it was committed on.

Creating a Git patch with git diff

To create a Git patch, we can use any of the git diff commands to get the changes. We then need to save the changes to a file which can be used as below.

•    $ git diff > my_custom_patch_file.patch
  Apply the Git Patch 

Drupal developers will want to apply Git patches frequently to update changes or to fix bugs. Developers will create a patch file which can be used by other developers according to their need. To apply a git patch to the current branch use the following command.

•    $ git apply patch_file.patch 

In the above example I have created a patch file called my_custom_patch_file.patch and I am applying that patch to my current branch. After applying a patch, you can see the modification in the status.

There might be a situation when the developer does not have write access to the project but still wants to suggest a change or fix a bug. The best way to go around that is to create a patch file. And because patches are additions to the code, testing and reviewing them is easy. This brief guide aims at helping Drupal developers get more familiar with git diff and git apply commands to be able to efficiently create and apply git patches as needed. Contact us to know more about how we can help you with your next Drupal website.

Drupal Planet Drupal Tutorial Drupal Development Drupal Shefali ShettyApr 05, 2017 Subscribe For Our Newsletter And Stay Updated Subscribe

Leave us a Comment

  Shefali ShettyApr 05, 2017 Recent Posts Image How to create and apply a patch with Git Diff and Git Apply commands for your Drupal website Image Improving Drupal 9 Performance with modules, best coding practices and the right server configuration Image Top Drupal 8 (and 9) Modules for Intuitive Website Navigation Want to extract the maximum out of Drupal? TALK TO US Featured Success Stories

Know more about our technology driven approach to recreate the content management workflow for [24]7.ai


Find out how we transformed the digital image of world’s largest healthcare provider, an attribute that defined their global presence in the medical world.


Discover how a Drupal powered internal portal encouraged the sellers at Flipkart to obtain the latest insights with respect to a particular domain.


Eelke Blok: The tale of the mistranslated plurals

1 month ago

Recently, I ran into a strange issue with a Drupal site. Phrases that were based on a count, using the formatPlural() method to determine the correct phrase to report a count, were all translated with the phrase meant for a count of 1. All of them said e.g. 1 vraag or 1 reactie (Dutch for 1 question and 1 comment), even when there we more than one, or in some cases no questions, comments, or whatever the relevant phrase was.

Gábor Hojtsy: Evolving the Upgrade Status user interface - a work in progress you can help influence

1 month ago

Last time I posted an update on Upgrade Status was four months ago. It is fair to say the Drupal contributed project landscape has changed quite a bit in the meantime and Upgrade Status should evolve too. Why? The primary role of Upgrade Status is to help get your site components updated for Drupal 9 compatibility. Most of your site components are contributed modules. In many cases, either your local copies or the remote available updates will already be compatible. 38% of Drupal 8 compatible modules are now Drupal 9 compatible (3535 out of 9258) and most others have a patch waiting to land to either improve or complete compatibility.

The changing role of Upgrade Status

Therefore the role of Upgrade Status for contributed projects is more to make you realize that you are one of (a) already compatible (b) will be compatible with an update or (c) should work with the maintainer on existing issues. As opposed to scanning for problems locally and trying to fix it for yourself. But the current 2.x version of Upgrade Status does not do the job of indicating most of these. Without running the (lengthy) scans on your projects, it does not know which local projects are already compatible. And although it has access to information about whether remote updates are Drupal 9 compatible or not, it will not display them. Look at this screenshot:

We only know the Consumers project update is going to solve your Drupal 9 compatibility issues because the maintainer kindly explained that in their Drupal 9 plan. This requires manual work and is not going to happen universally (eg. as shown below neither Chaos Tools nor Markdown specify a Drupal 9 plan). For projects like Consumers, there is not even a good reason to run our lengthy compatibility checking locally because we know the remote update is available and is going to be compatible. Plus we already know from the local info file that the local version is not yet compatible and requires that update. So if we would provide all this "new" data, the user could understand the situation and decide to not even run a compatibility scan but update the project. So the first step (hopefully) improving the Upgrade Status experience was to add more raw data about local and remote Drupal 9 compatibility. Then it looks like this:

The new "Local 9-ready" column shows if the project is already ready locally (without scanning the project, based on info files in the project). The new "Drupal.org 9-ready" column shows if the remote update is Drupal 9 compatible or not (based on information already provided to core's update module). So what we can see from this example is that Chaos Tools will be entirely resolved with an update, no need to run a problem scan locally. Markdown will not be entirely resolved but is worth updating either way because likely there will be less issues. Not all projects will specify a Drupal 9 plan to go by as discussed above. But if there was no plan specified, we could still link to the issue queue. I don't think applying issue tags consistently is possible to expect from all contributors, so we cannot link to an issue tag search. The link goes to a drupal.org issue search for "Drupal 9" issues in the project. This is the fastest way to get to a place to collaborate with the maintainers of Markdown, given no Drupal 9 plan posted.

Deciding on the next step for each project

So more raw data is great, right? Well, it probably makes the display a lot more confusing. Based on what you read out about the data you would do different things to different projects. For the 2.x version Joe at Drupalize.me published a great post about how to read the data. But what if the module would make suggestions for next steps instead of you needing to carefully examine each part of the data. We could still give users the source data, but save a lot of time to compare data points as to whether a project should be updated or needs more work, etc. Enter the next step suggestion engine I built following extensive discussions with Ofer Shaal. The possible next steps for projects are:

  1. Remove: if you have uninstalled projects on your site, there is likely no point in investing effort keeping them up to date.
  2. Update: if your project has a remote update, that is the best course of action; even if Drupal 9 compatibility is not entirely done there, it is likely improved.
  3. Collaborate with maintainer: contributed projects that are up to date could still have issues; instead of fixing locally, there is high probability that there are issues (including but not limited to from Project Update Bot) in the queue, so better start collaborating instead of fixing locally.
  4. Scan: unless your custom project's info files specify Drupal 9 compatibility already, the suggested next step is to scan them
  5. Fix with rector: for custom projects there is a 40+% likeliness that there is at least one problem we find that is rector-fixable, we suggest you use rector as your next step to avoid needless manual work (again) in this case
  6. Fix manually: if you scanned and there were no rectorable fixes, as a last resort we suggest you fix issues manually

Instead of grouping by custom/contributed and under that installed/uninstalled, the 3.x branch now groups results based on the next suggested step. The raw data is still shown and users can still do whatever they decide if they do not agree with the suggested next step.

This is the state of the module's user interface right after installation. We can already deduct a lot of information from local Drupal 9 readiness, update information and status of projects. For the single custom project in this test setup, we can only move forward with scanning it for problems. The numeric counters of problems found overall were removed, because in the current state of contributed projects rapidly getting ready, counting their individual issues together does not really inform about anything useful.

Overview of status of your site

Usage of Upgrade Status has always been a three-step process. First you need to help the module gather data (run available update checks, run scanning of projects). Second, you would attempt to fix the problems found (update modules, run rector, etc.). Then you scan again and verify compatibility improved. So instead of putting this into documentation, I designed a summary view for the top of the page, that helps you go through the data gathering, the compatibility fixing and the celebratory steps. Here is how that looks like for my test site:

  1. The data gathering steps ensure the module works with the best data possible. Having a way to accurately identify project versions is important, so projects are suggested for that (unless already installed). Having up to date available updates information is important, so it is possible to run that directly from here. There are projects where scanning on this UI is the next step to gather the required data (to move to "Fix with rector" or "Fix manually"). On this site I have one of those test modules. And finally, the UI indicates you can scan either project as you see fit.
  2. Based on the data available, the second columns shows all the next step suggestions for fixing compatibility issues. Projects to remove because they are uninstalled anyway, projects to update, collaborate on, fix with rector, and so on. If your environment is incompatible that also shows up here with a link to details.
  3. Finally there is a column to review what's ready to go. If your environment looks all good, that would show up here, as well as all the projects that are already compatible. A little circle chart shows how far along you are.
Comparing side by side

Check out the current user interface on the left and the new work in progress on the right. A summary of differences:

  1. The current UI is almost a blank slate and is not aware of project status locally or update's compatibility remotely.
  2. On the current UI to gather data you need to run the full scanner on everything. Then you need to decide on next steps based on your reading of the data.
  3. On the current UI the available updates refresh and the suggestion to improve version identification with the deploy modules is sort of hidden under "help text blindess", rather than being an active part of the UI.
  4. The new UI is actionable immediately with categories of projects by next step.
  5. The count summaries of problems found is gone, the focus is more on the projects rather than the individual problems. (Even though that data is entirely accessible).
What do you think?

I believe that more than two months after Drupal 9's release, the role of Upgrade Status is increasingly not to tell you to do fixes locally but to allow you to obtain the fixes already made and collaborate on fixes being developed for contributed projects. And for custom projects, it should suggest you the most automated way forward (rector preferred) that will result in least work to execute. These were the guiding principles of the new user interface. I built it all in the 3.x branch of Upgrade Status, and you can try it out in 8.x-3.0-alpha1. There are definitely spots for improvement and there are probably things I still did not consider. Feedback would be great either as comments here or support requests on the issue queue. Thanks for your input, it is going to help make this better!

Aten Design Group: Drupal 8 content migrations from CSV or spreadsheet

1 month ago
Drupal 8 content migrations from CSV or spreadsheet Joel Steidl Mon, 08/17/2020 - 06:32 Drupal 8 Drupal Planet Drupal Code

Content migration into a Drupal website using spreadsheet or CSV data can be surprisingly effective — especially (counterintuitively?) with large and complex datasets. I’ve written about data migration in Drupal 8 a couple of times, but new projects keep highlighting the diversity of data sources and content configurations, reminding me over and over again that data migration doesn’t really have a one-size-fits-all solution. In this post we’ll get you from zero (fresh Drupal 8 install) to a basic CSV data migration — including entity references and multiple field values — in about 15 or 20 minutes. You can download the accompanying Aten CSV Migrate example module here, and skip straight to the instructions if you'd like.

Drupal 8 offers a handful of powerful and extensible migration modules in core. These modules lay the foundation for a wide variety of migration methods including several flavors of CSV importers like the point-and-click Entity Importer module for Drupal 8 developed by my colleague Travis Tomka. GUI powered migrations are perfect for minimally to moderately complex content, but can have a hard time crossing the finish line alone for complicated datasets.

When GUIs overwhelm: CSV or Spreadsheet content migrations

Earlier this year I began working with the National Science Foundation’s National Ecological Observatory Network (NEON) to migrate robust ecological data collected from more than eighty terrestrial and aquatic field sites across the United States into a Drupal 8 website. The bulk of the data was destined for a content type with more than 75 unique fields, and the sheer volume and complexity of the data was steering me away from point-and-click interfaces.

Luckily for me, the NEON team are old hands when it comes to spreadsheet manipulation. Their expertise and flexibility were applied to formatting a spreadsheet export of their data specifically configured for an import into Drupal. Then their spreadsheets were exported to CSV, a format simple to consume into a Drupal website with the right modules and configurations. With just a little back and forth, we were well on our way to a successful, complex data migration with minimal custom code.

The basics: Getting spreadsheet or CSV data in Drupal

A quick introduction to configuring a CSV import using the Migrate Source CSV module for Drupal 8 is warranted. Once the basics are clear, a more complex import won’t be so overwhelming. If your data is in spreadsheet format, you’ll want to export it to CSV. The example below assumes a comma delimiter, no encapsulation characters, and no escape characters. For more complex content you’ll define these attributes in the source portion of your migration yaml file. The following steps culminate in a working example CSV data migration module you can download and tinker with. Note that this first example doesn’t discuss the more complex sample below, which is also included in the download.

  1. Ensure that the core Migrate module is enabled
  2. Install and enable Migrate Source CSV, Migrate Tools, and Migrate Plus
  3. Create a new custom module (or just download my working example) which will include an info file, a migrate file, a source file, and an install file following the outline below


type: module name: Aten CSV Migration description: 'Aten CSV Migration example. Read more from this data migration from CSV or spreadsheet tutorial.' package: Migration core_version_requirement: ^8.7.7 || ^9 dependencies: - drupal:migrate - migrate_source_csv - migrate_plus

Here we simply define the module and its dependencies.


/** * Implements hook_uninstall() */ function aten_csv_migrate_uninstall() { Drupal::configFactory()->getEditable('migrate_plus.migration.aten_csv_migrate_node')->delete(); Drupal::configFactory()->getEditable('migrate_plus.migration.aten_complex_csv_example')->delete(); }

This implementation of hook_uninstall() will clean up active configuration for the example CSV data migration when the module is uninstalled.


id: aten_csv_migrate_node label: Aten CSV Migrate example node migration_tags: - Aten Migrate CSV source: plugin: csv path: modules/custom/aten_csv_migrate/sources/aten_csv_migrate_items.csv ids: [ID] process: title: Title body: Description field_color: Color field_weight: Weight type: plugin: default_value default_value: item destination: plugin: entity:node

This is the cornerstone of the migration. Using the migrate_plus.migration.my_module.yml namespace lets us hook into the power of the Migrate Plus module. You can see we define our CSV file in path and then map our fields to columns in the CSV file under process including the node type item which we’ll need to create.


ID,Title,Description,Color,Weight 100,Ball,A top quality exercise ball.,Red,4 101,Flag,The perfect flag for your collection.,Blue,1 102,Paperweight,A weight for your important papers,Black,2 103,Thermos,Liquids stay warm with this amazing product.,White,2

Some items that we’ll stuff into nodes!

Now that your code is in place, make sure that you have a content type configured to receive the content import. For this example I’m sticking with core field types and a custom node type item that matches my CSV data. Note that the field machine names match those in the process definitions of my migrate_plus.migration.aten_csv_migrate_node.yml file.

The content type "Item" contains simple core fields and will receive the CSV data.

And here are the field configurations.

The "Item" content type contains the core body field, a field_color (short text) field, and a field_weight (integer) field.

Now you’re set to run your import using drush. You’ll want to clear the drupal and drush caches before attempting your import via drush cr and drush cc drush - at which point you’ll see the migrate commands are available to drush via drush list.

Now we run the migration using drush migrate:import aten_csv_migrate_node, and we should see a success message.

With the module properly installed drush cr, drush cc drush, and drush migrate:import aten_csv_migrate_node should complete the example migration.

That’s it for the basic CSV data migration! You’ll now see the items defined in your CSV have populated as nodes, with all the field data mapped to the appropriate fields.

The CSV content has been imported into "Item" nodes.

And if we check inside, we'll see our individual fields migrated as we'd hoped.

Our title, description, color, and weight columns have imported. Note that the ID column is simply a unique identifier, and is not imported into a node attribute.

Now that we’ve got the basics down, we can move on to exploring some real-world complexities. Here’s where manipulating the format of the data in the CSV file becomes particularly handy.

A deeper dive: Getting spreadsheet or CSV data in Drupal

Migrating CSV data into a Drupal website is perhaps the most cost effective when A) The source data is inherently complex, and B) It can be easily manipulated, reformatted and re-exported to facilitate an easier migration. In the case of NEON’s content the volume and uniqueness of data fields, their relational aspects (think tags or entity references), and their inherent complexity (like multiple values for the same field) made it a good candidate on the first account. The client team’s capacity to fiddle with formats and re-export their data to spreadsheets made it a good candidate on the second.

For more complex field types we rely on Migrate Plus plugins which will be used to populate the data. For the complex example included in the download to run successfully, you’ll need to configure a new content type complex_item with the appropriate fields. My example uses the Geofield and Address modules which allows the setup of the field_coordinates and field_address fields respectively. The rest of the fields are core.

The complex_item content type configuration implements core, Address and Geofield fields: field_address (address), body, field_coordinates (geofield), field_link (link), field_multiple_taxonomy_term (entity reference: term), field_single_entity_reference (entity reference: node), field_single_taxonomy_term (entity reference: term).

It’s fields like field_multiple_taxonomy_term that really shine with CSV or spreadsheet imports, in that having the client separate multiple values with a “|” in their export and then implementing the explode plugin quickly solves what could otherwise be a complex problem.

Code highlight is from migrate_plus.migration.aten_complex_csv_example.yml. All mentioned code is included in the Aten CSV Migrate download included with this post.

Another thing to notice in migrate_plus.migration.aten_complex_csv_example.yml is the difference between the entity_lookup plugin and the entity_generate plugin. The entity_generate plugin will search by title for a matching entity, and create one if it doesn’t exist. The entity_lookup plugin, on the other hand, skips the field if an appropriate existing entity isn’t found.

Code highlight is from migrate_plus.migration.aten_complex_csv_example.yml. All mentioned code is included in the Aten CSV Migrate download included with this post.

The Migrate Plus module ships with an impressive collection of plugins and example code. Once you’ve gotten your feet wet, it’s likely you can find everything you need for complex data migrations from CSV within the various Migrate Plus example submodules.

There are as many ways to migrate data into Drupal as there are unique combinations of source data, client teams, and project requirements. Knowing more about the methods available to you is a great way to broaden your options and choose the right tools for each unique job. What are your go-to migration methods or tricks of the trade? I’d love to hear about them in the comments below.

OpenSense Labs: Visual Design Inspiration: Design Discovery

1 month ago
Visual Design Inspiration: Design Discovery Shalini Rawat Mon, 08/17/2020 - 17:31 ‘’Even the most efficient product teams take a moment and ask themselves, are we designing the right thing?’’

The world we live in seeks for the most creative and interesting design projects for virtual pleasure. It is often believed that projects are successful when the design is the tip of the spear. Sometimes it is difficult to make good decisions in the middle of a project when so many things are in flux. Therefore, it is usually recommended to perform discovery at the beginning of a project to deeply understand the problem or opportunity that needs to be solved. The Discovery phase of a project is an important step in determining the best path forward for the design as well as to develop the best solutions.

An in-depth discovery is a secret weapon for discovering the real user of the websites. In other words, it allows us to deliver a project that perfectly meets the client’s goals and the user’s needs. This particular phase reveals the real pain points that people are experiencing, accompanying the thoughts and feelings someone develops as they use a product. Most importantly, the discovery phase unveils the curtain surrounding the how’s and why’s. 

The article sheds spotlight on the design process that can help you build a strong and reliable design. Further, we will be navigating you on a tour to design discovery and the various ways to strengthen designing. So, without further ado, let’s jump right into the article!

Designing Process

Designing isn’t easy as it sounds to be and can take a lot to do when it comes to building a strong structure and a clear path to completion. The design process, when applied in the right direction, is the best way to unleash a series of steps or sequences of activities, which can lead you to the predetermined goal. Let’s take a look at the phases that can set your team up for success and create great experiences for users.

Discovery phase

First things first, a discovery phase is a research period that has to mark the beginning of each project you embark on. To derive the best outcomes, you need to devote enough time to discovery. To be clear, the more time you invest in discovery, the more and better solution you will find about a problem that you wish to solve. There are two types of discovery: feature/functional discovery and design discovery.

Feature/functional discovery: This discovery is usually conducted by UX analytics. The main objective of this discovery is to collect all requirements for a future product, research the current state of a market to find the competitors, and eventually establish a technological stack for a future product.

Design discovery: Generally, this discovery is conducted by designers. Designers perform research to gather information forming decisions that can be applied to a particular product. The goal during the discovery stage is to connect the information from both discovery processes together and create a robust product design direction. 

Ideation phase

Ideation is the third and often the most exciting phase which aims to generate a large number of ideas that the team can filter and cut down into the best, most practical, or most innovative ones to inspire new and better design solutions and products.


Prototyping is an essential part of the design process which comes right after the ideation phase. Prototyping is an experimental process where design teams implement ideas into tangible forms from paper to digital. With prototypes, you can refine and validate your designs so your brand can release the right products.


Last but surely not least, the testing phase plays a pivotal role in the designing process. The idea to implement the testing phase is the fact that we are not users and therefore by no means, we can conclude that the product is fit to use by the consumers. No matter how good we are at design, there will still be moments that require additional polishing after a product reaches the market.

Digital projects are long, complex, and thorny issues, where quick fixes, while they look obvious, are rarely the best way forward. Here, the discovery phase acts as a bedrock and plays a major role in solving real user problems. Further design discovery can help you mitigate or erase those sorts of problems, because it focuses on understanding the reality of other relevant stakeholders, rather than assuming that reality. Let’s dive a little deeper and discover the design discovery, and why you shouldn't skip this phase.

Design Discovery: In detail

Design discovery isn't something new in the marketplace rather it’s something that we have been chewing on for a long time. However, it is also true that to design better and more useful products, we need to stop designing solutions too early and start instead with product discovery, a process that helps us comprehend the problem in a manner that we don’t just design things better, but design better things.

Source: romanpichler.com

The objective undoubtedly revolves around the product design incorporating its features, dependencies, and related priorities, however, it is equally important to close the gaps that exist in our knowledge. And this brings us to the point of discovery wherein we provide us a pool of knowledge, a product definition, and vision, and a starting point with the help of research, talking through ideas and critiquing each other’s work. Design discovery is a blend of knowledge that an individual and team produces to derive work. There are six things that discovery leads to:

  1. a problem: what do you want to fix
  2. an objective: what is the solution that you want to achieve
  3. context: what adds constraints to the design process
  4. a big idea: the key idea that ties everything together
  5. rules: principles and guidelines to drive your process
  6. models: representations of the experience to help with inspiration, consideration, and testing

This description of design discovery positions it as a linear process that is governed by the tension between understanding and solving a problem. Furthermore, the process of design discovery can be looked at for the Tools, the Process, and the People. 


The design gives us tools which further gives us the power to uncover and clarify problems and to explore a direction. We are aware that successful creative endeavors depend on various environmental and psychological factors working together to achieve ideal chemistry. Therefore, it becomes important for us to choose activities that balance these environmental and psychological factors:

Environmental: Activities should allow accidental clashes between ideas, BUT they also should give individuals quiet space to filter those ideas through a group of people.

Psychological: Activities should give people access to exploring lots of ideas, BUT these ideas should be given to critiques to fuel the creative process.


Nowadays, design projects come in all shapes and sizes. Teams are dividing their work in many different ways, chunking into phases or sprints. Discovery is something that can be carried outside the confines of a particular methodology or project structure. In other words, even though the discovery lists down its objectives, it doesn’t care how you accomplish them. It only calls for four things:

  • collecting information you don’t currently have
  • processing that information into context meaningful for your assignment
  • exploring possible directions based on that information
  • focusing those explorations to a single direction and plan of execution

It can be a strenuous task to convince other people to adopt the Discovery “mindset.” On the surface, you’re admitting you don’t know the solution, don’t understand the problem, don’t know the right priorities, and aren’t sure about the plan, which is not a place people like to be. Ignorance is risky. But people with this attitude don’t have to play dumb. On the contrary, you’re asking people to be smart, not to be led by the first idea that pops into their head or preconceptions or the highest salary in the room.

The essential Discovery mindset comprises three characteristics:

  • Skepticism: People who take participation in the process of Discovery are required to question assumptions to ensure that they are not taking anything for granted. And if they do that, it’s probably because they have deliberately decided to do so to increase project efficiency.
  • Curiosity: Discovery demands people who are insatiably curious about the domain and context of their product. Curiosity results in a lot of questions about things that you might think you already understand.
  • Humility: If you are humble enough, there is no more for fear to ask questions that seem naive or uninformed. Discovery is often fuelled when people become hungry for more information and avoids automatically prioritizing their preconceptions.

Also Read: The significance of writing for designers

Ways to strengthen Design discovery 

Undertaking a designing process is usually a significant investment for most organizations and one that is expected to provide a decent financial return. But as with any investment there comes risk, and as someone responsible for that project, you will want to minimize that risk. Therefore, we have outlined some of the most efficient ways that you can refer to strengthen design thinking. 

Design with Purpose

There is a reason nearly why every element you’re starting right now (on your computer or mobile device), was designed the way it was. In other words, the reason behind the design is to attract or detract the eyeballs, to help click on something or ignore it. Since the purpose is not a new concept and everybody, everywhere—is talking about it, being a designer, it becomes important to consider certain factors before putting any pixels on the canvas:

1. Who are the users we are designing for?
2. What are the prime tasks those users want to accomplish?

Understanding the answers to these questions can help you create your design decisions in a much effective manner. 

Also Read: Importance of gender-inclusive web design

Explore Business goals

There is nothing wrong to say that designing should ensure that adequate time is dedicated to explore and meet business goals. Typically, one of the quickest ways to establish business goals is to host a stakeholder workshop with key project stakeholders. The aim of the workshop is to get the maximum number of participants from across different business functions as possible under a single roof to discuss the vision for the project (Marketing, Finance, Digital, Customer Services, and Sales).

The core purpose of the stakeholder workshop should be:

  • To uncover the Current State 
  • To define the Desired Future State 
  • To align all stakeholders on the Vision for the project.
Explore User goals

Discovery is just not about understanding what the organization wants rather it oscillates between what users actually want and need. Having a clear idea of the consumer needs can help you derive answers to the questions you are looking for. Moreover, it can help you select the right research method as per the available budget. Exploring consumer needs can allow you go into the room with a baseline understanding of the organization and its users and some common pain points. 

Following are the examples that may need to explore:

  • How many users are interacting with the current product?
  • How do users think your product compares to a competitor product?
  • What are the most common friction points within the current product?
  • How is the current product’s performance measured?
  • Do users struggle to find certain key pieces of information?
Create your own hypothesis

t is not humanly possible to learn everything based on research, analysis, exploration, and planning that takes place within a couple of months. Discovery is practical in nature and there are chances that the concepts that go unexplored, the questions that go unanswered may call for action in the near future. Therefore, it is beneficial for you to give names to these assumptions which can form the base for further research.

Begin with quantitative data

Quantitative data can tell you a lot about user habits, so it’s always best to be familiar with the analytics before beginning the qualitative data exercises. Quantitative data is the reflection about how users interact with an existing website or application. Your qualitative findings may validate what you’ve found in the quantitative data, or it may unfold a whole different explanation.

Let the pictures talk

A picture is worth a thousand words. You can use pictures to disseminate the idea behind your piece of work irrespective of the fact that you are still learning designing. Pictures serve as a great tool that help humans to grasp and understand the problem in a much easier way. Remember discovery is your opportunity to create the tone for the project. Therefore, there is nothing to feel worried about setting untested precedents. Not to mention, design is constant iteration, revising assumptions, and incorporating what you learn.

Observations and conclusions are parallel

The observations you have collected aren’t independent in nature; rather they are directly related to the conclusions you have derived from gathering the information and exploring possibilities. As a result, it becomes important to use the observations to remind yourself how you got to a conclusion. The reason being, these connections explain not just where you got it, but why it is important for you.

Also Read: How to build a design system at scale


It’s no secret that design discovery is the pillar of any successful company website. That is to say, a well-designed website is capable of driving traffic to the brand, guiding users with targeted content, and acting as a vital tool to engage with the broader community. Not to mention, it is one of the perfect ways to establish your brand identity and grow a loyal following. Certainly, more and more organizations are catching on to the fact that ensuring the website is rich with relevant, interesting, and shareable information, as well as being visually and aesthetically engaging is worth investing the time and money in!

Want to learn more about what makes a great website design? Ping us at [email protected] and our experts will help you discover the same.

blog banner blog image Design Web Design Product Discovery Product Design Design Discovery Blog Type Articles Is it a good read ? On

Spinning Code: SCDUG August 2020 – “Good Enough” Testing Plans

1 month 1 week ago

This month I gave a talk at SCDUG on encouraging creating testing plans for teams that have been resistant for any number of reasons. This talk is meant to help people argue for the value of testing, and help you create a testing plan that will save more resources that it costs. This was an initial draft of that talk that I’ll be giving a revised and improved version of at Drupal Camp Atlanta in September.

If you would like to join us please check out our up coming events on Meetup for meeting times, locations, and remote connection information.

We frequently use these presentations to practice new presentations, try out heavily revised versions, and test out new ideas with a friendly audience. So if some of the content of these videos seems a bit rough please understand we are all learning all the time and we are open to constructive feedback. If you want to see a polished version checkout our group members’ talks at camps and cons.

If you are interested in giving a practice talk, leave me a comment here, contact me through Drupal.org, or find me on Drupal Slack. We’re excited to hear new voices and ideas. We want to support the community, and that means you.

OSTraining: OSTips-The Drupal Scheduler Module

1 month 1 week ago

I've never understood why you can't schedule the publication or unpublish a node in Drupal. WordPress does it. Joomla does it. Well guess what - Drupal does it too!

In this video, I'm going to show you how to use the scheduler module to publish and unpublished nodes on your schedule. Now, you won't have to go to work at midnight on Friday night!

Let's go.

Amazee Labs: Amazee Labs Q&A Web Maintenance Video Series

1 month 1 week ago
We held an Amazee Labs Q&A session to discuss important topics related to web maintenance, extensions, upcycling, and getting more out of your existing website. Check out this video playlist with Amazees Bryan Gruneberg (Head of Business Development), Ltisch Pickover (Interaction Designer) as well as our special guest, Amiee Hanaford (CMS and Drupal Specialist) to learn how to stay ahead of the game with your existing projects. You can dive into these topics below:

Promet Source: How to Leverage Google Alert Tags

1 month 1 week ago
Google has launched an important new feature to help bring critical alerts and announcements to the forefront of search. While COVID-19 has highlighted the need to convey a single source of truth and critical updates in a timely manner, alerts can cover a wide range of topics that include weather events, criminal activity, threats of foodborne illness, environmental dangers, street closures, and much more.  Here's how you can now ensure that your site's alerts are highlighted as a rich result on a Search Engine Results Page (SERP).

Tag1 Consulting: The inside story on Drupal.org's coming support for merge requests and issue forks - TTT #022

1 month 1 week ago

Throughout Drupal's history, contributors have rallied around Drupal.org as the single source of truth for both the code running Drupal and the infrastructure powering Drupal's issue queues, source control, and automated testing. As the Drupal Association continues on its journey to integrate GitLab features with Drupal.org, we're beginning to see the first glimpses of how Drupal contribution and issue management will evolve thanks to cutting-edge functionality like merge requests and issue forks in GitLab.

Read more preston Wed, 08/12/2020 - 05:56

Ny Media: How to succeed with customer clubs?

1 month 1 week ago
How to succeed with customer clubs? maja August 12, 2020

Most store owners we talk to have mixed feelings about customer clubs. Many people probably see customer clubs as a significant cost in both establishment and operation. Besides, this is yet another channel where you are forced to give additional discounts and offers to customers. Here, however, it is important to look at it from a larger perspective, as well as look at what you can use the customer club for. The customer club is of course largely about building loyalty. But this can be done in other ways than just giving discounts and exclusive offers; namely by offering a fantastic personalized shopping experience that surpasses what your competitors can offer.

The customer club truly becomes useful when you have built a loyal user base that logs in to your website when they shop. In association with registration and adaptation of the customer club, you will suddenly have access to key information that can be used to offer a good and modern shopping experience. In e.g. a shoe store you can ask about gender and shoe size. This can be combined with other data such as purchase history (in the physical store and online store) and click / view history. The result is that customer club members who visit the shoe store only see products, offers, and suggestions that match. A customer could then meet a front page that consists of only men's shoes that are in stock in size 43. Brands that the customer has shopped or viewed before, are weighted highest. Shoe care products can also be suggested based on which shoes the customer bought 6 and 12 months ago.

The cost of establishing a customer club, providing an introductory discount, and maintaining the customer base must therefore be seen as an investment to offer a personalized shopping experience that provides increased conversion rates! Besides, it is probably not long before a personalized shopping experience is the minimum expectations of a modern e-commerce customer.

There are also different views on what customer clubs are and what they should include. How to define a customer club and its content will probably vary a lot from store to store and must be tailored to the individual customer journey. Therefore, we have developed a solution that enables us to tailor the perfect solution to each store. Customer clubs include much more than sending out newsletters!

Before you begin - Define your goal and plan

The first step in starting a successful customer club is to define what a customer club is for you and your business, and what you think a customer club should consist of. What can you offer your members? What benefits should they get? The offer you choose should give customers an advantage that makes them want to join your customer club. How do you differentiate yourself from the competition?
There is a wide range of solutions - it is important to think about what the best fit for your business is. Many people use, for example, point based systems, but this does not necessarily mean that this is the right choice for all types of businesses. Does your business encourage short-term and frequent purchases, or are we talking about rarer and longer-term purchases? Regardless of which solution you choose - keep in mind that it should be easy for the customers.

Furthermore, it is important to think about how to make the customer club visible in your online store. Do you want a large or small focus on the customer club? How much space should the customer club take? An important point is that the customer club is visible to the customers so that they see what benefits they get by being a member. It's all about getting users to sign in, so you can sell items to unique individuals instead of a large undefined mass.

Establish a good registration process

The customer club must contain a registration form with active consent for registration. Here, different forms are used among online stores, and the amount of information that must be entered varies. It is common to have a checkbox for whether you want offers and information by e-mail and/or SMS. It must be easy for customers to navigate to the registration form in the online store. The same applies to the customer club login function. Many people prefer to use a user icon for login in the web page header, in this way it is always easily accessible.

To succeed with a customer club, it is also important to think about how you can get members and non-members to log in or register at check-out in the online store. It is an advantage that non-members also have the opportunity to register in the shopping cart/checkout if they buy an item that has a membership price. Several online stores solve this by giving customers a choice in the shopping cart/checkout whether they want to register or proceed as a guest. To recruit even more to the customer club, it may also be an idea to give non-members this opportunity when they buy items that do not have a membership price.

Offer a good "my account" page

Having a personal page for members of the online store is important for a successful customer club. In this way, they get an overview of their membership. Such a page often contains various functions such as personal information, consent, and order overview. Here you can make it easy for customers to edit their information and unsubscribe if desired.

Give customers a seamless checkout experience

Logged-in users should always have easy access to information about which customer club offers are available, and it must be easy to use them. At checkout, it should be easy to activate/use the available offers. The user must also receive simple and good feedback on what benefits have been used and that they have received the discount or benefits they have been promised earlier in the shopping process. It's all about clear communication and facilitation of functionality.

The link between the physical store and online store

If you have a physical store in addition to an online store, it is important to adapt the customer club accordingly. Which solution works both in the physical store and in the online store? How can you create a link between these? Many customer clubs offer the opportunity to use membership benefits both in-store and online by registering a mobile number in the physical register or logging in as a member of the online store. It is also important that customers can register as members in the physical store. We have extensive experience in integrating various third-party systems to ensure that the customer gets a consistent experience. Make sure to give the customer an equally good experience wherever they start and do not let technical limitations make the processes difficult to use, or difficult for you to utilize for sales purposes.

Contact us if you need help developing or improving your existing customer club!

27 minutes 2 seconds ago
Drupal.org - aggregated feeds in category Planet Drupal
Subscribe to Drupal Planet feed