Planet Drupal

Syndicate content
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 13 hours 17 min ago

1xINTERNET blog: Three nomination for the German and Austrian Splash Awards

Mon, 10/26/2020 - 13:00
This year 1xINTERNET has three nominations for the German and Austria Splash awards taking place next Thursday 29th of October. The event will be virtual this year and is free for everyone.

PreviousNext: Join us at the DrupalGov 2020 Code Sprint

Mon, 10/26/2020 - 05:28

This year DrupalGov is virtual. The PreviousNext team is sponsoring and helping to run the DrupalGov 2020 Sprint Day on Wednesday 4 November, and there are a few things you can do now to hit the ground running on the day.

by kim.pepper / 26 October 2020 This year the DrupalGov sprint will be virtual

We’ll start the day with a brief Zoom meeting to introduce the organisers, and outline how the day will run.

We’ll use #australia-nz Drupal Slack as the main communication channel, with ad hoc Zoom or Meet video calls for those who want to dive deeper into a topic.

For the majority of the day, we’ll be using Slack threads to keep track of sprint topics and reduce the noise in the main channel.

Join us on Slack

If you haven’t already done so, now is a great time to sign up and join the Australian / New Zealand Drupal community in Slack. Instructions for how to join are here: https://www.drupal.org/slack

Let us know about your experience

Please fill in the following survey to let us know about your experience with Drupal, and the areas you’re interested in Sprinting on. This will help us better prepare for the day.

https://www.surveymonkey.com/r/2DPWDPL

How to contribute

Sprint day is not just for developers! Contribution comes in many forms. If you’re interested in the different ways you can contribute to this amazing project, see the list of contributor tasks: https://www.drupal.org/contributor-tasks

Tagging issues to work on

If you want to see what might be an interesting issue to work on, head over to the Drupal.org Issue Queue and look for issues tagged with 'DrupalGov 2020'. These are issues that others have tagged.

You can also tag an issue yourself to be added to the list.

Set Up a Development Environment

There is more than one way to shear a sheep, and there is also more than one way to set up a local development environment for working on Drupal.

If you don't already have a local development environment setup, we recommend using Docker Compose for local development - follow the instructions for installing Docker Compose on OSX, Windows and Linux.

Once you've setup Docker compose, you need to setup a folder containing your docker-compose.yml and a clone of Drupal core. The instructions for that vary depending on your operating system, we have instructions below for OSX, Windows and Linux, although please note the Windows version is untested.

Mac OSX mkdir -p ~/dev/drupal cd ~/dev/drupal wget https://gist.githubusercontent.com/larowlan/9ba2c569fd52e8ac12aee962cc9319c9/raw/e69795e7219c9c73eb8d8d171c31277eeb5bcbaa/docker-compose.yml git clone --branch 8.9.x https://git.drupalcode.org/project/drupal.git app docker-compose up -d docker-compose run -w /data/app app composer install Windows git clone --branch 8.9.x https://git.drupalcode.org/project/drupal.git app docker-compose up -d docker-compose run -w /data/app app composer install Linux mkdir -p ~/dev/drupal # or wherever you want to put the folder cd ~/dev/drupal wget https://gist.githubusercontent.com/larowlan/63a0f6efacee71b483af3a2184178dd0/raw/248dff13557efa533c0ca297d39c87cd3eb348fe/docker-compose.ymlgit clone --branch 8.9.x https://git.drupalcode.org/project/drupal.git app docker-compose up -d docker-compose exec app /bin/bash -c "cd /data/app && composer install"

If you have any issues, join us on Drupal slack in the #australia-nz channel beforehand and we'll be happy to answer any questions you might have.

Install dreditor browser extension

Dreditor is a browser extension that makes it easier to review patches on Drupal.org. Its a must for anyone contributing to Drupal.

There are versions for Firefox and Chrome.

Find Issues to Work On

If you want to see what might be an interesting issue to work on, head over to the Drupal.org Issue Queue and look for issues tagged with 'DrupalGov 2020'. These are issues that others have tagged.

You can also tag an issue yourself to be added to the list.

Being face-to-face with fellow contributors is a great opportunity to have discussions and put forward ideas. Don't feel like you need to come away from the day having completed lines and lines of code.

Code of conduct

To provide a safe and inclusive environment, the sprint day will abide by the DrupalSouth Code of Conduct: https://drupalsouth.org/code-of-conduct

We look forward to seeing you all there!

Tagged Code Sprint, DrupalSouth, DrupalGov 2020

Spinning Code: SC DUG October 2020: Getting Started in Consulting

Sat, 10/24/2020 - 19:03

This month’s SC DUG featured Mauricio Orozco posing questions about getting started as a consultant to long-time members who have all done some work with Drupal as a consultant.

https://www.youtube.com/watch?v=4NG5lgDOFzs

If you would like to join us please check out our upcoming 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.

Drupixels: Export and import Drupal database with drush command

Fri, 10/23/2020 - 05:34
Drush is the ultimate tool and companion for Drupal and it does a great job in situations where we want to import or export our Drupal database.

Amazee Labs: Why enterprises trust the Amazee Labs Open Source Tech Stack over Adobe Experience Manager

Thu, 10/22/2020 - 09:37
<img src="https://www.amazeelabs.com/sites/default/files/styles/leading_image/public/images/current-affairs/Amazee-Labs-Tech-Stack_1.jpg?h=994a2424&amp;itok=nM74aYm4" width="1120" height="630" alt="Graphic of blog title, Why enterprises trust the Amazee Labs Open Source Tech Stack over Adobe Experience Manager" title="Why enterprises trust the Amazee Labs Open Source Tech Stack over Adobe Experience Manager" class="image-style-leading-image" /> Amazee Labs has been contributing to Drupal since the very early days of the project. Our contributions range from writing patches and maintaining modules, through to contributing to new releases and we’re proud to be one of the most experienced Drupal agencies in the world. In recent years, we have moulded our technology stack from several key components, some of which go beyond Drupal. 

Third & Grove: Acquia Engage 2020 Winner: CloudHealth by VMware

Thu, 10/22/2020 - 04:12

Third and Grove was recognized in the 2020 Acquia Engage Award program, winning an award for Leader of the Pack - Technology, for work with CloudHealth by VMware.

Third & Grove: Acquia Engage 2020 Winner: The Carlyle Group

Thu, 10/22/2020 - 04:09

Third and Grove was recognized in the 2020 Acquia Engage Award program, receiving an award for Leader of the Pack - Financial Services, for work with The Carlyle Group.

Promet Source: Pandemic Sparks Web Accessibility Breakthroughs

Thu, 10/22/2020 - 03:29
The impact of this years’ shelter-in-place orders and social distancing guidelines, along with every aspect of how we have coped -- or not coped -- with Covid-19 will be analyzed for years to come. Big changes have emerged in the ways that we interact with the world, and the next normal will likely bring with it many differences in the ways that we live, work, and play.  

Lullabot: Web Development Strategy in a Drupal 9 World

Wed, 10/21/2020 - 15:21

The Drupal 8 to Drupal 9 upgrade path represents a big change for the Drupal world. The big change is that…your organization’s website won’t require a big change. The first iteration of Drupal 9 is just Drupal 8 with all of the deprecated code removed, mimicking Symfony’s model of major release upgrades.

This is good news. Keeping your platform up-to-date with the next version is no longer an “all hands on deck” situation.

Centarro: Commerce Paypal release adds Credit Messaging integration

Wed, 10/21/2020 - 05:14

Have you noticed when you’re happily browsing your favorite online store that you can choose to spread payments over several monthly installments with PayPal? This is a feature of PayPal Credit, a revolving line of credit that gives customers the flexibility to buy now and pay over time.

PayPal Credit has been around for some time, but Credit Messaging is now available for merchants in the United States who wish to promote the availability of special financing offers throughout the entire shopping experience.

Commerce PayPal 8.x-1.0-beta11 now features the basics you need to integrate Credit Messaging into your store. There is eligibility involved, so please check you’re able to use this service.

What does it look like?

We have created a Drupal block you can use anywhere to display the Credit Messaging. It is also fully customizable; you can choose to have Lightweight Text Based Messages, or Flexible Display Banners:

Read more

Aten Design Group: Add to Calendar buttons with AddEvent for Drupal 8

Tue, 10/20/2020 - 23:28
Add to Calendar buttons with AddEvent for Drupal 8 Travis Tomka Tue, 10/20/2020 - 16:28 Drupal

The AddEvent module for Drupal 8 lets you place easy-to-use Add to Calendar buttons on your website that integrate with Apple, Google, Yahoo, Outlook, and Office 365 calendar apps among others. The module also lets your users subscribe to entire calendars managed by AddEvent, adding all of your scheduled events to their calendars and keeping their calendars updated if your event details change.

The module is powered by AddEvent and you’ll need an AddEvent account for it to work properly. Free accounts include one calendar, restricted event-adds, and limited functionality; paid accounts include multiple calendars, higher subscriber limits, and a wide variety of other features. You’ll be able to build Add to Calendar proof-of-concept functionality with the AddEvent free version in just 15-20 minutes — but a professional tier account is necessary for any commercial level use.

First things first: Create an AddEvent account

Head over to AddEvent.com and register for an account. AddEvent is a paid service that offers a variety of features and high volume usage for licensed customers — but they also provide a free Hobby account that will get you started. After creating and verifying your account with the free Hobby plan, navigate to the Account screen by clicking on the user menu in the upper right corner of the screen, then clicking Account. From there, click Domains in the left-hand navigation, then follow instructions to add your domain.

The domain where you will be using an Add to Calendar button needs to be whitelisted with AddEvent.

The Hobby plan only allows the use of one domain — but you’re able (at the time of writing this, anyway) to add a local development environment so that you can test without deploying to a publicly accessible website. When you’re ready to make the switch, you can simply remove your development domain and add in your live domain.

Install the Drupal 8 AddEvent module

Once you’ve registered for the service you’ll need to install the AddEvent module in your Drupal 8 website. You can install a Drupal 8 module in a variety of ways, but the easiest is probably using your terminal, starting from your project’s root directory. First require the module using composer:

composer require drupal/addevent

Then enable the module using drush:

drush en addevent

Now you’re all set to start using the AddEvent module. You can immediately create single-use Add to Calendar buttons using custom blocks, or combine custom blocks with a custom Event node type and the Token module to automatically produce Add to Calendar buttons for all of your events.

Add to Calendar: Static event buttons

Creating a static Add to Calendar button for a single event is super simple. Before we configure a block with our Add to Calendar link, though, we’ll need to fetch our Client ID from AddEvent. To do that, simply navigate to the Account page at AddEvent.com using the menu in the upper right corner of the screen. You should see a Client ID and API Token — just keep this window open or paste the Client ID in a safe place.

You'll need the Client ID to render your Add to Calendar buttons without the AddEvent branding.

Now on your Drupal site navigate to Structure > Block layout (/admin/structure/block) and click on Place block in the region you would like to place your Add to Calendar button. In my case, I’ll demonstrate adding the button to the Content region of a basic page that lives at the URL /my-basic-page.

From the Place a block dialogue that follows, click Place block next to the Add to Calendar item. Fill out the following fields as indicated to get your first example working:

  • Title: Add to Calendar
  • Display title: not checked
  • Button text: Add to Calendar
  • Title: My example event!
  • Description: My example event description!
  • Start: 10/31/2020 8:00 AM (the format is important, the date isn’t)
  • End: 10/31/2020 9:15 AM
  • Client: [Client ID from above]

Under the Customization portion of the form, paste your Client ID in the License field. This will remove the AddEvent branding from your button dialogue.

Finally, in the Visibility section of your block setup, choose Pages and write in the URL of the page you’d like the block on — in my case I’ll use /my-basic-page. Click Save block and navigate to the page you configured your block to appear on.

A basic Add to Calendar button will present options for adding to Google, Yahoo, Apple, Office 365, Outlook calendars and more.

That’s it! Click the button and choose a calendar type to add the event to your calendar — it’s that easy. Next we’ll look at dynamically adding buttons to a custom Event node page.

Add to Calendar: Dynamic event buttons

You can create dynamic event buttons by using the Token module with a custom Event content type. Any node type with a properly configured date field will work. Make sure the Token module is installed before proceeding — use whatever Drupal module installation method works best for you. For this example, we’ll create a super simple Event node type. In my example below, I’ve added two custom fields of the Date type: field_event_date_start and field_event_date_end.

A custom Event node type with date fields for start date and end date, for use with dynamically created Add to Calendar buttons.

Once your Event content type is set up, you just need to add a new Date format that will work well with the AddEvent module. To do that, navigate to Configuration > Date and time formats (/admin/config/regional/date-time) and click the Add format button. You can see below that I’m calling my format AddEvent and using the format string m/d/y g:i A which will translate to something like 10/30/20 4:45 PM — exactly what we need for our Add to Calendar button.

Define a custom AddEvent compatible date format to get your Event content type working with Add to Calendar buttons.

Now we’ll place a new Add to Calendar block just like in the previous section, only we’ll use tokens for the Event title, description, and the start and end dates. When you open the Configure block interface for your new Add to Calendar block, click the Browse available tokens link in the description area of the Event Information section. The tokens you’re looking for will be in the Node group. Notice that the token options for field_event_date_start and field_event_date_end indicate our custom AddEvent format — tokens will be available for all of your custom date formats. Check out my example below.

The Token module lets block configuration be dynamic, allowing your Add to Calendar buttons to pull data from Event pages.

Everything else will be the same as it was in the first example in the section above, with the exception of the Visibility settings. For this block, we’ll restrict visibility by Content Type, ensuring that the block only appears on our custom Event node type pages.

Set block visibility to the Event content type to automatically create an Add to Calendar button on Event pages.

Once you’ve clicked Save block you’re all set. Now your Add to Calendar button will appear on every Event page in the region you specified, and it will inherit all of the event details from the specific event page.

Subscribe to an AddEvent calendar

Paid AddEvent accounts can manage multiple calendars of events on the AddEvent dashboard, and they have access to robust features like RSVP, custom fielded calendar events, subscriber reports, analytics, and more. While the Hobby account can demonstrate how Subscribe to Calendar works, the feature isn’t much use with the free-version restrictions in place.

Setting up a Subscribe to Calendar button is super simple. Before setting up the block on your Drupal site, you’ll need the Unique Key for your AddEvent calendar. From your Dashboard on AddEvent.com, click the menu options icon next to your calendar of choice (Hobby accounts only have one calendar) and click Calendar Page. Now copy the Unique Key for use on the block configuration below

The Unique Key of your calendar used with the Subscribe to Calendar block type subscribes your users to entire AddEvent calendars.

On your Drupal site, navigate to Structure > Block layout (/admin/structure/block) and click Place block in the region of your choice. Choose the Subscribe to Calendar block type, then paste your Unique Key from above in the Data-ID field. You may want to place your Client ID in the License field like in previous configurations, to remove the AddEvent branding from the interface.

You can set up the Visibility settings however you wish, for my example I’ll stick with the /my-basic-page URL like before.

Subscribe to Calendar buttons add all of the events in an AddEvent calendar to your users calendar, and updates them regularly.

You’re all done! Now your users can subscribe to the calendar(s) you maintain on your AddEvent account. As you add and edit events on your AddEvent calendars, your subscribers’ calendars will be automatically updated. Very cool!

NOTE: Different calendar services synchronize at different speeds and some are very slow. Google Calendars, for example, can take up to 24 hours to synchronize changes from calendar subscriptions.

If you have suggestions, comments, or issues related to the AddEvent module, please let me know on the AddEvent module page! And feel free to leave questions or general comments below.

Specbee: All about Progressive Web Apps and Implementing it in Drupal 9

Tue, 10/20/2020 - 13:23
All about Progressive Web Apps and Implementing it in Drupal 9 Shefali Shetty 20 Oct, 2020 Top 10 best practices for designing a perfect UX for your mobile app

The internet was first built with a purpose of better communication for the military and scientists during the 1960s. Soon, the Web transformed into a revolutionary phenomenon around the 1990s and has been unstoppable ever since. Although the purpose for the web kept changing, one thing that remained constant was convenience. 

The need for convenience and effectiveness brought about many innovative ways to access the internet. Native mobile apps and Web apps are two such technologies that have made internet browsing easy and convenient. In this article, we will be talking about Progressive Web Apps and how you can implement it with Drupal using the Drupal Progressive Web App module. But before we dive into all of that, let’s look at the features of native and web apps and how progressive web apps actually fill the gap between the two. 

Features of Native Mobile Apps
  • They are platform-specific apps. Which also means that they need to be rebuilt for every new platform (iOS, Android). 
  • Need to be downloaded.
  • Usually super-fast.
  • Rich in features and functionalities. 
  • Can blend seamlessly into any device and feel like a part of it.
  • Can work offline.
  • They can access device data, device hardware and local file system easily.
  • More expensive to develop, maintain and upgrade.
  • Are pre-approved for security and can be downloaded at App stores. 
  • Hard for search-engines to crawl.
Features of Web Apps
  • Works independent of platform. All you need is a browser to access them. Supports most modern browsers. Does not need to be downloaded.
  • No particular SDK for developing them. Frontend is developed using either HTML, CSS, JavaScript and a LAMP or a MEAN stack for backend.
  • No need to upgrade. Lesser development and maintenance costs.
  • Although it needs authentication, security is an issue because it can be vulnerable for unauthorized access.
  • They don’t work offline and can be slower than native mobile apps.
  • They aren’t listed on App stores so discovering them may be harder.
What are Progressive Web Apps and how do they fill the gap?

So, in short, native web apps are highly capable but lack in terms of its reach. Whereas web apps have a wider reach but lack in capabilities. And that is where Progressive Web Apps come in to bridge the gaps.

Progressive Web Apps is an ideal combination of the benefits of native apps and web apps. Using modern web capabilities, Progressive web apps (PWA) can deliver app-like experiences to users. It combines features offered by most modern browsers with the benefits of mobile experiences. You can build native-app-like, extremely complex and installable apps. With Web Assembly being supported by most browsers now, PWAs can be built in languages of the developer’s choice, thus widely increasing the scope and flexibility of the functionalities it can offer.

Features of Progressive Web Apps
  • They are platform and device independent. Works beautifully on any browser.
  • They load fast and are extremely reliable (even with a low internet speed). Scrolling is very smooth and fluid.
  • Can work offline too.
  • Native app-like push notifications can be enabled.
  • Can access device hardware and data like native apps.
  • Shortcuts can be added on the user’s home screen (instead of downloading them)
  • No need for complex installations. Can share the URLs easily.
  • Responsive across all devices.
  • They are easier and faster to develop. Maintenance is easy as well.

Before talking about the PWA module in Drupal, let’s look at the minimum requirements to build a PWA -

  • Should be run over HTTPS. 
  • Should include a Service Worker – Service worker is a script (javascript) that runs over https on the browser and provides browser access. It provides the native app-like features like offline content delivery, push notifications, etc.
  • Should have a Web App Manifest – which is a JSON file containing metadata with information about the web app like the name, description, author and more. This is also useful for search engine optimization.
The PWA Drupal Module – How to make Progressive Web Apps with Drupal 9 (and 8)

The Drupal PWA module is easy to install comes with the Service Worker (for caching and other offline app-like capabilities) and Manifest.js that you can configure. You will however need to make sure you have SSL installed before you begin with the PWA installing process. If your requirement is extremely specific with tons of customizations, you can develop the PWA by using front end frameworks like Angular or React and customize your own Service worker. 

Installing the PWA Drupal 9 Module

With Drupal 7, installing the Progressive Web App Drupal module was as easy as downloading and enabling the module. You could generate the manifest.js file via a config form and validate it. However, in Drupal 9, we cannot integrate this functionality directly just by enabling the PWA module. The reason being it does not provide you an option to configure the manfest.js file. 

  1. Install the module by downloading and enabling the PWA Drupal module.

     

  2. For Drupal 9, apply this patch

  3. Once done, navigate to configuration -> PROGRESSIVE WEB APP -> PWA settings and add the required information.

             

Service Worker

URLs to cache - This is where you can specify the pages that you need to be made available even when offline. The URLs mentioned here will be cached -make sure you flush the cache whenever you make any updates here.
URLs to exclude – If you have pages that absolutely need to work only with the internet, mention them here.
Offline page – Display a personalized page to your users when they get offline and the page isn’t cached. 

Manifest.json

The Drupal manifest.json file is what allows users to add the PWA to their home screen. It contains configurations that you can modify to change how your PWA will behave – like the name, display name, background color, orientation and more. 

 

The file will be added to the head tag of your index page.

 

       Manifest.json

The below image shows the “Add to the home screen” option and an icon will be created on the home screen.

 

With Progressive Web Apps, you can get the best features of both native and web apps. Drupal 9 lets you create them easily while enabling you to deliver immersive experiences to users. I hope this article has made you fall in love with PWAs as much as us! Contact our expert Drupal developers to know how we can help build your next innovative Drupal project.

Thank you @Megha and @Shruthi for helping me put this article together!
 
 

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

Leave us a Comment

  Shefali ShettyApr 05, 2017 Recent Posts Image All about Progressive Web Apps and Implementing it in Drupal 9 Image Business Process Automation with Drupal – Top Drupal 8 (and 9) modules and distributions Image Get Up to Speed with the AMP module for Drupal – A brief Tutorial 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

link

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.

link

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

link

Dale McGladdery: Ansible Impressions

Tue, 10/20/2020 - 05:13

After using Ansible as a personal DevOps tool for a couple of months, here are some impressions.

Context
  • Outside of work (web development) I look after six Drupal 7 and WordPress sites on shared hosting
  • My local development is done on a MacBook using apache (with some dabbling in Lando/Docker). I've done some wildcarding with dnsmasq and vhosts to streamline local dev site configuration. CMS code is in git repos.
  • My Ansible work is a personal project and I'm the only stakeholder
  • I learned Ansible doing this work
Ansible Tasks

I'm using Ansible to:

  • backup hosted sites to a local, external hard drive
  • automate sync'ing my local dev site from the production site
  • automate deploying Drupal 7 and WordPress updates using git as the deploy tool
  • automate parts of my WordPress update workflow
Impressions / Observations / Thoughts

In no particular order.

  • I love using the Ansible inventory for host data

    Having a single source for host data is nice. I didn't realize how big an issue/pain point this was until it was solved.

  • Agentless is wonderful
  • Ansible has some unique terminology

    It was initially hard remembering Ansible roles are not a security thing.

  • Maintaining a consistent set of host variables was more work than I thought

    As I iterated writing playbooks and adding or changing host variables, consistently maintaining the variables across hosts became a challenge. I eventually wrote a verification playbook to ensure the required variables existed and had correct values.

  • Documenting really helped

    Writing the verification playbook in turn inspired me to document the host variables. It was more useful than I expected. This inspired me to document other project conventions. Not only did it help consistency, it helped me maintain a high-level view of what I was doing.

  • Single stakeholder is good while learning

    I've done a lot of refactoring as I've learned. I'm happy I started Ansible on a personal project with the luxury to make drastic changes.

  • The console output can be awful

    In many situations the Ansible console output is hard to read or confusing. And there is no easy method to output custom strings to help create understandable output.

  • Thinking about a playbook "wrapper"

    Ansible runs the playbook task list on each specified host and reports by host. For some playbooks it would be nice having a customizable playbook wrapper for better host specifiation and summary reporting. In the greater Ansible world there are web based interfaces with the AWX project and RedHat's Ansible Tower product. Both are overkill for my situation. A shell script will likely be my solution.

  • Not for Drupal 8/9

    Composer and CI/CD tools provide a lot of automation options that don't require learning a new language (a colleague is doing some cool stuff with Robo). So far I don't see Ansible being a better solution, though it could augment a CI/CD workflow in some situations.

Tagged:

OpenSense Labs: Managing your development workflow for Drupal projects

Mon, 10/19/2020 - 14:55
Managing your development workflow for Drupal projects Shalini Rawat Mon, 10/19/2020 - 19:25

“Development workflow aligns team members, keeps them engaged, and drives a balance between speed and quality of code changes.”

In today’s competitive environment, organizations are constantly engaged to create new ideas that can act as the leading front doors to building businesses. Starting a new web development project means a blank slate that comes along with the opportunity to try out new technologies. Over the past few years, the concept of developing a strong and influential workflow is no longer limited for the sake of process only. In other words, having a robust development workflow is looked at as an opportunity that can make a huge difference to the efficiency of your team as well as the quality of your product. 

However, when it comes to Drupal development workflow, things are not easy as it may look. That is to say, many Drupal-based organizations suffer from a standard process that needs to be adopted and implemented. Consequently, it leads to real problems, right from a chaotic approach to code submission to a review of the inability to determine where and why things inevitably break.

Therefore, this article is written to demystify the basics of Drupal development workflow to appeal to a wide audience including both work from home as well as work from office. Moreover, after reading this article, you will become familiar with the development techniques we employ to achieve the best possible results and with how we adapt to alterations during development.

Forming a standard development workflow vis-à-vis specific project’s requirements

While perfect planning may seem like the key to a worthy goal, there are chances that even the most perfect plan may require a change in the development workflow. Yes, you heard it right, change in development workflow strategy is not breaking news but a part of the job which every organization undergoes. Managing development workflow helps the organizations to stay flexible and responsive to change without slowing down the work at hand. 
Since different projects have a different workflow, it becomes important for businesses to implement, plan, and fine-tune the architecture and development practices in accordance with the project-specific need. Let's take a look at a few scenarios:

Microservices

The monolithic architecture is a traditional way of building applications. However, this workflow is harder to implement changes wherein the application is large and complex because of highly tight coupling. Any slight change in code affects the entire system which often makes the overall development process much longer. Well, in a situation like this, something like microservices architecture is required which has a different workflow than monolithic architecture. Organizations that require a collection of smaller independent units rather than a single unified unit must shift their development workflow to a microservices architecture wherein the entire application is divided into independent services, owned by small separate teams.  

Pattern Lab

Organizations that are design-focused may require a front-end framework or a completely different workflow that can offer a convenient and easy way to enforce component-driven design. Or let us envisage that you have a project where designing is the foremost thing for which you may essentially look for a refreshing way to create sophisticated designs. In both situations, the standard or existing workflow might not hold up and the development team has to look for a workflow that can serve as a hub for your design system. Born out of design principles, Pattern lab can be used in the aforementioned situations to create and maintain thoughtful UI designs. Development teams that are well-equipped with Pattern Lab create reusable components, thereby speeding up your team’s workflow, and further allowing you to save huge amounts of time and money in the process.

Decoupled Approach

In traditional Drupal websites, Drupal handles the front-end and the back-end functions single-handedly. As a matter of fact, in addition to being a robust content store, Drupal’s powerful frontend takes care of your site design, behavior, usability, and management. It’s perfect for creating impressive visual designs and cutting-edge interactivity. However, with consumer touchpoints like connected devices and wearables taking center-stages, organizations are looking for front-end technologies like React or Gatsbywhich can help them deliver the best digital experiences to potential clients. And in order to fulfill this need, organizations need to make necessary changes in their development workflow. This is because the Drupal development workflow that was applied for creating websites with traditional approaches may not be suitable for decoupled Drupal architecture. With separate teams working on the frontend and backend side of things, your standard development workflow would have to be tweaked in a way that both the teams are able to work parallelly.

Having the right project management tools

Project management refers to an umbrella term which is a compendium of the application of knowledge, skills, tools, and techniques that are required to meet the project requirements. The main intent of project management is to produce an end product that will affect some change for the benefit of the organization that had instigated the project. It is basically the initiation, planning, and control of a range of tasks that are required to deliver the end product using various tools. 

Project management tools are vast and can serve many different functions. For your consideration, we have listed down some of the most common project management tools which play a pivotal role in the Drupal development workflow. So, let’s give each one of them a quick look.

Confluence


Confluence being one of the most popular collaboration tools helps you create, collaborate, and organize all your work in one place. Irrespective of the team size and type including people with mission-critical projects to people looking for a space to build team culture, Confluence serves as a team workspace where knowledge and collaboration meet in a more open and authentic way. Organizations that utilize Confluence are able to make quick decisions, gain alignment, and accomplish more together. Some of the key features of Confluence include: 

Page: This is the place where your content lives. This feature allows you to create pages for almost anything, starting from project plans to meeting notes, troubleshooting guides, policies, and much more. 

Space: Pages that you create are stored in spaces. They are nothing but workspaces where you can easily collaborate on work and keep all your content organized. You can create as many or as few spaces as per the requirement. However, it is always suitable to group related content together in the same space.

Page Tree: This feature organizes space content with a hierarchical page tree in order to find work quickly and easily. It also nests pages under related spaces and pages to organize pages in just about any way. 

Bitbucket


Bitbucket can be called a real worthy competitor to GitHub which comes with different operating systems to provide support to the professional teams. Being a section of the Atlassian family along with tools like Confluence, Jira, etc, Bitbucket is made in such a manner that it provides complete support to the technical teams to explore the entire potential. Bitbucket offers organizations a central place to manage git repositories, collaborate on the source code, and guide through the development flow. A great way to extract maximum advantage of everything that Bitbucket offers is to integrate it with your task management software. The deployment of Bitbucket is made in three different options which include Bitbucket cloud, Bitbucket data center, and Bitbucket Server. Besides these aforementioned advantages that Bitbucket offers, it also allows user to use some awesome features that include:

  • Access control: This feature allows you to restrict access to your source code.
  • Workflow control: Using this feature, you can enforce a project or team workflow.
  • Pull requests: Can be used with in-line commenting for collaboration on code review.
  • Jira integration: This feature gives access to full development traceability.
  • Full Rest API: Provides easy access to building features custom to your workflow if they are not already available from our Marketplace.
Jira


Originally built to track and manage bugs in software development, Jira has now become a famous agile project management tool that helps teams to manage their work under a single roof. Products and applications built on the Jira platform help the team to perform various functions such as plan, assign, track, report, and manage work. If you wish to bring your team together for everything, right from agile software development and customer support to managing shopping lists and family chores, then Jira is your tool. Jira is a family of products providing several products and deployment options that are purpose-built for Software, IT, Business, Ops teams, and more.

Three products have been built on the Jira platform: Jira Software, Jira Service Desk, and Jira Core. Each of these products come with built-in templates for different use cases and integrates seamlessly, so teams across organizations can work better together.

Jira Software: Used to plan, track, and release world-class software.

Jira Service Desk: Used to give customers an easy way to ask for help and your agents a faster way to deliver it.

Jira Core: Used to manage the business projects including marketing campaigns, HR onboarding, approvals, and legal document reviews.

Implementing CI/CD Pipeline

A CI/CD Pipeline implementation, or Continuous Integration/Continuous Deployment, is referred to as the backbone of the modern DevOps environment. The CI/CD pipeline is held responsible to bridge the gap that exists between development and operations teams by automating the building, testing, and deployment of applications. 

In DevOps, a continuous and automated delivery cycle acts as a catalyst that makes fast and reliable delivery possible. As a result, there is a need for proper continuous integration and continuous delivery (CI/CD) tools. The marketplace is flooded with a wide variety of CI/CD tools that can be used to speed up delivery and ensure product quality. Some of the tools are given below:

OpenDevShop

With a front end built in Drupal (Devmaster) and a back-end built with Drush, Symfony, and Ansible, DevShop is a "cloud hosting" system intended for Drupal users which makes it easy to host, develop, test as well as update drupal sites. 

DevShop uses git to deploy the sites, thereby allowing you to create unlimited environments for each site. Moreover, it’s very easy to deploy any branch or tag to each environment using DevShop. Data including databases and files can be deployed between environments. Further, you can run the built-in hooks whenever code or data is deployed, or simply write your own.

Jenkins

Built with Java, Jenkins is an open-source automation server wherein the central build and continuous integration process takes place, regardless of the platform you are working with. With Jenkins, organizations can easily escalate the software development process by simply automating it. This particular powerful open-source server holds the potential to manage and control software delivery processes throughout the entire lifecycle, including build, document, test, package, stage, deployment, static code analysis, and much more. 

Checks during Pre-Code merge

There are certain CI/CD tools that are used by organizations as a strategy to help development teams integrate code easier and find bugs before they are released into actual production. 

-   Code Review 

It refers to a systematic examination to find and remove the vulnerabilities in the code that are often not readily apparent when compiled, such as memory leaks and buffer overflows. 

Example- Sonarqube, an automatic code review tool that is pretty helpful to detect bugs, vulnerabilities, and code smell in your code. 

- Drupal 9 Deprecation

Instead of working on Drupal 9 on its own git branch from the scratch, Drupal 9 was built in Drupal 8. Further, it involves the removal of all deprecated APIs and changing the remaining small number of deprecations to be deprecated for Drupal 10 instead. 

Example: Drupal Check, this tool allows you to run a standalone PHP executable from the command line and get a report of deprecated code, if used any.

- Security Checks 

It refers to the process which involves a Drupal-based site and gets a high-level overview of the site’s security posture to avoid future vulnerabilities or threats.

Example: Snyk, a security tool that developers use and love. It helps software-driven businesses to develop fast and stay secure. 

- Prod code performance reviews

It refers to the process wherein errors are detected that might have been produced during the development process and can potentially hinder workflow productivity. 

Example: Sentry, a leading SQL Server performance monitoring tool that helps developers to diagnose, fix, and optimize the performance of their code.  

Checks during Post-code merge

Just like pre-code merge, there are certain tools that act as a strategy to help development teams to examine and get an insight into the overall scenario after pre-code merge.

-  Performance 

It refers to the process of determining the speed, response time, stability, reliability, scalability, and resource usage under a workload.

Example: Sitespeed.io, a set of open-source tools that allows you to monitor and measure the performance of your website with ease.

-  Accessibility 

It refers to the process to ensure that the site built is usable by people with disabilities like hearing, color blindness, old age, and other disadvantaged groups. 

Example: Pa11y, a command-line interface with a job function to load web pages and highlights accessibility issues, if any. This tool is quite useful to run a one-off test against a web page.

- Warnings/Errors/Ngnix

The process to identify and configure the logging of a few warnings or errors that can further be used to debug your application or website.

Example: Jenkins Next Generation Warnings, a plugin used to collect compiler warnings or issues that are reported by static analysis tools and visualizes the results. 

- Periodic load tests on API level

It refers to a way that allows you to check whether your application is robust enough to handle the load you want it to handle before your users find that out for you. 

Example: k6, an open-source load testing tool to catch performance regression and problems at an earlier stage thereby allowing you to build resilient systems and robust applications.

Conclusion

To conclude, we hope this article has given you a good idea of what a workflow is and how you can use it in order to run your business. To be upfront, planning a development workflow for Drupal 8 projects takes a little bit of effort as well as time but it pays off considerable dividends in the near future. In other words, organizations with a good workflow have seemed to receive a part of the profit in terms of increased productivity, reduced stress, and a better quality of working life in general. All you need to do is give yourself some space to get started and make gradual improvements over time. Doing so will help you reap the possible benefits sooner rather than later. 

Want to know how to automate your own development workflow? Feel free to contact us at hello@opensenselabs.com and our industry experts will help you optimize your development workflow. 

blog banner blog image Drupal Drupal 8 Drupal 9 Blog Type Articles Is it a good read ? Off

Chromatic: Preventing Conflicts when Upgrading to Composer 2

Fri, 10/16/2020 - 21:16

Composer 2 RC2 is now in the wild and the official release of 2.0 is quickly approaching:

The current plan is to release a 2.0 final before [the] end of October.

This is exciting for anyone who has complained about Composer’s performance in the past as Composer 2 brings signifigant performance improvements.

Zoocha Blog: How to fix the Chrome 80 cookies issue in Drupal

Fri, 10/16/2020 - 15:15
Drupal How to fix the Chrome...

There’s plenty of articles out there explaining what the changes are ( https://blog.chromium.org/2020/02/samesite-cookie-changes-in-february.html ), why they’ve been done ( https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy ) and how to ‘theoretically’ fix them with simple code examples, but we haven’t stumbled upon many articles explaining ‘practical’ solutions to apply to a Drupal site to actually fix…

16 Oct 2020 How to fix the Chrome...

OpenSense Labs: Atomic design methodology: Explained

Fri, 10/16/2020 - 12:59
Atomic design methodology: Explained Tuba Ayyubi Fri, 10/16/2020 - 17:29

The concept of atomic design was introduced by Brad Frost and it helped accelerate the process of creating modular designs. The universe is made up of a set of elements, that are the building blocks of everything around us, and these are known to us as the periodic table of elements. All these elements have fixed properties that define each of them. The same way in which these elements combine together to form the universe, the design system is created by the combination of different elements of atomic design.

Let’s dive into these elements and understand the process!

Atoms

We have all read about the atoms in chemistry. They are the building blocks of matter. Every chemical element has different properties and they cannot be broken down without losing their meaning. Now, if we relate the same thing to our design system, the atoms are the foundation building blocks of the user interface. These atoms have basic HTML elements, for example, buttons, labels, spacings, etc that cannot be further broken down without suspending its functions.

Molecules

In chemistry, molecules are a group of atoms attached together that can have different properties. Two molecules made of the same atoms behave differently and show distinct properties. In the same way, Molecules in the user interface are a group of elements working together. For example, if we put the label, button, and search input together, we will get the search form molecule. After they are combined together, they have a purpose and define the atoms that are put together. To construct a user interface, we assemble elements to form molecules like the search molecule.

Organisms

Organisms are comparatively complex UI components. They form a distinct section of an interface. The organisms in the design system are a group of molecules. The search molecule that is created by a group of atoms can be combined with another molecule that creates complete page navigation to make an organism. 

The organisms can have similar or different molecule types. They can be a search form or a logo image, etc.

Templates 

The chemistry analogy ends here. You just read about the basic structure of a design system i.e. the atoms, molecules, and organisms. Now let's see how they can be used to create a consistent product.

At this point we see the design coming together to form pages. Templates articulate the design's content structure and place components into a layout. While crafting a design system, it is important to see how the components look and function when put together. You basically create a skeleton of a page. An important characteristic of templates is that they focus on the page’s content structure in spite of the final product.

Pages

Pages show how the UI looks like when placed with everything in place.
This stage is the most important and concrete stage of all. We are able to understand and have a look at how the page looks when real content is applied and if everything is looking and functioning as planned.

Why go for atomic design?

Atomic design involves breaking off a website into the elements that we just talked about and then forming a website. Now that we have understood them, let’s understand why atomic design should be used and how it makes our life easier.

Mixing and matching components

When components are broken down, it becomes easy for you to understand what part of the website can be reused and mixed to form molecules and organisms.

Creating a style guide

If you have created your site according to the atomic design guidelines, then the atoms and molecules created before the site is built can be a help as a basic style guide.

Consistent code

The chance of writing duplicate code is reduced with atomic design. It also becomes easy to understand which components are used for different parts of the website.

Understandable layout

The documentation of atoms, molecules, and organisms and where they are being used makes it easy to understand what each part of the code is representing. The best part is that it is much easier to explain the codebase to a new developer.

Quick prototyping

Making a list of elements before the website creation starts helps you mockup pages instantly by combining the elements of the page.

Fewer components

If the website creator has a list of all the atoms and molecules, he will more likely use the existing elements rather than creating new ones.

Easy update and removal

With one atom, molecule, or organism changing at a time, it is easier for any update to be done across all other instances of the site. In the same way, the removal of unwanted components becomes easy.

Implementation of atomic design

Getting started with atomic design needs you to understand every part of it and dividing into the basic elements that are, atoms, molecules, and organisms. You can always start by conducting an audit. This will help you look into discrepancies and areas that are lacking. This will make sure that you and your team are familiar with the structure of the website. 

After you have conducted the audit, look for a platform where you can build your design system. Take help from the developers to know more about which tools will be more efficient. Make sure that the tool that you have chosen is easily accessible by everyone in the team. Tools that will help: 

Now that you have a good understanding of the design system and its principles, you can start building your website. Start by the construction of components piece by piece and don’t forget to document what page every component is for. Read about web components and component-based development to know more.

Conclusion

The atomic design provides a clear methodology for creating a design system. It makes sure that we are explicit with our creations and also that our designs are more manageable, consistent, and that the user interface is faster than ever before. For a faster and more efficient user interface for your website, contact us at hello@opensenselabs.com  

blog banner blog image Atomic design methodology design system Component Driven Design Component-based development Blog Type Tech Is it a good read ? On

Lullabot: Perspectives of Women in Technology - Part 3

Thu, 10/15/2020 - 20:34

To highlight and share stories of women in technology, we've rounded up a group of Lullabots to talk about their journeys into technology, which tools they use on a regular basis, the skills they're learning, and what advice they'd share with their younger selves.