Planet Drupal

Subscribe to Planet Drupal feed
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 15 hours 44 min ago

FFW Agency: Announcing Docksal, a Docker-Based Development Environment

23 November 2016 - 8:48am
Announcing Docksal, a Docker-Based Development Environment leigh.anderson Wed, 11/23/2016 - 16:48

At FFW, 90% of our staff spends all day, every day, working with code. We’re site builders and developers, and we’ve created a number of tools to help make our jobs easier. Today, we’re excited to share our Docksal development environment with you in the hopes that it will make your team’s life easier, too.

Docksal is an open-source tool created by FFW for defining and managing development environments. It brings together common development tools, minimizes time spent on configuration, and ensures the consistency of local development environments throughout a team’s continuous integration workflow.

Docksal automatically configures each project's environment to ensure team members are using the same tools, and versions, regardless of the individual requirements of each project. Most importantly, it makes the entire process easy. Docksal offers fully containerized environments with Docker, provides cross-platform support (MacOS, Windows, and Linux,) and has built-in tools that include:

  • drush
  • Drupal Console
  • composer
  • PHP Code Sniffer
  • Apache Solr
  • Varnish
  • Memcache
  • Built-in testing support with Behat and Selenium.

Docksal will even automatically configure virtual hosts for you, so no more editing host files and server configurations.

How can Docksal help your organization?

Docksal has a threefold value proposition. It improves time-to-market and quality on development projects through:

  1. Bringing together common development tools on a unified platform
  2. Minimizing time spent configuring development environments
  3. Assuring quality by ensuring that local environments are consistent across a team’s continuous integration and development workflow.

Docksal makes it easy to bring new team members onto projects in no time flat: the software allows them to get set up and running easily and quickly. We built Docksal to streamline the process of adding team members to our projects: previously, they’d have to go find the code for the project, get it set up on their laptop, get it to work with everything on their laptop, perform a database dump, get the site running. We wanted to simplify this process.

Docksal reduces the work of several hours to several minutes. Our developers don’t have to waste time figuring out why the code isn’t working with the configurations they have on their computers, and our teammates who aren’t code-oriented don’t spend frustrating hours trying to simply access the project. With Docksal, anyone can get a specific Drupal environment set up and running on their machine in two minutes -- and everyone is running the same environment, which acts as an important check on quality and consistency.

Our suite of development tools

Docksal’s features may sound familiar to those of you who previously used our Drude tool. That’s because Docksal is Drude renamed and expanded. Docksal doesn’t just work with Drupal: it works with WordPress, stand-alone HTML files, or any other PHP project— because even though we all love Drupal, sometimes we have to work with other technologies, too.

In addition to Docksal, we’ve also created another development tool called CIBox. CIBox (Continuous Integration toolbox) is a development workflow tool that simplifies the process of checking changes to each project’s codebase. CIBox uses continuous integration -- the process of immediately testing new code when it’s contributed to a project -- to support a truly Agile development process.

CIBox allows developers to have an unlimited number of testing environments, deployment plans, and additional automations. It supports a continuous integration server dedicated to running site builds and tests, as well as a toolbox of scripts for Code Driven Development with Drupal, Wordpress, Symfony, Sylex support. It offers deployment plans and skeletons, and an improved QA workflow from most CI tools. Stay tuned for an upcoming blogpost that speaks to CI Box in more detail.

Try the software for yourself

Docksal and CIBox are both great tools for building projects and managing development environments. Both have saved us a lot of time and ensured that we have streamlined, quality-focused processes.. To get Docksal for yourself, visit docksal.io for downloads and more information, or to try CIBox, check here.  We hope that you give them a try — we think they’ll make your life better, too.

Comments
Categories: Drupal

Unimity Solutions Drupal Blog: Drupal + Alfresco - A Next Gen Content Strategy

23 November 2016 - 4:22am

Organizations are using Enterprise Content Management (ECM) to manage their digital content. ECM is used to manage traditional documents like: word, excel, ppt and pdfs that are created with complex workflows. ECM is popular in the Financial Services, Medical Services, Manufacturing, Government and Publishing. ECM brings with it storage, versioning, workflows and highly customizable metadata models.

Categories: Drupal

Drupalize.Me: Free Exercise Series for Building Drupal Sites

23 November 2016 - 1:00am

We're happy to announce a new kind of series on Drupalize.Me which provides a project for you to practice the skills you've learned in Drupal site building, theming, and module development. Our free Hands-On Exercises: Movie Project provides you with wireframes and customer requirements for a movie review site. Each exercise in the series has you progressively build the site according to the specifications. To help you along the way, each lesson also lists some tutorials and learning resources that will show you what kind of knowledge you need to have to accomplish the given tasks.

Categories: Drupal

Agiledrop.com Blog: AGILEDROP: Drupal Camps in Europe

22 November 2016 - 10:10pm
Our world tour is far from over. This time it continues with Drupal Camps in Europe. After already exploring Drupal Camps that take place in Africa, Asia and North America, it's time for the continent from which our company comes from. We concluded that Drupal Camps are the most frequent in North America, followed by Asia and Africa, which currently takes the last place. What about Europe? Which spot is reserved for it? Since Drupal was founded in Europe by Dries Buytaert – you can read about that too in our blog post –, we expected that Drupal activities and camps will be as frequent as in… READ MORE
Categories: Drupal

Drupal Modules: The One Percent: Drupal Modules: The One Percent — Office Hours (video tutorial)

22 November 2016 - 7:17pm
Drupal Modules: The One Percent — Office Hours (video tutorial) NonProfit Tue, 11/22/2016 - 21:17 4

Here is where we look at Drupal modules running on less than 1% of reporting sites. Office Hours allows you to easily display repeating weekly time schedules.

Categories: Drupal

Drupal Association News: Drupal Association November 22 Board Meeting Update

22 November 2016 - 1:49pm

Today we held the last Board meeting of the year. We met virtually via Zoom and covered two important topics. The first one was a presentation by Angie Byron, who serves on the Technical Advisory Committee. She gave an update on the group’s current tooling study along with next steps, which will include a community blog post where members can provide input on the various tool options being studied.


The second item was sharing our thanks and saying goodbye to two wonderful Board members whose seats expire this month - Danese Cooper and Rob Gill. Danese, who has been on many open source foundation boards, provided great insight and knowledge that helped us navigate as we matured as a community and a Project. And Rob, who worked for NBCUniversal when he first joined the Board, was instrumental in helping The Association understand how to better serve the needs of the end users in our community. We are a better organization because of their generous donation of time and talent.


Please go here if you would like to watch the November 22 Board meeting, read the meeting minutes, or review the Board packet, which also includes our 12 month execution plan dashboard.


We will announce the 2017 Board meeting schedule next month.

Categories: Drupal

Acquia Developer Center Blog: Learn Drupal 8 for Free: Introduction to Drupal 8

22 November 2016 - 12:32pm

Now that Drupal 8 is one year old, you may be asking yourself: “What am I waiting for?” In the last year, thousands of Drupal 8 sites have launched, including NBA.com, Nasdaq Corporate Relations, and Jack Daniels. If you haven’t started your own personal, professional Drupal 8 upgrade, here’s a good reason to get going: the availability of excellent free Drupal 8 learning resources.

Tags: acquia drupal planet
Categories: Drupal

Acquia Developer Center Blog: Contribution Stories: Bassam Ismail, React front-end for your Drupal 8 back-end

22 November 2016 - 11:05am

Drupal gets better when companies, organizations, and individuals build or fix something they need and then share it with the rest of us. Our community becomes better, stronger, and smarter when others take it upon themselves to make a positive difference contributing their knowledge, time, and energy to Drupal. Acquia is proud to play a part, alongside thousands of others, in some of the stories making tomorrow’s Drupal better than today’s. One of them Bassam Ismail’s.

Tags: acquia drupal planet
Categories: Drupal

Mediacurrent: Happy Thanksgiving! Creating a Culture of Giving in Your Organization

22 November 2016 - 10:52am

At Drupalcamp Atlanta 2016, my Partner (Paul Chason) and I were humbled to have an opportunity to deliver the keynote address at Kennesaw State University. The topic we discussed was “Creating a Culture of Giving in Your Organization.” As we started to conduct research, there were four key questions we wanted to address:

Categories: Drupal

Pantheon Blog: How Pantheon Tests Drupal 8 Updates

22 November 2016 - 10:17am
Automated testing is an important part of any active project workflow. When a new version of Drupal 8 comes out, we want to smoke test it on the platform to ensure that everything is working well before we expose it to our customers. We have confidence that Drupal itself is going to work well; we confirm this by running the unit tests that Drupal provides. Most importantly, we also need to ensure that nothing has changed to affect any of the integration points between Drupal and the Pantheon platform.
Categories: Drupal

Chromatic: Drupal Code Standards: Object Oriented Coding & Drupal 8

22 November 2016 - 8:06am

This is the sixth post in a series about coding standards. In this post we’ll talk about how to adhere to standards when writing object-oriented code in Drupal.

Categories: Drupal

InternetDevels: The Gridstack field Drupal module by InternetDevels developers

22 November 2016 - 7:18am

Last time we offered you to learn how to create a Bootstrap subtheme in Drupal 8 from our developer’s blog post, and today is the day for the double profit. There is a useful Drupal module created by the InternetDevels developers who are working at JYSK global shop chain project. And, to tell you more about it, one of the module’s creators wrote this blog post explaining the module’s aim and work. Let’s now give her the floor.

Read more
Categories: Drupal

ComputerMinds.co.uk: Drupal with Composer on Apache on Bash on Windows 10!

22 November 2016 - 5:00am

I've recently been playing around on Windows 10's new Bash on Ubuntu feature, which provides a native bash linux shell for Windows. I thought I'd try and get a Drupal 8 site running, via composer, served from Apache, without any need for a virtual machine in Windows. Kristian Polso wrote a great tutorial that got me most of the way there, but I wanted to share some extra discoveries and thoughts about the experience.

Categories: Drupal

Evolving Web: Planning Your Drupal 8 Theme: Choosing a Base Theme

22 November 2016 - 4:18am

Whenever we start a new Drupal project, we have to choose what kind of theme we're going to create. Are we going to use a framework like Bootstrap or Zurb Foundation? If so, do we start with a contrib base theme or do we implement the framework ourselves? Are we going to use a classic Drupal base theme like Zen or AdaptiveTheme? Or are we going to build the theme 'from scratch' starting with Drupal core or a core base theme? 

read more
Categories: Drupal

Appnovation Technologies: Appnovation and Wunderkraut: Advancing through Acquisition

22 November 2016 - 12:00am

When it comes to the Drupal community, it’s all about contributions and the communal effort to champion open source technologies.

Categories: Drupal

Unimity Solutions Drupal Blog: Drupal 8 Composer Workflow

21 November 2016 - 9:05pm
Drupal 8 Composer Workflow

Composer is a tool for dependency management in PHP. It manages Install and update libraries that project manages. This session elaborate about how composer is used in Drupal 8. In Drupal Composer is inspired from node's npm and ruby's bundler. Composer manage packages/libraries per project on particular directory (by Default directory Vendor), so it has more features then Package managers.

In this session, I will take you through:

Introduction to Composer

Drupal before Composer

Installation of Composer

The actual working of Composer in Drupal 8

Real time challenges faced during Drupal 8 development

    Intended Audience

    Drupal developer with minimal knowledge of Drupal 8

    Familiar with managing external libraries and packages

     

    Session is scheduled on 24 November - 7:00 P.M. 

    Registration closes by 23 November - 8:00 P.M. 

      Categories: Drupal

      2bits: Diagnosing Slow Drupal Operations Using Linux strace

      21 November 2016 - 3:05pm

      The other day, we were helping a long time client with setting up a new development server configured with Ubuntu Server LTS 16.04, which comes with PHP 7.x. Benchmarks of PHP 7.x show that it is faster than any PHP 5.x version by a measurable margin, hence the client's attempt to move to the newer version of Ubuntu and PHP.

      But when we tried benchmarking the new server against the existing server, which has Ubuntu Server LTS 14.04, showed that the new server is extremely slow compared to the existing one.

      We set up investigating where the slow down is coming from, and running a quick version of our Drupal Performance Assessment, which is one of our many Drupal services.

      We started by checking out the logs, which on this site is set to syslog, so as not to bog down the database.

      We saw the following messages:

      Nov 19 16:36:31 localhost drupal: http://dev5.example.com|1478727391|Apache Solr|1.1.1.1|http://dev5.example.com/some-page||0||HTTP Status: 0; Message: Request failed: Connection timed out. TCP Connect Timeout.; Response: ; Request: GET /solr/wso/select?start=0&rows=8&fq=bundle%3A%28blog%20OR%20faq%20OR%20...&wt=json&json.nl=map HTTP/1.0#015#012User-Agent: Drupal (+http://drupal.org/)#015#012Connection: close#015#012Host: solr2.example.com:8983#015#012#015#012; Caller: module_invoke() (line 926 of /.../www/includes/module.inc)

      Nov 19 16:36:31 localhost drupal: http://dev5.example.com|1478727391|Apache Solr|1.1.1.1|http://dev5.example.com/some-page||0||HTTP 0; Request failed: Connection timed out. TCP Connect Timeout.

      As you can see, the server is timing out trying to connect to the Apache Solr service. The existing server does not have this message.

      But is this just an error, or something that impacts performance?

      There are a variety of tools that can help profile PHP's page load, and see where time is being spend. The most popular tool is xhprof, but setting it up is time consuming, and we needed simpler tools.

      So, we settled on a well tried and tested Linux tool, strace. This tool allows one to see what system calls a process is issuing, and measure the time each takes.

      Over the years we have used strace, with tried and tested options to give us what we need quickly, without having to install extensions in PHP, and the like.

      The command line we use discovers the process IDs of PHP on its own, and then traces all of them:

      Caution: NEVER USE THIS ON A LIVE SERVER! You will slow it down considerably, both the CPU and disk access!

      strace -f -tt -s 1024 -o /tmp/trace -p `pidof 'php-fpm: pool www' |
      sed -e 's/ /,/g'`

      Let us explain the options for a bit:

      • -f means follow children. This means that if a process forks and creates a new process, the new process will be traces as well.
      • -tt outputs a time stamp accurate to microsecond time. This is extremely useful for knowing where time is spent.
      • -s means that for most system calls, such as read, a longer output is displayed.
      • -o gives the file name to output the trace to.
      • -p is a list of process IDs to trace. In this case, we use some shell magic to get the process IDs of the PHP daemon (since we are running PHP-FPM), and then replace the spaces with commas. That way, we don't have to find out the process IDs manually then enter them on the command line. A great time saver!

      We run this trace and issue a single request, so the output is not huge. We terminal the strace process by the usual Ctrl-C.

      We inspect the output and we find this:

      9359 17:02:37.104412 connect(6, {sa_family=AF_INET, sin_port=htons(11211), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)

      From the port number, we know this is a connection to the memcached daemon, which is running on the same server. No issues there.

      Then we see this:

      9359 17:02:37.176523 connect(7, {sa_family=AF_LOCAL, sun_path="/var/run/mysqld/mysqld.sock"}, 29) = 0

      That is the connection to MySQL's socket. No issues either.

      Now, we see this (IP address obfuscated):

      9359 17:02:38.178758 connect(9, {sa_family=AF_INET, sin_port=htons(8983), sin_addr=inet_addr("1.1.1.1")}, 16) = -1 EINPROGRESS (Operation now in progress)

      From the port number, we know that this is Apache Solr.

      Then we find the following, repeating more than a hundred times:

      9359 17:02:38.179042 select(10, [9], [9], [], {1, 25000}) = 0 (Timeout)
      9359 17:02:39.205272 nanosleep({0, 5000000}, NULL) = 0
      9359 17:02:39.210606 select(10, [9], [9], [], {0, 25000}) = 0 (Timeout)
      9359 17:02:39.235936 nanosleep({0, 5000000}, NULL) = 0
      9359 17:02:39.241262 select(10, [9], [9], [], {0, 25000}) = 0 (Timeout)
      9359 17:02:39.266552 nanosleep({0, 5000000}, NULL) = 0

      Until we see this:

      9359 17:02:43.134691 select(10, [9], [9], [], {0, 25000}) = 0 (Timeout)
      9359 17:02:43.160097 nanosleep({0, 5000000}, NULL) = 0
      9359 17:02:43.165415 select(10, [9], [9], [], {0, 25000}) = 0 (Timeout)
      9359 17:02:43.190683 nanosleep({0, 5000000}, NULL) = 0

      Did you catch that, or did you miss it? Look closely at the time stamps!

      The PHP process spend a full 5 seconds trying to contact the Apache Solr server, but timing out!

      No wonder page loading is so slow then.

      In this case, there was a block of 'related content' populated from an Apache Solr query. This block was not cached, and for every logged in user, the PHP process waits for the Apache Solr server round trip time, plus query execution time. But worse is if the server times out, because of network issues.

      Tags: Contents: 
      Categories: Drupal

      2bits: Diagnosing Slow Drupal Operations Using Linux strace

      21 November 2016 - 3:05pm

      The other day, we were helping a long time client with setting up a new development server configured with Ubuntu Server LTS 16.04, which comes with PHP 7.x. Benchmarks of PHP 7.x show that it is faster than any PHP 5.x version by a measurable margin, hence the client's attempt to move to the newer version of Ubuntu and PHP.

      But when we tried benchmarking the new server against the existing server, which has Ubuntu Server LTS 14.04, showed that the new server is extremely slow compared to the existing one.

      We set up investigating where the slow down is coming from, and running a quick version of our Drupal Performance Assessment, which is one of our many Drupal services.

      We started by checking out the logs, which on this site is set to syslog, so as not to bog down the database.

      We saw the following messages:

      Nov 19 16:36:31 localhost drupal: http://dev5.example.com|1478727391|Apache Solr|1.1.1.1|http://dev5.example.com/some-page||0||HTTP Status: 0; Message: Request failed: Connection timed out. TCP Connect Timeout.; Response: ; Request: GET /solr/wso/select?start=0&rows=8&fq=bundle%3A%28blog%20OR%20faq%20OR%20...&wt=json&json.nl=map HTTP/1.0#015#012User-Agent: Drupal (+http://drupal.org/)#015#012Connection: close#015#012Host: solr2.example.com:8983#015#012#015#012; Caller: module_invoke() (line 926 of /.../www/includes/module.inc)

      Nov 19 16:36:31 localhost drupal: http://dev5.example.com|1478727391|Apache Solr|1.1.1.1|http://dev5.example.com/some-page||0||HTTP 0; Request failed: Connection timed out. TCP Connect Timeout.

      As you can see, the server is timing out trying to connect to the Apache Solr service. The existing server does not have this message.

      But is this just an error, or something that impacts performance?

      There are a variety of tools that can help profile PHP's page load, and see where time is being spend. The most popular tool is xhprof, but setting it up is time consuming, and we needed simpler tools.

      So, we settled on a well tried and tested Linux tool, strace. This tool allows one to see what system calls a process is issuing, and measure the time each takes.

      Over the years we have used strace, with tried and tested options to give us what we need quickly, without having to install extensions in PHP, and the like.

      The command line we use discovers the process IDs of PHP on its own, and then traces all of them:

      Caution: NEVER USE THIS ON A LIVE SERVER! You will slow it down considerably, both the CPU and disk access!

      strace -f -tt -s 1024 -o /tmp/trace -p `pidof 'php-fpm: pool www' |
      sed -e 's/ /,/g'`

      Let us explain the options for a bit:

      • -f means follow children. This means that if a process forks and creates a new process, the new process will be traces as well.
      • -tt outputs a time stamp accurate to microsecond time. This is extremely useful for knowing where time is spent.
      • -s means that for most system calls, such as read, a longer output is displayed.
      • -o gives the file name to output the trace to.
      • -p is a list of process IDs to trace. In this case, we use some shell magic to get the process IDs of the PHP daemon (since we are running PHP-FPM), and then replace the spaces with commas. That way, we don't have to find out the process IDs manually then enter them on the command line. A great time saver!

      We run this trace and issue a single request, so the output is not huge. We terminal the strace process by the usual Ctrl-C.

      We inspect the output and we find this:

      9359 17:02:37.104412 connect(6, {sa_family=AF_INET, sin_port=htons(11211), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)

      From the port number, we know this is a connection to the memcached daemon, which is running on the same server. No issues there.

      Then we see this:

      9359 17:02:37.176523 connect(7, {sa_family=AF_LOCAL, sun_path="/var/run/mysqld/mysqld.sock"}, 29) = 0

      That is the connection to MySQL's socket. No issues either.

      Now, we see this (IP address obfuscated):

      9359 17:02:38.178758 connect(9, {sa_family=AF_INET, sin_port=htons(8983), sin_addr=inet_addr("1.1.1.1")}, 16) = -1 EINPROGRESS (Operation now in progress)

      From the port number, we know that this is Apache Solr.

      Then we find the following, repeating more than a hundred times:

      9359 17:02:38.179042 select(10, [9], [9], [], {1, 25000}) = 0 (Timeout)
      9359 17:02:39.205272 nanosleep({0, 5000000}, NULL) = 0
      9359 17:02:39.210606 select(10, [9], [9], [], {0, 25000}) = 0 (Timeout)
      9359 17:02:39.235936 nanosleep({0, 5000000}, NULL) = 0
      9359 17:02:39.241262 select(10, [9], [9], [], {0, 25000}) = 0 (Timeout)
      9359 17:02:39.266552 nanosleep({0, 5000000}, NULL) = 0

      Until we see this:

      9359 17:02:43.134691 select(10, [9], [9], [], {0, 25000}) = 0 (Timeout)
      9359 17:02:43.160097 nanosleep({0, 5000000}, NULL) = 0
      9359 17:02:43.165415 select(10, [9], [9], [], {0, 25000}) = 0 (Timeout)
      9359 17:02:43.190683 nanosleep({0, 5000000}, NULL) = 0

      Did you catch that, or did you miss it? Look closely at the time stamps!

      The PHP process spend a full 5 seconds trying to contact the Apache Solr server, but timing out!

      No wonder page loading is so slow then.

      In this case, there was a block of 'related content' populated from an Apache Solr query. This block was not cached, and for every logged in user, the PHP process waits for the Apache Solr server round trip time, plus query execution time. But worse is if the server times out, because of network issues.

      Tags: Contents: 
      Categories: Drupal

      Drupal Modules: The One Percent: Drupal Modules: The One Percent -- CustomError (video tutorial)

      21 November 2016 - 9:50am
      Drupal Modules: The One Percent -- CustomError (video tutorial) NonProfit Mon, 11/21/2016 - 11:50 3

      Here is where we look at Drupal modules running on less than 1% of reporting sites. Today we'll review CustomError, a module which improves customization of 403 and 404 error pages.

      Categories: Drupal

      TimOnWeb.com: Creating content blocks programmatically in Drupal 8

      21 November 2016 - 9:06am

      Let's picture this: you've created a custom content block type (let's say, Ad block) in your shiny new Drupal 8 installation and you want to automaticaly create a fresh new block of that type each time you create a taxonomy term (Ad group), so that every ad group has a ...

      Read now

      Categories: Drupal

      Pages