Newsfeeds

Commerce License Access Control

New Drupal Modules - 28 October 2018 - 3:12am

The Commerce License Access Control module uses ACL and Commerce License to allow sites to sell content with Drupal Commerce.

A license can grant view, update and/or delete access to a specific node with priorities being handled by ACL.

Categories: Drupal

Copyright Footer

New Drupal Modules - 28 October 2018 - 12:51am
Overview

This module creates a block for Copyright © footer. You can configure the start year; and the current year is automatically updated.

Categories: Drupal

Code Karate: An Intro to Lando with Drupal 8

Planet Drupal - 27 October 2018 - 9:21pm
Episode Number: 211

Lando is what the cool kids are using for their local development environments these days. In this episode, I give you a quick introduction to Lando and show you how it can be used to create a Drupal 8 site in less than a minute. I also show you how you can integrate Lando into your workflow if you are hosting your websites on Pantheon.

Are you using or have you tried using Lando yet? What are your thoughts?

Check out the Code Karate Patreon page

Tags: DevOpsDrupalDrupal 8Drupal Planet
Categories: Drupal

Bay Area Drupal Camp: BADCamp: Did You Lose Anything?

Planet Drupal - 27 October 2018 - 5:17pm
BADCamp: Did You Lose Anything? Drupal Planet rob.thorne Sun, 10/28/2018 - 00:17

BADCamp is officially over, and we're striking the circus tent as I write this.  A quick last minute note if you forgot or lost anything. By all means, let us know.  Some things sitting in our lost and found at 5:30 PM:

  • A black Office Depot notebook with someone's excellent notes of BADCamp-ish topics.
  • Someone's white and black prescription eye glasses.
  • Two painted sticks that looks like they are used to juggle.
  • A white USB thumb drive (about 4" in length).
  • A Contigo water bottle.

These items, except for the thumb drive, have been left at the 2nd floor reception desk at the MLK Student Union building.  These generally are kept for about a week, so if you want these items back, please contact the front desk at 510.664.7976.

Since data can be very valuable, the MLK ASUC people recommended that we handle the drive differently. If you lost your drive and want to back, please send us a personal message on Twitter, @BADCamp, and we'll get it back to you.

 

 

Categories: Drupal

Drupal Atlanta Medium Publication: DrupalCamp Organizers Unite: Is it Time for Camp Organizers to Become an Official Working Group?

Planet Drupal - 27 October 2018 - 12:24pm
If the community is a top priority then resources for organizing DrupalCamps must also be a top priority.“Together We Create graffiti wall decor” by "My Life Through A Lens" on Unsplash

Community, community and more community. One of the common themes we hear when it comes to evaluating Drupal against other content management systems (CMS), is that the community is made up of over 100,000 highly skilled and passionate developers who contribute code. And in many of these application evaluations, it’s the community, not the software that leads to Drupal winning the bid. We have also heard Dries Buytaert speak about the importance of the community at various DrupalCons and he is quoted on Drupal.org’s getting involved page:

“It’s really the Drupal community and not so much the software that makes the Drupal project what it is. So fostering the Drupal community is actually more important than just managing the code base.” — Dries BuytaertMy First Encounter with the Drupal Community

With this emphasis on community, I tried to think back to how and when I first interacted with the community. Like so many others, my first introduction to Drupal was at a local Meetup. I remember going to this office building in Atlanta and the room was packed with people, plenty of pizza, soda and, of course, laptops. It was a nice relaxed atmosphere where we introduced ourselves and got a chance to know each other a little bit. Then the lights dimmed, the projector turned on and the presentations kicked off, highlighting some new content strategy or a new module that can help layout your content. After that first meetup, I felt energized because until that point, I had never spoken with someone in person about Drupal and it was the first time that I was introduced to Drupal professionals and companies.

Are you interested in attending the first online DrupalCamp Organizers Meeting, on Friday, November 9th at 4:00pm (EST)? RSVP Here.

DrupalCamps Play An Integral Role in Fostering Community

After attending a few meetups, I joined the email list and I received an email announcing DrupalCamp Atlanta was going to be held at Georgia Tech and the call for proposals was now open for session submissions.

2013 DrupalCamp Atlanta photo by Mediacurrent

I purchased a ticket for a mere $30 and added it to my google calendar. On the day of the event, I remember walking in the front door and being blown away by the professionalism of the conference as there were sponsor booths, giveaways, and four concurrent sessions throughout the day. But it wasn’t until I was inside the auditorium during the opening session and saw the 200 or so people pile in that made me realize this Drupal community thing I heard about was for real. Over the next couple of years, I decided that I would attend other camps instead of DrupalCon because the camps were more affordable and less intimidating. My first camp outside of Atlanta was Design4Drupal in Boston, DrupalCamp Charlotte, DrupalCamp Florida and BADCamp were all camps I went to before attending a DrupalCon. All of these camps were top notch but what I really loved is that each camp had their own identity and culture. It’s exactly what I think a community should be and for the very first time, I felt that I was a part of the Drupal community.

Why Establish the DrupalCamp Organizers Council?

As provided in my previous examples, one of the advantages of Drupal comes from the great community and DrupalCamps are an important aspect in fostering this community. Running any event can be challenging, but to pull off a respectable DrupalCamp you have consider so many things such as the website, credit card processing, food, accepting and rejecting sessions, finding a keynote speaker, the afterparty, pre-conference trainings, oh and did I mention the website? You get my drift, it's a lot of work. Many of these tasks just roll off my tongue from past experience so ask yourself;

  • Where can I share my knowledge with other people who organize camps?
  • What if there was some way that all of us DrupalCamp organizers could come together and implement services that make organizing camps easier?
  • How could we provide camp organizers with resources to produce great camps?

During the #AskDries session at DrupalCon Nashville (listen for yourself), Midwest DrupalCamp Organizer Avi Schwab asked Dries the following question;

“... giving the limited funding the Drupal Association has, where should we go in trying to support our smaller local community events?” — Avi Schwab

Dries then responded with:

“That’s a great question. I actually think its a great idea what they (WordCamp) do. Because these camps are a lot of work. ...I think having some sort of central service or lack of a better term, that helps local camp organizers, I think is a fantastic idea, because we could do a lot of things, like have a camp website out of the box, ... we could have all sorts of best practices out of the box .” — Dries Buytaert

DrupalCamp Slack Community was the first time that I was provided a link to a spreadsheet that had the camp history dating back to 2006 and people were adding their target camp dates even if they were just in the planning stages. As a camp organizer I felt connected, I felt empowered to make better decisions and most of all I could just ask everyone, hey, how are you doing this?

Are you interested in attending the first online DrupalCamp Organizers meeting, on Friday, November 9th at 4:00pm (EST)? RSVP Here.

Earlier this year I volunteered for the Drupal Diversity and Inclusion Initiative (DDI) and was inspired when I heard Tara King on the DrupalEasy podcast, talk about how she just created the ddi-contrib channel on the Drupal slack and started hosting meetings. All jazzed up and motivated by that podcast, I reached out to over 20 different camp organizers from various countries and asked them if they would be interested in being on something like this? And if not, would they feel represented if this council existed?

Here are some quotes from Camp Organizers:

“I think a DrupalCamp Organizers Council is a great idea. I would be interested in being a part of such a working group. Just now I’m restraining myself from pouring ideas forth, so I definitely think I’m interested in being a part.”“I am interested in seeing something that gathers resources from the vast experiences of current/past organizers and provides support to camps.”“I definitely would appreciate having such a council and taking part. I’ve now helped organize DrupalCamp four times, and this was the first year we were looped into the slack channels for the organizers.”“I really like the idea — what do we need to do to get this started?”What are the Next Steps?

Based on the positive feedback and the spike in interest from other camp organizers I have decided to take the plunge and establish our first meeting of DrupalCamp Organizers on Friday, November 9th at 4:00pm (EST). This will be an online Zoom video call to encourage people to use their cameras so we can actually get to know one another.

The agenda is simple:

  • Introductions from all callers, and one thing they would like to see from the council.
  • Brainstorm the list of items the council should be advocating for.
  • Identify procedures for electing people to the Council: ways to nominate, eligibility criteria, Drupal event organizer experience required etc.
  • Outline of a quick strategic plan.

If you are interested in attending the zoom online call on Friday, November 9th at 4:00pm (EST), please fill out the RSVP Here. If you are interested in participating in the Council but are Unable to Attend, please fill out this survey here

If you are attending DrupalCamp Atlanta I will be hosting the Zoom call during one of the concurrent sessions so feel free find me.

DrupalCamp Organizers Unite: Is it Time for Camp Organizers to Become an Official Working Group? was originally published in Drupal Atlanta on Medium, where people are continuing the conversation by highlighting and responding to this story.

Categories: Drupal

Random entity reference formatter

New Drupal Modules - 27 October 2018 - 5:33am

This module provides a new "Random Rendered entity" formatter for the "entity_reference" field type which randomly pulls an entity using AJAX(avoiding Internal Page cache for anonymous users) from the referenced items.

Categories: Drupal

Console log

New Drupal Modules - 26 October 2018 - 10:36pm

This small module allows you to add a logs into your browser console which makes ajax debugging pretty fast.

Also you can use sub-module console_log_watchdog to have all your watchdog messages in the browser side log.

Nowadays module is pretty raw, but it under active development.

Categories: Drupal

OpenSense Labs: Revamp Your Large Drupal System. Why and How

Planet Drupal - 26 October 2018 - 10:15pm
Revamp Your Large Drupal System. Why and How Akshita Sat, 10/27/2018 - 10:45

The old adage “united we stand and divided we fall” doesn’t stand true for modern web application architecture. 

When developing an enterprise application, the architecture can reckon among its different features, a monolithic system is deployed with a hope to process the information unruffled without any possible breakups. 

A logical component for corresponding to different functional areas of the application does the monolithic architecture give a smoother ride when the complexity of technology is increasing?


Monolithic is Boring, while Microservices is Full of Possibilities

With digital transformation on a rise and implications on the entire business operations moving from monolithic to microservices is a paradigm shift on how businesses approach software development. 

Understanding the Monolithic System

A monolithic system is a single-tiered software application in which the user interface and data access code are combined into a single program on a single platform. The multiple components run in the same process, on the same system.

A monolithic architecture is where the multiple layers of the application are tightly coupled together.

Usually, there are three components in a system the user interface, the data access layer, and the data store.

The user interface acts as an entry point of the application varying from the website, web service, or various other entry points.

The second layer is the data access layer which is where the layer of the program will wrap a data store. It handles concerns like authenticating with a data store and sanitizing data before it’ is transmitted to the data store.

The third layer is the database or data store which is the most fundamental part of the system and is responsible for storing arbitrary information (data) and retrieving it. 

Together these three components make up an application. In the case of a monolithic application, the multiple layers of the application tightly coupled together. 

Limitations of a Monolithic Drupal Architecture

The major problems which affect a monolithic architecture application both from a business and end users perspective are as follows:

  1. Performance Impairment: One of the biggest reasons why people are shifting to monolithic is the heavy lifting it does which eventually impairs the performance. Continuous heavy cron jobs and on-demand computation on page request by the end user affect the speed

    In monolithic, all the calculations & computations are handled by the PHP code. And it hurts the business.
     
    • It becomes hard to maintain with time as any new deployment affects the entire system rendering wider regression a must.
       
    • The performance of pages and content delivery to users suffer due to on-the-fly heavy computation.

      In most cases, if it is difficult to manage monolith, the system is already or may be sitting on an n-tier layered system, however, they are not independent and asynchronous of each other. This is the malady with large Drupal systems.
       
  2. Bad User Experience:  The poor implementation of the presentation layer of a monolithic Drupal website is another major reason for the bad user experience and the underperformance of applications.

    Some of the bad practices in Drupal theme layer which increase the rendering time of pages can be listed as: 
     
    • Database calls also present in the theme layer instead of being in controllers, adding to the page load time.
    • Use of traditional and non-optimized code in Javascript & CSS.
       
  3. Unscalable Drupal Implementation: Drupal is scalable. But the approach used for feature implementation in Drupal is not scalable with monolithic systems. 
     
    • Improper use of third-party applications in the backend coupled with heavy reliance cron jobs can slow down the system. An advanced approach would be to fetch and render the third party API via Drupal.
       
    • Extremely minimal use of multilayer cache mechanism provided by Drupal 8 is the biggest culprit. 
       
  4. Missing DevOps & Automation: Just like continuous integration, delivery, and deployment, DevOps is a newer phenomenon. With a monolithic application on run, the DevOps process won’t allow proper collaboration with bad codes creeping into the architecture resulting in a bad UX. 
     
    • There is no Continous Integration based build process which executes a set of automated quality checks.
    • Regression in the current site is very hectic and costly affair due to lack of automation in code and functional testing.

What are Microservices?

A microservice is a software development technique where the application (monolithic) is broken into sub-services which are loosely coupled together. Each service is independent of the main system. Together they offer value at par with a monolithic system. 

Microservices-based architectures enable easy continuous delivery and continuous deployment

Providing the Benefits of Layered Architecture of Microservices

Here are the reasons “why” microservices needs to be adopted in lieu of the monolithic Drupal are given below: 

  1. Fault Isolation: Since the services run independently failure of one service wouldn’t affect the overall performance of the system as much as it affects in the monolithic. Other services will continue to work which will limit the scope of code to be refactored for resolution.
     
  2. Independent Deployment: Components built as microservices can be broken down into multiple component services so that each of these services can be deployed and redeployed independently with improvements without compromising the integrity of an application.
     
  3. Easy Maintenance: Microservices require more efforts comparatively to build, however, it is a lot less effort when maintaining in the long term and will ensure better performance of the overall system.
     
  4. Easy Modification: Easy to understand since they represent a small piece of functionality, and easy to modify for the developers. This will also increase the autonomy of individual development teams within an organization, as ideas can be implemented and deployed without having to coordinate with a wider IT delivery function.

Read how Microservices are powering Drupal development

Exploring the MicroServices Architecture

The following diagram explains the ideal layering in the application of a Drupal monolithic system:

 

  • Presentation Layer: This should be a combination of Drupal, and decoupled React apps.
     
  • Aggregation Layer: This should be Drupal being the core of application engaging with microservices and data store layers.
     
  • Business Logic Layer: This should be Node.js based services executing specific tasks.
     
  • Persistence Layer: This should be the primary store of the most important company and produce data. This will engage with Drupal to handle CRUD operations in real time. The will also engage with decoupled React apps on Presentation layer to help them render the data on frontend without any expensive Drupal calls or backend PHP execution.
Steps: How to Plan the Transition and Execution to a Monolithic Architecture

The transition from a present monolithic architecture to the layered microservices architecture can be done in an incremental fashion. Here’s how the plan can be executed:

  1. Identifying the business logic for components like, endorsements, email triggers and all other computation and processes which block the delivery of pages to the end user.
     
  2. Create independent Node.js based services which handle all the logic for the above-identified processes who communicate within themselves via messaging queues and communicate with Drupal via a push-based cronless mechanism.
     
  3. Create a data store. Drupal will push any change in these entities to the cronless mechanism in real time.
     
  4. Use progressively decoupled Drupal for the following purpose limited in its scope.
    For the presentation layer
     
    • For user, role and subscription management system
    • To manage decoupled react based pages and blocks for search which will be powered by independent elastic service.
    • To manage decoupled react based pages/blocks which pull data in a scalable and fast way from the cronless datastore.

      For CMS features like SEO, schema, static pages, CCMS integration etc.
       
  5. Re-Develop the Drupal theme layer to remove all bad practices in current the code base.
Conclusion 

Web applications need to evolve along with the rapid pace of technology and their users. Digital users expect more in terms of better content recommendations, and better ways for accessing websites and data.

As easy as the idea sounds, building microservices is that complex. Streamlining the overall application development lifecycle to boost frequent releases and QA can lead to a far better product. 

This gives a boost when managing a large Drupal system. Contact us at hello@opensenselabs.com to know more about microservices architectures and its value to your organizational setup.

blog banner blog image microservices Drupal microservices Drupal 8 Monolithic monolithic architecture Service Oriented Architecture Blog Type Tech Is it a good read ? On
Categories: Drupal

KatteKrab: Six years and 9 months...

Planet Drupal - 26 October 2018 - 7:05pm
Saturday, October 27, 2018 - 13:05

Six years and 9 months... is a relatively long time. Not as long as some things, longer than others. Relative. As is everything.

But Six years and 9 months is the length of time I've been on the board of the Drupal Association.

I was elected to serve on the board by the community in February 2012, and then nominated to serve for another two terms. That second term expires on 31 October. My original candidate statement makes somewhat nostalgic reading now... and it's now that I wonder, what I achieved. If anything?

But that's the wrong question. There's nothing useful to be gained in trying to answer it.

Instead - I want to reflect on what I learned.

I learned something from everyone at that table. Honestly, I never really lost my sense of imposter syndrome, and I'm freely and gleefully willing to admit that.

Cary Gordon - we shared a passion for DrupalCon. That show grew into the incredible event it is because of seeds you sewed. And your experience running big shows, and supporting small community libraries seemed to be the perfect mix for fueling what Drupal needed.

Steve Purkiss - we were elected together! Your passion for cooperatives, for Drupal, and for getting on with it, and making things happen was infectious! Thank you for standing with me in those weird first few months of being in this weird new place, called the board of the Drupal Association!

Pedro Cambra - I wish I'd heed the lesson you taught me more often. Listen carefully. Speak only when there's something important to say, or to make the case for a perspective that's being missed. But also good humour. And Thank you for helping make the election process better, and helping the DA "own" the mechanics.

Morten - brother. I can't even find the words to say. Your passion for Drupal, for theming, and for our community always inspired me. I miss your energy.

Angie "webchick" Byron - mate! I still can't fathom how you did what you do so effortlessly! Well, I know it's not effortless, but you make it look that way. Your ability to cut through noise, sort things out, get things done, and inspire the Drupal masses to greatness is breathtaking.

Matthew Saunders - you made me appreciate the importance of governance from a different perspective. Thank you for the work you did to strengthen our board processes.

Addison Berry - Sorry Addi - this is a bit shameful, but it was the mezcal, tequila and bourbon lessons that really stuck.

Danese Cooper - I was so grateful for your deep wisdom of Open Source, and the twists and turns of the path it's followed over such a long time. Your eye to pragmatism over zealotry, but steadfast in the important principles.

Shyamala Rajaram - Oh Shyamala! I can't believe we only first met at DrupalCon Mumbai, or perhaps it was only the first time, this time! Thank you for teaching us all how important it is for us to be in India, and embrace our global community.

Ryan Szrama - you stepped onto the board at such a tough moment, but you stepped up into the role of community elected Director, and helped make sense out of what was happening. Sorry not to see you in Drupal Europe.

Rob Gill - Running. I didn't learn this. Sorry.

Tiffany Farriss - You're formidable! You taught me the importance of having principles, and sticking to them. And then using them to build a foundation in the bedrock. You do this with such style, and grace, and good humour. I'm so thankful I've had this time with you.

Jeff Walpole - You made me question my assumptions all the time! You made me laugh, and you gave me excellent bourbon. You always had a way of bringing us back to the real world when we waded too deep into the weeds.

Vesa Palmu - So many things - but the one that still resonates, is we should all celebrate failure. We should create ritual around it, and formalise the lessons failure teaches. We all learn so much more from mistakes, than from successes.

Sameer Verna - For a time, we were the only linux users at the table, and then I defected back to MacOS - I still feel a bit guilty about this, I admit. You championed Free Software at every step - but also, so often, guided us through the strategic mumbo jumbo, to get to the point we needed to.

Steve Francia - "It's not as bad as you all seem to think it is" I don't know why, but I hear this mantra, spoken with your voice, whenever I think of you. Thank you for your Keynote in Nashville, and for everything.

Mike Lamb - I've not yet put into practice the lesson I need to learn from you. To switch off. To really go home, and be home, and switch off the world. I need me some of that, after all of this. Thank you so much for all you've done, but more for your positive, real world perspective. Ta!

Annie - I missed your presence in Germany so much - I feel like I've still got so much to learn from you. You bridged the worlds of digital and marketing, and brought much needed perspective to our thinking. Twas an honour to serve with you.

Audra - With you too, I feel like I was only beginning to get into the groove of the wisdom you're bringing to the table. I hope our paths continue to cross, so I can keep learning!

Baddy Sonja Breidert - A powerful lesson - as volunteers, we have to account for the time, passion and energy we borrow from the rest of our lives, when we give it to Drupal. And Drupal needs to properly recognise it too.

Ingo Rübe - You taught me how to have courage to bring big ideas to the table, and show grace in letting them go.

Michel van Velde - You taught me to interrogate my assumptions, with fun, with good humour, and honest intention of doing good.

George Matthes - You taught me the power of questioning the received wisdom from history. You reminded me of the importance of bringing fresh eyes to every challenge.

Adam Goodman - a simple, but important lesson. That leadership is about caring for people.

Suzanne Dergacheva - newly elected, and about to start your term - I had too little chance to learn from you at the board table, but I already learned that you can teach the whole community kindness by giving them carnations! #DrupalThanks to you too. And power to your arms as you take the oars as a community elected director, and help row us forward!

And to all the staff who've served over the years, your dedication to this organisation and community it serves is incredible. You've all made a difference, together, to all of us. Special mentions for four of you...

Kris - from Munich to Vienna - my constant companion, and my dive bar adventure buddy. Til next time there is cheese...

Holly - Inspiring me to knit! Or, more accurately, to wish I could knit better than I can. To knit with conviction! It's a metaphor for so much, but also very very literally. Also I miss you.

Steph - Your vibrant enthusiasm, and commitment to DrupalCon always inspired me. Your advice on food trucks in Portland nourished me.

Megan - where to start? I'd never finish. Kindness, compassion, steely focus, commercial reality, "operational excellence", and cactus margaritas.

I save my penultimate words for Dries... Thank you for having faith in me. Thank you for creating Drupal, and for sharing it with all of us. Also, thank you sharing many interesting kinds of Gin!

These final words are for Tim - as you take the reins of this crazy sleigh ride into the future - I feel like I'm leaving just before the party is really about to kick off.

Go you good thing.

Good bye, so long, and thanks for all the fish.

The DA does amazing work.
If you rely on Drupal, you rely on them.

Please consider becoming a member, or a supporting partner.

Categories: Drupal

Dcycle: Local development using Docker Compose and HTTPS

Planet Drupal - 26 October 2018 - 5:00pm

This article discusses how to use HTTPS for local development if you use Docker and Docker Compose to develop Drupal 7 or Drupal 8 (indeed any other platform as well) projects. We’re assuming you already have a technique to deploy your code to production (either a build step, rsync, etc.).

In this article we will use the Drupal 8 site starterkit, a Docker Compose-based Drupal application that comes with everything you need to build a Drupal site with a few commands (including local HTTPS); we’ll then discuss how HTTPS works.

If you want to follow along, install and launch the latest version of Docker, make sure ports 80 and 443 are not used locally, and run these commands:

cd ~/Desktop git clone https://github.com/dcycle/starterkit-drupal8site.git cd starterkit-drupal8site ./scripts/https-deploy.sh

The script will prompt you for a domain (for example my-website.local) to access your local development environment. You might also be asked for your password if you want the script to add “127.0.0.1 my-website.local” to your /etc/hosts file. (If you do not want to supply your password, you can add that line to /etc/hosts before running ./scripts/https-deploy.sh).

After a few minutes you will be able to access a Drupal environment on http://my-website.local and https://my-website.local. For https, you will need to explicitly accept the certificate in the browser, because it’s self-signed.

Troubleshooting: if you get a connection error, try using an incongnito (private) window in your browser, or a different browser.

Being a security-conscious developer, you probably read through ./scripts/https-deploy.sh before running it on your computer. If you haven’t, you are encouraged to do so now, as we will be explaining how it works in this article.

You cannot use Let’s Encrypt locally

I often see questions related to setting up Let’s Encrypt for local development. This is not possible because the idea behind Let’s Encrypt is to certify that you own the domain on which you’re working; because no one uniquely owns localhost, or my-project.local, no one can get a certificate for it.

For local development, the Let’s Encrypt folks suggest using trusted, self-signed certificates instead, which is what we are doing in our script.

(If you are interested in setting up Let’s Encrypt for a publicly-available domain, this article is not for you. You might be interested, instead, in Letsencrypt HTTPS for Drupal on Docker and Deploying Letsencrypt with Docker-Compose.)

Make sure your project works without https first

So let’s look at how the ./scripts/https-deploy.sh script we used above works.

Let’s start by making sure our project works without https, then add a https access in a separate container.

In our starterkit project, you can run:

./scripts/deploy.sh

At the end of that scripts, you will see something like:

If all went well you can now access your site at: => http://0.0.0.0:32780/user/reset/...

Docker is serving our application using a random non-secure port, in this case 32780, and mapping it to port 80 on our container.

If you use Docker Compose for local development, you might have several applications running at the same time on different host ports, all mapped to port 80 on their respective container. At the end of this article you should be able to see each of them on port 443, something like:

  • https://my-application-one.local
  • https://my-application-two.local
  • https://my-application-three.local

The secret to all your local projects sharing port 443 is a reverse proxy container which receives requests to port 443, and indeed port 80 also, and acts as a sort of traffic cop to direct traffic the appropriate container.

That is why your individual projects should not directly use ports 80 and/or 443.

Adding an Nginx proxy container in front of your project’s container

An oft-seen approach to making your project available locally via HTTPS is to fiddle with your Dockerfile, installing openssl, setting up the certificate there; and rebuilding your container. This can work, but I would argue that it has significant drawbacks:

  • If you have several projects running on https port 443 locally, you could only develop one at a time because you only have one 443 port on your host machine.
  • You would need to maintain the SSL portion of your code for each of your projects.
  • It would go against the principle of separation of concerns which makes containers so robust.
  • You would be reinventing the wheel: there’s already a well-maintained Nginx proxy image which does exactly what you want.
  • Your job as a software developer is not to set up SSL.
  • If you decide to deploy your project to production Kubernetes cluster, it would longer makes sense for each of your Apache containers to support SSL.

For all those reasons, we will loosely couple our project with the act of serving it via HTTPS; we’ll leave our project alone and place an Nginx proxy in front of it to deal with the SSL/HTTPS portion of our local deployment.

Local https for one or more running projects

In this example we set up only one starterkit application, but real-world developers often need HTTPS with more than one application. Because you only have one local 443 port for HTTPS, We need a way to differentiate between our running applications.

Our approach will be for each of our projects to have an assigned local domain. This is why the https script we used in our example asked you to choose a domain like starterkit-drupal8.local.

Our script stored this information in the .env file at the root or your project, and also made sure it resolves to localhost in your /etc/hosts file.

Launching the Nginx reverse proxy

To me the terms “proxy” and “reverse proxy” are not intuitive. I’ll try to demystify them here.

The term “proxy” means something which represents something else; that term is already widely used to denote a web client being hidden from the user. So, a server might deliver content to a proxy which then delivers it to the end user, thereby hiding the end user from the server.

In our case we want to do the reverse: the client (you) is not placing a proxy in front of it; rather the application is placing a proxy in front of it, thereby hiding the project server from the browser: the browser communicates with Nginx, and Nginx communicates with your project.

Hence, “reverse proxy”.

Our reverse proxy uses a widely used and well-maintained GitHub project. The script you used earlier in this article launched a container based on that image.

Linking the reverse proxy to our application

With our starterkit application running on a random port (something like 32780) and our nginx proxy application running on ports 80 and 443, how are the two linked?

We now need to tell our Nginx proxy that when it receives a request for domain starterkit-drupal8.local, it should display our starterkit application.

There are a few steps to this, most handled by our script:

  • Your project’s docker-compose.yml file should look something like this: it needs to contain the environment variable VIRTUAL_HOST=${VIRTUAL_HOST}. This takes the VIRTUAL_HOST environment variable that our script added to the ./.env file, and makes it available inside the container.
  • Our script assumes that your project contains a ./scripts/deploy.sh file, which deploys our project to a random, non-secure port.
  • Our script assumes that only the Nginx Proxy container is published on ports 80 and 443, so if these ports are already used by something else, you’ll get an error.
  • Our script appends VIRTUAL_HOST=starterkit-drupal8.local to the ./.env file.
  • Our script attempts to add 127.0.0.1 starterkit-drupal8.local to our /etc/hosts file, which might require a password.
  • Our script finds the network your project is running on locally (all Docker-compose projects run on their own local named network), and gives the reverse proxy accesss to it.
That’s it!

You should now be able to access your project locally with https://starterkit-drupal8.local (port 443) and http://starterkit-drupal8.local (port 80), and apply this technique to any number of Docker Compose projects.

Troubleshooting: if you get a connection error, try using an incongnito (private) window in your browser, or a different browser; also note that you need to explicitly trust the certificate.

You can copy paste the script to your Docker Compose project at ./scripts/https-deploy.sh if:

  • Your ./docker-compose.yml contains the environment variable VIRTUAL_HOST=${VIRTUAL_HOST};
  • You have a script, ./scripts/deploy.sh, which launches a non-secure version of your application on a random port.

Happy coding!

This article discusses how to use HTTPS for local development if you use Docker and Docker Compose to develop Drupal 7 or Drupal 8 (indeed any other platform as well) projects. We’re assuming you already have a technique to deploy your code to production (either a build step, rsync, etc.).

Categories: Drupal

CloudSight API Image Alt Text

New Drupal Modules - 26 October 2018 - 4:10pm

Integrate with the CloudSight API and automatically get image alt text.

Installation details in the readme.

Categories: Drupal

Massive apples, cubes draw ire in ranked SoulCalibur VI online play

Social/Online Games - Gamasutra - 26 October 2018 - 12:31pm

Sometimes a well-intended feature can become more of a liability in the wrong hands. A current trend in SoulCalibur VI†™s online play is a perfect example of that.  ...

Categories: Game Theory & Design

Edge Case Games ends development of free-to-play Fractured Space

Social/Online Games - Gamasutra - 26 October 2018 - 10:44am

Edge Case Games is ending development of its free-to-play game Fractured Space and phasing out the game†™s premium currency as a result.  ...

Categories: Game Theory & Design

Palantir: Resources for the Future: The VALUABLES Consortium

Planet Drupal - 26 October 2018 - 10:05am
Resources for the Future: The VALUABLES Consortium brandt Fri, 10/26/2018 - 12:05

Utilizing an existing Drupal platform to measure the socio-economic benefits of satellite data.

rff.org/valuables Measuring the socio-economic benefits of satellite data On

Since the first satellite was launched into space in 1957, satellites have been sent into orbit for a wide array of purposes: they’re used to make star maps, relay television and radio signals, provide navigation, and gather information about Earth. But have you ever wondered why satellite data is important to society?

Like all types of information, the information that satellites gather about our planet is valuable because it can help us make decisions that lead to better outcomes for people and the environment. At the same time, it is challenging to measure this value in terms that are socioeconomically meaningful, like lives saved, increases in revenue, or acres of forest protected. In 2016, Resources for the Future (RFF) created the Consortium for the Valuation of Applications Benefits Linked with Earth Science (VALUABLES) to help address this challenge.

The VALUABLES Consortium

RFF is an independent, nonprofit research institution working to improve environmental, energy, and natural resource decisions through impartial economic research and policy engagement. The VALUABLES Consortium is a cooperative agreement between RFF and the National Aeronautics and Space Administration (NASA) that is building a community of Earth and social scientists committed to quantifying the socioeconomic benefits of Earth observations.

The consortium’s work focuses on two types of activities:

  • Conducting case studies, known as impact assessments, that measure the socioeconomic benefits that satellite information provides when people use it to make decisions
  • Developing educational materials and activities designed to support the Earth science community in quantifying the societal value of its work.
Creating a Place on the Web to Share Resources

To amplify the consortium’s work, RFF wanted to create a place on the web where the VALUABLES Consortium could share the results of its impact assessments and provide Earth scientists with access to resources about quantifying the societal value of their work.

Palantir's Approach

Palantir originally partnered with RFF back in 2015 when we helped them redesign their website to showcase their unique content in a way that accurately reflected their core values. We built them a solid Drupal 7 codebase that they could extend and adapt to changing business needs over time.

For the VALUABLES project, Palantir determined we could easily leverage that carefully built platform to quickly create a new set of templates which would align the entire web presence while addressing new needs.

To create the VALUABLES section of the site, Palantir built on RFF’s existing Drupal 7 theme with the creation of some new VALUABLES-specific components.

These included:

Building on the existing theme and implementing subtle design changes to existing components allowed us to give the VALUABLES sub-section of the RFF site a unique (yet cohesive) look, without needing to build everything from scratch.

Extending the existing platform also ensured the VALUABLES section would have a layout consistent with the rest of the RFF site.

What Does Future Success Look Like?

RFF will be measuring the success of the consortium’s website by looking at factors like how the site’s audience grows over time. They hope that the VALUABLES community will use the platform to learn more about the consortium’s activities, access information about the case studies the consortium is completing, and share the tools it is building.

RFF takes an economic lens toward environmental and energy-based issues, highlighting how decisions affect both our environment and our economy. Historically, RFF has played an important role in environmental economics by developing the methods and studies that help policymakers understand the value of things that are hard to value, like clean air and clean water. Now, a few decades later, RFF is working with NASA on this initiative to value information. Work to quantify the societal benefits of Earth observations is important for a number of reasons. For example, it can help demonstrate return on investments in satellites. It can also provide Earth scientists with an effective way to communicate the value of satellite remote sensing work to policymakers and the public.

This project has been nominated as a “Working Toward a Better Tomorrow” category finalist in the 2018 Acquia Engage Awards.

Categories: Drupal

Focal Point Focus

New Drupal Modules - 26 October 2018 - 9:55am

A Field Formatter supporting Focal Point. Set expected image render height (per view mode) and let the image shift to maintain chosen focal point view-ability.

Requires
Categories: Drupal

ALB Authentication

New Drupal Modules - 26 October 2018 - 9:11am

Authenticate to Drupal behind an AWS Application Load Balancer (ALB)

You can configure an ALB to authenticate users against Cognito or OpenID Connect. The ALB then adds a HTTP header to the backend request with the user's authentication information. This module authenticates users to Drupal based on that header.

Categories: Drupal

AddWeb Solution: Creating Customized Cloning Module for Drupal 8 Website

Planet Drupal - 26 October 2018 - 9:04am

Cloning is a concept that runs in almost every industry that exists, for ages. And the world of website development is no different from others. Multiple tools are available to clone a website, be it a command line or GUI. Being in the business of coding for years now, we at AddWeb have cloned a number of websites/website pages to fulfill the requirement of our client.

 

Over a span of 6+ years of our existence in the industry as a leading IT company, we have worked with a host of international clients. Similarly, this time too a client, whose name we can not disclose due to legal & ethical reasons, came up with a requirement of cloning multiple pages for their Drupal-based website. And we, buckled-up to deliver our expertise and stand true to the client’s requirement.

 

The Client’s Requirement:
Simple cloning is not an extraordinary task since the modules for the same are easily available from the community. But this one required us to clone multiple pages at a time, where the original page is not affected. Also, the pages had to be cloned in such a manner that the components of the same are thoroughly included. Scrutinizing the nature of the requirement, we realized that this type of cloning required us to either custom-create a module or make alterations to the existing module available for cloning. The website was in Drupal 8 and we knew, it’s about time to show some more love for our most loved tech-stack.
 

The Process of Cloning:
Drupal 8 has always been our favorite sphere to work on. So, all excited and geared up with the tool of our experience over the same we searched out the available module for cloning from the community site of Drupal - Drupal.org. The name of this module is ‘Entity Clone Module’. 

, ,

The Emergence of Challenge:
But as they say, “Calm waters does not make a good sailor”. The water was not calm for us either. Because as we said the cloning module that we found from the community came with a limitation, which was that only one page can be cloned at a time. So, now was the time to bring our expert knowledge of Drupal to use and create a custom module that fulfills the requirement of the client.
 

Overcoming the Challenge:
We have had made a couple of modules in Drupal earlier and hence, we knew we would be able to create a fine custom module for cloning. And we did it! Yes, we created a custom module which came with multiple page templates, group-wise. One just needs to select the required page-template, submit the form to clone it and it’s done. Every single selected page gets cloned along with the components. This process turned out to be immensely useful for the editor. Because it saved both the admin’s time as well as energy to clone the pages. This process was otherwise quite tedious and time-taking since the admin had to clone one page at a time; whereas here just one single click and multiple pages are cloned together. And we’ll definitely share the credit of creating this custom module for cloning with the ‘Entity Clone Module’; since we used their script and made some alterations and addition to it in order to make the multiple-page cloning feature possible.

 

The Final Word:
We, at AddWeb Solution Pvt. Ltd., believe the ultimate achievement of any work that we do lies in the satisfaction that the client feels on delivering the final product. And we don’t whether we’re just lucky or too good with our work that like others, this client too responded to us with the appreciation - not just for the quality of the work that we deliver but also for the ‘Artful Agile’ process that we choose to follow for our work!

 

Categories: Drupal

Disable user view page

New Drupal Modules - 26 October 2018 - 8:51am

Disable user view page is a small module with a single goal of disabling the user view page.
Meant for Drupal projects where users can register and sign in but there is no need for viewing users.

  • Disable user view page
  • Redirect /user page to user edit form
  • Remove access to user view page
Categories: Drupal

Aten Design Group: Decoupled Drupal + Gatsby: Automating Deployment

Planet Drupal - 26 October 2018 - 8:15am

To get started with decoupling Drupal with Gatsby, check out our previous screencasts here.

In this screencast, I'll be showing you how to automate content deployment. So when you update the content on your Drupal site, it will automatically rebuild/update your Gatsby site on Netlify.

Download a Transcription of this Screencast

Download Transcription

Categories: Drupal

Moderation state permissions

New Drupal Modules - 26 October 2018 - 8:14am

Provides permissions for updating, deleting and viewing entities based on their moderation states.

Categories: Drupal

Pages

Subscribe to As If Productions aggregator