Feed aggregator

Drupal.org blog: Technical Advisory Committee formed to modernize developer tools

Planet Drupal -

At DrupalCon Dublin, I spoke about The Association’s commitment to help Drupal thrive by improving the contribution and adoption journeys through our two main community assets, DrupalCon and Drupal.org. You can see the video here.

One area I touch on was my experience as a new code contributor. Contributing my patch was a challenging, but joyous experience and I want more people to have that feeling—and I want to make it as easy as possible for others to contribute, too. It’s critical for the health of the project.

At the heart of the Drupal contributor community are our custom development tools, including the issue tracker, Git repositories, packaging, updates server, and automated testing. We believe there are many aspects of Drupal’s development workflow that have been essential to our project's success, and our current tooling reflects and reinforces our community values of self-empowerment, collaboration, and respect, which we seek to continue to uphold.

It’s time to modernize these developer tools. To support the Association with this objective The Drupal Association created a Technical Advisory Committee (TAC). The TAC consists of community members Angie Byron, Moshe Weitzman, and Steve Francia, who is also our newest Drupal Association board member. The TAC acts in an advisory role and reports to me.

Building off of the work the community has already done, the TAC is exploring opportunities to improve the tools we use to collaborate on Drupal.org. The crux of this exploration is determining whether we should continue to rely on and invest in our self-built tools, or whether we should partner with an organization that specializes in open source tooling.

Our hope is that we will be able to bring significant improvements to our contribution experience faster by partnering with an organization willing to learn from our community and adapt their tools to those things we do uniquely well. Such a partnership would benefit both the Drupal community—with the support of their ongoing development—and potentially the broader open source community—by allowing our partner to bring other projects those aspects of our code collaboration workflow.

The TAC will use a collaborative process, working with staff and community to make a final recommendation. The TAC has already begun the process and has some very positive exploratory conversations. The TAC and staff will be communicating their progress with the community in upcoming blog posts.  

October Drupal Jam at TEN7

Twin Cities Drupal Group -

Start:  2016-10-19 18:00 - 21:30 America/Chicago Organizers:  Les Lim ivanstegic wylbur Event type:  User group meeting

YOU are invited to our free-form monthly Drupal-centric or NOT Coder JAM! We get together and make the code - or whatever, in a part-social/part co-working environment.


718 Washington Ave. N - Suite 301
Minneapolis, MN

Parking spots available this month!

TEN7's parking spaces behind the SOHO building are available again tonight! The lot is accessible from N 2nd St. The following labeled parking spots are available:

R6, R7, R8, R9, R10, 58, 59, 60, 61, 62

We ask questions, answer questions, plan events, discuss technology, build DRUPAL websites, have fun!

Held at TEN7! Once everyone arrives, Ivan orders the pizza by popular request. Beverages also provided, and feel free to BYO!

If you need a ride, post a note here and we'll see what we can do. Also post a comment if you are coming!

Drupal core announcements: Help steer Drupal 8, participate in key initiatives

Planet Drupal -

Maybe you have seen Dries Buytaert's DrupalCon keynote and are looking forward to all the goodies coming in future Drupal 8 versions. The truth is none of those things will happen without people who want to make them happen to solve their own challenges with implementing Drupal solutions. Are you implementing decoupled solutions and have issues you are working on? In the middle of building up a suite of integrated media solutions? These core team meetings are ideal to bring in these issues and discuss solutions and to be part of shaping up where Drupal 8 is heading. Read on for details.

  1. The JSON API and GraphQL meeting is held every week at 2pm UTC in the #drupal-wscii IRC channel.
  2. There is a monthly meeting on all API first work (REST, Waterwheel, JSON API, GraphQL) every third Monday of the month at 11am UTC in Google Hangouts.
  3. The Panels ecosystem meeting is on every Tuesday at 10am UTC in the #drupal-scotch IRC channel.
  4. There are two usability meetings every week! One at 7pm UTC on Tuesday while the other is at 7am UTC on Wednesday. Pick the best for your timezone. The meetings are at https://drupal.slack.com/archives/ux, get an invite at http://drupalslack.herokuapp.com/
  5. There is a default content in core meeting every other week on Tuesdays at 9pm UTC, and at 3pm UTC on the opposite weeks. Pick the best for your timezone. The meetings are at https://drupal.slack.com/archives/example-content, get an invite at http://drupalslack.herokuapp.com/
  6. There are two theme component library meetings on Wednesday, one at 1pm UTC and one at 5pm UTC Pick the best for your timezone. The meetings are at https://drupaltwig.slack.com/archives/components, get an invite at https://drupaltwig-slack.herokuapp.com/
  7. There is a media meeting every Wednesday at 2pm UTC, join in the #drupal-media IRC channel.
  8. The multilingual meetings are still going on for years at 4pm UTC on Wednesdays, join at #drupal-i18n in IRC.
  9. The workflow initiative meets every Thursday at noon UTC in #drupal-contribute on IRC.
  10. Wanna help with migrate? The team has Google Hangouts at Wed 1pm UTC or Thu 1am UTC on an alternating weekly schedule. The #drupal-migrate IRC channel is also used as a backchannel.
  11. Last but not least the new user facing core theme initiative meets every other Thursday at 3pm UTC in https://drupaltwig.slack.com/archives/new-core-theme-design, get an invite at https://drupaltwig-slack.herokuapp.com/

Below is the calendar of all the meetings, subscribe to the Ical feed at https://calendar.google.com/calendar/ical/happypunch.com_eq0e09s0kvcs7v5...

Sooper Drupal Themes: Do you miss Drupalmodules.com too? Now there is Reddit /r/Drupal_Modules and /r/Drupal_Themes

Planet Drupal -

Years ago there was Drupalmodules.com. It had instant search, module reviews and an always up to date feed with the newest Drupal modules. It was wonderful. I was subscribed to their RSS feed with the latest modules because I felt like I was ahead of the curve for knowing all the latest contrib additions for Drupal, I learned about a lot of useful little (and big) modules that way.


Agiledrop.com Blog: AGILEDROP: Let's make Drupal 8 available offline using AppCache

Planet Drupal -

Mobile apps are known to handle offline world very good with their native apps capability, which can cache basically all the assets whereas web applications are falling behind, losing this battle. A lot of us cannot afford to create a dedicated mobile app. Therefore, we need to find some solution with what we already have. That solution is Application Cache or AppCache in short. Of course, as any other software, it is not perfect and it has its gotchas. Moreover, for some time now it has been marked as deprecated, but basically no other real alternative exists. Actually, there is an… READ MORE

Dries Buytaert: Personalization takes flight with the new Acquia Lift

Planet Drupal -

Last week, we launched a new version of Acquia Lift, our personalization tool. Acquia Lift learns about your visitors' interests, preferences and context and uses that information to personalize and contextualize their experience. After more than a year of hard work, Acquia Lift has many new and powerful capabilities. In this post, I want to highlight some of the biggest improvements.

Intuitive user experience

To begin, Acquia Lift's new user interface is based on the outside-in principle. In the case of Acquia Lift, this means that the user interface primarily takes the form of a sidebar that can slide out from the edge of the page when needed. From there, users can drag and drop content into the page and get an instant preview of how the content would look. From the sidebar, you can also switch between different user segments to preview the site for different users. Personalization rules can be configured as A/B tests, and all rules affecting a certain area of a page can easily be visualized and prioritized in context. The new user interface is a lot more intuitive.

Unifying content and customer data

Having a complete view of the customer is one of the core ideas of personalization. This means being able to capture visitor profiles and behavioral data, as well as implicit interests across all channels. Acquia Lift also makes it possible to segment and target audiences in real time based on their behaviors and actions. For example, Acquia Lift can learn that someone is more interested in "tennis" than "soccer" and will use that information to serve more tennis news.

It is equally important to have a complete view of the content and experiences that you can deliver to those customers. The latest version of Acquia Lift can aggregate content from any source. This means that the Acquia Lift tray shows you content from all your sites and not just the site you're on. You can drag content from an ecommerce platform into a Drupal site and vice versa. The rendering of the content can be done inside Drupal or directly from the content's source (in this case the ecommerce platform). A central view of all your organization's content enables marketers to streamline the distribution process and deliver the most relevant content to their customers, regardless of where that content was stored originally.

Content can also be displayed in any number of ways. Just as content in Drupal can have different "display modes" (i.e. short form, long form, hero banner, sidebar image, etc), content in Acquia Lift can also be selected for the right display format in addition to the right audience. In fact, when you connect a Drupal site to Acquia Lift, you can simply configure which "entities" should be indexed inside of Acquia Lift and which "display modes" should be available, allowing you to reuse all of your existing content and configurations. Without this capability, marketers are forced to duplicate the same piece of content in different platforms and in several different formats for each use. Building a consistent experience across all channels in a personalized way then becomes incredibly difficult to manage. The new capabilities of Acquia Lift remedy this pain point.

The best for Drupal, and beyond

We've always focused on making Acquia Lift the best personalization solution for Drupal, but we realize that customers have other technology in place. The latest version of Acquia Lift can be installed on any Drupal or non-Drupal website through a simple JavaScript tag (much like the way you might install Google Analytics). So whether it's a legacy system, a JavaScript application, a decoupled Drupal build with custom front end, or a non-Drupal commerce site, they can all be personalized and connected with Acquia Lift.

In addition, we've also taken an API-first approach. The new version of Acquia Lift comes with an open API, which can be used for tracking events, retrieving user segments in real time, and showing decisions and content inside of any application. Developers can now use this capability to extend beyond the Lift UI and integrate behavioral tracking and personalization with experiences beyond the web, such as mobile applications or email.

I believe personalization and contextualization are becoming critical building blocks in the future of the web. Earlier this year I wrote that personalization is one of the most important trends in how digital experiences are being built today and will be built in the future. Tools like Acquia Lift allow organizations to better understand their customer's context and preferences so they can continue to deliver the best digital experiences. With the latest release of Acquia Lift, we've taken everything we've learned in personalization over the past several years to build a tool that is both flexible and easy to use. I'm excited to see the new Acquia Lift in the hands of our customers and partners.

Palantir: The Secret Sauce, Ep. 34: Remote Teams

Planet Drupal -

The Secret Sauce, Ep. 34: Remote Teams The Secret Sauce brandt Mon, 10/17/2016 - 14:53 Scott DiPerna and Lauren Byrwa with Allison Manley Oct 18, 2016

We want to make your project a success.

Let's Chat.

Strategies for making remote collaboration successful on web development projects.

With the advancement of technology, there are infinite ways and opportunities to work remotely, no matter where you are. In this week’s episode of The Secret Sauce, we share some strategies for making remote work - well, work.

iTunes | RSS Feed | Download| Transcript

We want to make your project a success.

Let's Chat. Transcript

Allison Manley [AM]: Hello and welcome to The Secret Sauce, a short podcast by Palantir.net, that offers a little bit of advice to help your business run better.

I’m Allison Manley, Sales and Marketing Manager here, and today’s advice comes from Scott DiPerna and Lauren Byrwa. In this global economy, there are infinite ways and opportunities to work remotely, no matter where you are. Scott and Lauren are going to share some strategies on how to collaborate successfully across great distances and time zones.

Scott DiPerna [SD]: Hi, I’m Scott DiPerna.

Lauren Byrwa [LB]: Hi, I’m Lauren Byrwa.

SD: Recently we worked with a client in California who had hired a content strategy team in New York City. Lauren, with our development team, was in Chicago, and I, as the Project Manager, was in South Africa. We had lots of interesting new challenges in this project, and like we do in most projects, we learned a lot about working well with our clients, our collaborators, and with each other.

LB: So, Scott, what was it like trying to work from South Africa, being seven to nine hours ahead of everyone else?

SD: Well, it wasn’t that different from working remotely in Richmond, Virginia. I do shift my working hours to the evening to overlap with the team in the States. But just as I did in Virginia, we do all of our meetings on a video chat regardless of where we are. It’s part of our process especially with our clients being all over the country, so that part wasn’t really different. But we did do a few things differently in this project — not so much because we were all in different places, but because we had multiple vendors and teams collaborating together. Do you want to talk about some of the adjustments that we made in terms of meetings?

LB: Yeah, so we met with the content strategy team weekly. We met with our product owner three times a week. We met with our full team, our full team of stakeholders, weekly. And in addition to that we still had all our usual agile ceremonies like scrum, demos, retrospectives, that we always do on projects. These meetings especially were productive because we had all of the strategic functionality up front, and we could ask specific implementation-level questions early on, and we could vet them both with the product owner specifically, with the strategists specifically, and with the entire group. But I think there are a few other ways that the thorough strategy helped. Do you want to talk about those?

SD: Sure. I think there were two parts specifically that were really helpful. Doing a lot of the strategic planning up front meant that the client was a lot more conversant in the details of the product that we were planning to build for them. We just had a lot more conversations with them up-front and could talk in detail. The other piece was having much of the functionality visually documented in wireframes that the strategy team kept current with changes in the functionality meant that the client always had a “picture” in their minds of what it was that we were talking about. When everyone is working remotely from one another, these kinds of visuals help conversations over video chat be infinitely more productive, which I think is something we see in all of our projects. So all of this planning had a really helpful impact on your ability to estimate the work up front, too. Do you want to talk a bit about that?

LB: Because we had the complete and canonical wireframes from the strategists we were able to fairly precisely estimate all of the functionality that they had scoped out in those wireframes. This meant that even before we started development, we were able to work with our product owner to go over in detail the scope of work we anticipated to be able to complete within their budget. We had many conversations with him about what features would be most important for their users, and were able to prioritize accordingly. It meant that we could talk about the specifics of our implementation in really granular detail internally, both with the strategists, both with the product owner. We collaboratively evaluated if there were options to streamline our implementation, and we were able to address specific questions that usually would not come up until user acceptance testing. All of these conversations resulted in updates to both the canonical wireframes that the strategists were maintaining, as well as the implementation documentation that we were maintaining on our end. And it meant that the picture that the strategists had, that they kept, that the clients had in their head, stayed the same. And it was all reflected in what they could expect to be spending on the implementation for development.

SD: Right. And since we were documenting those functional changes in the wireframes, we could capture that quickly and review it with the client in the middle of a sprint. And speaking of that sort of adjustment in the middle of a sprint, you started doing mini-demos of work in progress, demoing that to the product owner. Can you talk a little bit about why you shifted in that direction?

LB: Yeah, so because we already had all of these meetings set up, and because we already had those canonical wireframes that showed all of the functionality in the picture, we wanted to make sure that they could see the picture of their website, the implementation, as quickly as possible too. So when we had specific implementation questions about things that were spec-ed out in the wireframes, we would demo it for the client. And they could vet it, both for the client and the strategists, and come back to that . . . is this the best choice for the user. It meant that all of those questions of, is this the best route to go down, does this work the way that I anticipated it to, were answered not even before user acceptance testing — they were answered even before the demo. So we could pivot our strategy accordingly, and we did on a lot of issues.

SD: So given all of these constraints that we faced on the project, where we had a client in one part of the States, a content strategy team in another part of the States, even our own internal strategy team split up across continents, and a pretty sizeable project with some interesting technical projects to solve — what were some of the biggest take-aways that you had from that project?

LB: I think the number one thing that I took away from that project was that we can solve every problem together, and that we can come to a better conclusion when we come to it together. The collaborative effort with the strategy team to focus conversations through the lens of the primary audience really helped us anchor our strategy and our implementation in that primary user, and not in some of the other things that often derail projects. We had complete and thorough documentation both on the strategy level and on the implementation, and both of those were transparent to everyone accessing the project. And I think that really helped us to streamline the entire project.

SD: I think for me one of the other things is that we were able to form really good relationships both with the client and with the third-party team we were collaborating with. And that made all of our conversations run more smoothly. We were able to have fun even in the difficult phases of the project, and even going through tough negotiations around scope or functionality or budgets or stuff like that — having those good relationships and having that good level of communication with them just made the whole process go more smoothly.

AM: That’s the end of this week’s Secret Sauce. For more great tips, please check out our website at Palantir.net. You can also follow us on twitter at @palantir. Have a great day!

Pantheon Blog: Using Composer with a Relocated Document Root on Pantheon

Planet Drupal -

Composer is the de-facto dependency manager for PHP; it is therefore no surprise that it is becoming more common for Drupal modules to use Composer to include the external libraries it needs to function. This trend has rather strong implications for site builders, as once a site uses at least one module that uses Composer, then it becomes necessary to also use Composer to manage your site.  

Drupal Association News: Public Board Meeting Update

Planet Drupal -

On September 28, 2016, The Drupal Association board hosted a public board meeting during DrupalCon Dublin. It was wonderful to connect with the community in person to share updates and answer questions.

Over the last few months, we provided an update on The Association’s current focus followed by department-specific updates. This board meeting shared highlights of specific areas including:

  • DrupalCon New Orleans
  • Drupal.org front page improvements
  • Membership campaigns

This public board packet provides links to those presentations along with updates on other programs. It also includes a dashboard of all our current work. You can also watch the video recording here.

We love hearing from the community. Contact us anytime to share your feedback or ask questions via email or @drupalassoc.

The next public board meeting will be on 21 November, 2016 at 7:00 am PT / 15:00 GMT. You can register for the meeting here.


Palantir: Palantir.net's Guide to Digital Governance: Intended Use

Planet Drupal -

Palantir.net's Guide to Digital Governance: Intended Use Palantir.net's Guide to Digital Governance brandt Mon, 10/17/2016 - 12:06 Scott DiPerna Oct 17, 2016

This is the fourth installment of Palantir.net’s Guide to Digital Governance, a comprehensive guide intended to help get you started when developing a governance plan for your institution’s digital communications.

In this post we will cover...
  • Why it's important to define intended use of properties
  • A couple of different ways intended use might be defined
  • Some questions to consider for explaining your intended use policy

We want to make your project a success.

Let's Chat.

Once we have established ownership for all of the content within our web properties, it may be helpful to define the intended use of those properties next.

This may seem obvious and unnecessary to state, but in my experience it has been important to define the intended use of the web property that is currently being described. This ensures that everyone is on the same page and understands a common set of goals for the property.

Public-facing websites are commonly intended for the use of communicating information to audiences outside of an organization, which is why they are public and usually distinguished from private, inward-facing sites, such as an intranet, which is intended for the purpose of communicating information to internal audiences within an organization. Not everyone understands this, so it is important to establish the reasoning behind the existence of the property so as not to confuse it with the purpose of another property.

Occasionally, the intended use of a property will be defined in part by the negative, or by that which it is NOT intended to be used. For example, it may be useful to state that no part of a public site should be used for personal content, especially if alternative resources exist explicitly for that purpose.

Here is an example of how intended use is sometimes defined by the negative:

"Academic Department websites are intended for the use of communicating information about the department, its faculty, degree requirements, course offerings, policies, etc. Academic Department websites are not intended for hosting websites of individual faculty, websites based on grant funding, research projects, or specific course-related materials, or for private (i.e. password-protected) websites or applications."

The negative in this example addresses some misperceptions about the intended use of a site about a department by listing some common misuses of the site previously.

Here are some questions to consider for explaining your own intended use policy:

  • What is the primary purpose of the property or Website?
  • What are the secondary and tertiary purposes, if they exist? 
  • Are there any activities or content which occasionally find their way onto this property which should live elsewhere, and thus explicitly be listed as not intended for this property?
  • What are the “grey areas” or things which are unclear where they belong?
  • Is there a process for dealing with grey areas?
  • Who would help determine that process if it doesn’t exist? Intended use can be a controversial subject for many organizations, so think carefully and cautiously throughout this exercise.

Intended use can be a controversial subject for many organizations, so think carefully and cautiously throughout this exercise. I recommended gathering input from a broad range of representative stakeholders to discuss some of the stickier points before defining and presenting a plan that may draw criticism when reviewed by the larger organization.

As with most things, intended use should be based in reason and make sense to most people. That being said, there may be occasions in which some level of compromise is required in order to accommodate content that doesn’t have a home otherwise. This is typically okay in small amounts and for brief time-periods, until alternative solutions can be found.


This post is part of a larger series of posts, which make up a Guide to Digital Governance Planning. The sections follow a specific order intended to help you start at a high-level of thinking and then focus on greater and greater levels of detail. The sections of the guide are as follows:

  1. Starting at the 10,000ft View – Define the digital ecosystem your governance planning will encompass.
  2. Properties and Platforms – Define all the sites, applications and tools that live in your digital ecosystem.
  3. Ownership – Consider who ultimately owns and is responsible for each site, application and tool.
  4. Intended Use – Establish the fundamental purpose for the use of each site, application and tool.
  5. Roles and Permissions – Define who should be able to do what in each system.
  6. Content – Understand how ownership and permissions should apply to content.
  7. Organization – Establish how the content in your digital properties should be organized and structured.
  8. URLs – Define how URL patterns should be structured in your websites.
  9. Design – Determine who owns and is responsible for the many aspects design plays in digital communications and properties.
  10. Personal Websites – Consider the relationship your organization should have with personal websites of members of your organization.
  11. Private Websites, Intranets and Portals – Determine the policies that should govern site which are not available to the public.
  12. Web-Based Applications – Consider use and ownership of web-based tools and applications.
  13. E-Commerce – Determine the role of e-commerce in your website.
  14. Broadcast Email – Establish guidelines for the use of broadcast email to constituents and customers.
  15. Social Media – Set standards for the establishment and use of social media tools within the organization.
  16. Digital Communications Governance – Keep the guidelines you create updated and relevant.

Stay connected with the latest news on web strategy, design, and development.

Sign up for our newsletter.

Drupal Association News: Association members cultivate community with grants

Planet Drupal -

It isn't easy to build a strong community. Many event organizers work to bring people together for Drupal. Community Cultivation Grants are one tool to make the work a little easier. With a grant, you can strengthen the local community. You can help drive the adoption of Drupal.

Drupal Association members fund these grants. A few grant recipients have told us their stories. I'd like to share more about what has happened since the grants were awarded.

Andrey from DrupalCamp Moscow The DrupalCamp Moscow 2014 organizers have connected with the organizers of other camps — DrupalCamp Siberia (in Novosibirsk in 2015) and DrupalCamp Krasnodar (in September 2016). They've shared experiences to inspire the communities in these other Russian cities.

Andrey tells us, "In Moscow, we don't have any large companies which offer Drupal services. Our community organizes all the local events. After DrupalCamp Moscow 2014, we've held more events than ever before. 6 meetups, 22 small meetings, a D8 Release Party and one Drupal burgers event have happened. We've had Drupal specialists from other cities of Russia and the world come to visit. New participants are always welcome here and we are seeing more and more of them." Ricardo from Drupal Mexico City

Ricardo tells us, "We held another Drupal camp in Mexico City in 2015 with 250 attendees. In 2016, our dear fellows from Axai did the same in Guadalajara.

This year, we went off the island, just like Drupal 8 has, and we organized an even broader PHP event. It was amazing. The response was fantastic, we broke all our attendance records. We've grown the PHP Mexico community & PHP Way meetups and now have 1,000 members. Our attendees could become new Drupalists. But we expect to see new Drupalists come from the Symfony world.

We decided to have only one Drupal event in Mexico per year. In 2016, it was held in Guadalajara. If nobody else wants to organize an event at 2017, we'll probably do it again. If we organize the next Drupal event, it will probably happen together with a PHP event once again. Ultimately, community growth should be in concordance with demand growth. This hasn't happen here in CDMX, we are hopeful that it will."

Martha from Drupal Guadalajara

From Martha: "We attended DrupalCamp Costa Rica in September and continue being connected to the Drupal Latino Community. After Guadalajara camp, there is more local Drupal awareness. Our company has received training and quote requests since the camp."

Community Cultivation Grants do more than build connections in our community and grow our contributors. They also to help drive the adoption of Drupal.

Ivo from Drupal Roadshow Bulgaria

Ivo says, "Since the roadshow, there we've met our goal of running a Drupal Academy. We now run the biggest Drupal Course at Software University in Bulgaria. We have more than 1200 registered students. Our activities were featured in the Bulgarian National Television.
We are also proud of another result of the roadshow. One of the larger Drupal shops in Bulgaria opened their second office in a small town. We introduced Drupal there."

Tom from DrupalCamp Vietnam (2016)

Tom tells us, "I'm an entrepreneur and angel investor. Helping people become prepared for the digital enterprise is fulfilling to me. I want to spend more time coaching young developers with IT career decisions. To help get them learn how to use Drupal as a versatile data/content modeling tool. Which can act as a key platform to integrate with many other FOSS too. Including MERN stack, Hadoop, Spark, Docker, Openstack, etc.

Technology is always changing. What sticks is the experience you gain by contributing to an open-source community such as Drupal."

We're excited to see grant recipients building relationships in our community. You can connect with community and make more grants possible by joining the Drupal Association today.

Personal blog tags: Membershipcommunity cultivation grants

Xeno Media: Xeno Media's Jim Birch presents at Bay Area Drupal Camp 2016

Planet Drupal -

Our Digital Strategist, Jim Birch, will be presenting on Holistic SEO and Drupal at BADCamp X, the 10th annual Bay Area Drupal Camp being held between October 20th - 23rd at the University of California in Berkeley.  This will be the second year in a row in which Jim will be participating in the event.

BADCamp is the largest regional conference dedicated to Drupal and open-source software with over 1600 attendees descending on the UC Berkeley campus for four days of presentations, trainings, summits, and sprints.

In 2015, Jim presented Optimizing Drupal 7 HTML Markup to a crowded room of Frontend developers and Site builders.

Watching @thejimbirch give a great talk on Optimizing Drupal Markup @BADCamp! pic.twitter.com/Yo8dwUljAw

— Wes Ruvalcaba (@wesruv) October 24, 2015

This year, Jim's focus is the modern state of Search Engine Optimization: How we at Xeno Media define best practices for technical SEO using Drupal and ideas on how to guide and empower clients to create the best content to achieve their goals.

This presentation will review:

  • What Holistic SEO is, and some examples.
  • The most common search engine ranking factors, and how to keep up to date.
  • An overview of Content strategy and how it can guide development.
  • An overview of technical SEO best practices in Drupal.

The presentation is:

In addition, Jim will be giving a lightning talk on Friday at the Frontend summit. Summits are more conversational in nature, and this event will focus on the best practices, and technologies used in Drupal development with presentations and panel discussions. 

Jim will be showcasing our soon-to-be-released Drupal contrib module Bootstrap Paragraphs.  The module is a suite of Paragraph bundles made with the Bootstrap framework's markup.

Palantir: Addressing Accessibility for the Web

Planet Drupal -

Addressing Accessibility for the Web brandt Mon, 10/17/2016 - 09:20 Michellanne Li Oct 17, 2016

Making sure your website is accessible requires more than just fulfilling a checklist of best practices.

In this post we will cover...
  • How you should be thinking about accessibility

  • How to bake accessibility into your process

  • Some tips and tricks for creating accessible websites

We want to make your project a success.

Let's Chat.

The Americans with Disabilities Act was a landmark civil rights legislation that tore down barriers preventing individuals with disabilities from fully participating in society. This bill covered important aspects of life in the 1990s, such as public transportation and employment. A decade and a half later these things are still important, but technologies have emerged that raise new questions about how they can be made accessible for all users.

This year, I had the privilege of attending the 2016 Accessibility Summit, where presenters from organizations such as the W3 Consortium, Adobe, and WebAIM talked about ways in which we can make the web more accessible to users with disabilities such as low vision, blindness, deafness, and limited dexterity.

One of my biggest takeaways was that I had been thinking about accessibility all wrong. Initially, I saw accessibility guidelines as a checklist. Although lists are published by thought leaders such as Google (https://material.google.com/usability/accessibility.html#), it’s entirely possible for a website to adhere to accessibility criteria without effectively meeting the needs of disabled users.

While checklists are useful, they lack a human element. It helps to view accessibility as a holistic approach to design, development, and content that, at its core, relies on empathy and understanding of a wide range of user experiences.

Accessibility issues are ultimately user experience issues.

How do you bake accessibility into your process? Below are some ideas of how accessibility may become an inherent part of creating a website:

Create personas for disabled users to address accessibility. Some examples might be:

  • A person with low vision or blindness
  • A person who has recently suffered a stroke
  • A person who is positioned in the glare of the sun

The World Wide Web Consortium has created a diverse set of personas representing disabled users, which are available on their website (https://www.w3.org/WAI/intro/people-use-web/stories). There are also solutions provided for common problems these users might face on the web.

Create tickets based on disabled user personas. These tickets should have specific quantifiable success criteria, such as: “a person with vision impairment can fill out this form.” This is a great platform to demonstrate to clients how accessibility is being achieved.

From the onset, design with accessibility in mind. Designers should familiarize themselves with accessibility guidelines and incorporate them into their work starting with the earliest concepts.

For instance, whenever I’m working with text, I run potential colors for both the text and the background through a contrast checker (such as this one: http://webaim.org/resources/contrastchecker/). Contrast checkers confirm whether the combined text color and background color will be readable. Such measures preempt the need to rethink the design later in the process, thus saving time and avoiding the pitfalls of presenting a client with ideas that cannot be realized.

When designing the UI, aim for fewer steps to task completion. By decreasing the number of keystrokes, steps, and time required to complete tasks, we can make websites more accessible for everyone.

A task that is mildly annoying to complete for an abled user can be prohibitively time-consuming and frustrating for a disabled user. All users can benefit from the simplification of tasks, but disabled users will be especially impacted.

During development, take advantage of the wide range of auditing tools available to check whether your site adheres to accessibility guidelines. Some popular tools include:

Navigate and complete tasks on your website with the tools available to disabled users. This doesn’t replace user testing, but it can provide some useful insights. Here are some ideas:

  • Try using a screen reader, such as Chrome Vox. This helps you confirm whether your interactive elements are labeled clearly.
  • Change your iPhone’s accessibility settings and practice using your website with voiceover. Go into “Settings > General > Accessibility.”
  • Try using your keyboard only.

You can implement these techniques when demoing websites to clients to help them understand how different users access websites.

Recruit individuals with disabilities to participate in usability testing. This is the best way to confirm whether a website truly is accessible. Remember that accessibility guidelines are just the starting point. A site that checks off all the boxes may still have roadblocks for disabled users.

Disability rights lawyer, Lainey Feingold, provides on her website a list of nonprofits that offer usability testing by disabled individuals (http://www.lflegal.com/resources/#test).

Additionally, here are some tips and tricks for creating accessible websites. 
  • Use flyingfocus.js (https://github.com/NV/flying-focus) to add a sense of movement to the :focus state of interactive elements. This enhances the user experience of tabbing through a web page. Check out some examples here: https://github.com/NV/flying-focus/wiki/In-the-Wild
  • Sighted users who tab through a website also benefit from the addition of skip links. (However, non-sighted keyboard users do not use skip links because screen readers have ways of getting around repetitive content.) What’s a skip link? It is a link at the top of the page that the user can select to “jump” to the main content. This saves time that would otherwise be spent tabbing through the site header on every page. A skip link can be styled so that it is hidden until a user tabs over it. Adding a css transition so the hidden link is visible for a fraction of a second longer will ensure that the user doesn’t miss it.
  • Aria roles are useful, but employ them sparingly. Overuse of aria roles can actually diminish the accessibility of a website.
  • It’s dangerous to make assumptions about how users are interacting with and viewing your website. For instance, desktop users who zoom in on websites will wind up activating the mobile view. And some mobile users navigate with a keyboard.
  • Rather than “Read More” links, be specific: “Read more about ---.” This is important for users with screen readers who are unable to see the association between the “read more” link and the content it references. You can visually hide “---” so that only screen readers will detect it.
  • Blocks of text should be no more than 80 characters or glyphs wide (40 if CJK). 45-75 characters is considered ideal.
  • Avoid using screen reader detection. Visually impaired individuals do not want to feel like they are being treated differently or tracked.
  • Avoid using tabindex with positive values. Instead, structure your markup for logical and intuitive navigation.
  • Use tabindex(-1) to set focus on things that aren’t natively focusable.

Stay connected with the latest news on web strategy, design, and development.

Sign up for our newsletter.

Amazee Labs: Project Managers matter, and other self-actualizing thoughts

Planet Drupal -

Project Managers matter, and other self-actualizing thoughts

I had a wild aha moment last week while I was away at my first PM conference. I work in web and I'm a project manager. I thought I “got it”. Except, I guess I didn’t.

It wasn’t until I was surrounded in a ballroom of my peers, hearing Brett Harned's Army of Awesome rallying cry, seeing the words blown up on a screen that I realized, Oh my god. I'm not a glorified secretary.

I may not be the one coding, designing, or deploying a product, but what I do matters. It makes a difference. I'm part of my team in a tangible way. And a there are others like me

Stephanie El-Hajj Mon, 10/17/2016 - 15:59

Similar to DrupalCon, the Digital PM Summit is a conference that travels around the US from city to city each year. This year it landed in San Antonio, a hop-skip and two-hour drive from my home in Austin, Texas.  

As a seasoned event manager, I tend to have a pretty agnostic relationship towards attending conferences. Speakers present their topics. Attendees politely paid attention, or didn’t. The draw of a glowing macbook is hard competition against topics which don't directly apply to me and the work I do.

But this time was different. For once, I not only understood the scheduled topics, I wanted to attend them. For once, I had trouble choosing. I was even excited to talk to strangers, not something that comes easy to me, because we already have something in common.

My world was rocked.

Over the course of three days, speakers and attendees shared tools, processes, tips, and horror stories of life in the PM trenches. It was quite cathartic and therapeutic to be surrounded by people who understand and empathize, because they live it, too.

Talking to other digital project managers this weekend was invaluable, and something I didn’t realize I was missing out on. Turns out, I wasn't the only one. While a handful of the attendees were newbies, like me, many others remember their first Digital PM Summit fondly. All these same warm-fuzzies I was feeling was part of the reason they come back.

Here’s a few of my biggest takeaways, many of which were reiterated by different people, in various situations, throughout the course of the event:

1. The struggles and challenges I face as a PM are normal. I'm not on actually fire, and nobody has died.

2. Early and honest communication helps solve and prevent problems.

3. Problems aren’t always external. Internal scope creep is real. 

4. Nobody's figured out how to virtually replicate an in-person whiteboard brainstorming session.

5. Project Managers should carve out time for themselves and often don’t. 

6. The importance of empathy, building relationships, and treating people like humans. 

Side note: If you haven't seen Derek's DrupalCon Dublin session on perfectionism or read Brené Brown's work on vulnerability and you work with people, do yourself a favor, and get caught up. 

As you can probably gather, DPM was quite a touchy-feely event, something that's not the most comfortable thing in the world for me. I think that twinge of discomfort helped me appreciate the honesty and open dialogue even more. For me, this event was professionally and personally beneficial and I've come home better prepared to work with my team, to engage with my clients, and to better appreciate and respect the work that I do. That we all do. 

If you're a PM, and you haven't heard this at all or lately, you are awesome. Your work matters. You're here because you're needed.

Amazee Labs: Drupal Composer recipes

Planet Drupal -

Drupal Composer recipes

In this post we are going to share some Composer recipes we collected while working with Drupal projects created from the Drupal Composer template. Also, we will take a look on how to convert an existing Drupal project to a Composer project.

Alex Tkachev Mon, 10/17/2016 - 12:49

If you still don't use Composer for managing Drupal projects, you should start doing this right now! The Drupal Composer template will help you to set things up. It's really easy to setup a new project.

If you’re still not convinced, check out the benefits of the Drupal Composer workflow:

  • No need to store contrib code (and the core!) in your version control system.
  • A single package management tool for everything: Drupal core, contrib modules, JS libraries, your own shared modules, etc.
  • Patching of core and modules is easier than ever.
  • It's way simpler than git submodules.

(All recipes consider Drupal 8, but they should work for Drupal 7 as well)

Installing contrib modules
  • composer require drupal/<MODULE_NAME>:~8.0 to get the latest stable version (or latest dev, if there is no “stable release")
  • composer require drupal/<MODULE_NAME>:dev-<BRANCH_NAME> to get the latest dev version
  • composer require drupal/<MODULE_NAME>:dev-<BRANCH_NAME>#<COMMIT_HASH> to get the exact version
Updating Drupal core/modules
  • composer update to update everything
  • composer update --dry-run to check for updates
  • composer update drupal/<MODULE_NAME> to update a single module
Patching packages

The cweagans/composer-patches plugin (which comes with the Drupal Composer template) will take patches from the "extra" section of the composer.json file:

"extra": { "patches": { "<PACKAGE/NAME>": { "<PATCH DESCRIPTION>": "<PATH/TO/PATCH/OR/URL>", ... }, ... } }


"extra": { "patches": { "drupal/core": { "Fix language detection": "patches/2189267-24.patch" } } }

After a new patch is added run:

  • composer install to apply patch
  • composer update nothing to make the composer-patches plugin write necessary changes to the composer.lock file
Installing custom/forked modules from Github For the case when a module repository contains its own composer.json

Register the repository in the "repositories" section of the composer.json file:

"repositories": [ { "type": "vcs", "url": "https://github.com/<REPOSITORY/NAME>" }, ... ],

Use composer require drupal/<MODULE_NAME>:dev-<BRANCH_NAME>#<COMMIT_HASH> to install the module.

For the case when the composer.json file is missing from the module repository

You'll need to use a bit more verbose variant:

"repositories": [ { "type": "package", "package": { "name": "drupal/<MODULE_NAME>", "version": "dev-custom", "type": "drupal-module", "source": { "type": "git", "url": "[email protected]:<REPOSITORY/NAME>.git", "reference": "<BRANCH-NAME>" } } }, ... ],

Use composer require drupal/<MODULE_NAME>:dev-custom#<COMMIT_HASH> to install the module.

For the case when the destination path should be different than modules/contrib

In addition to the above recipes, use the composer/installers plugin:

"extra": { "installer-paths": { "web/modules/custom/<MODULE_NAME>": ["drupal/<MODULE_NAME>"], ... } } Adding a JS library

Most popular libraries can be added easily with composer as they exist on Packagist. The tricky part is that most Drupal modules require that libraries are saved under the "libraries" directory while Composer installs them to "vendor". The composer/installers plugin can override package paths, but only for packages that depend on it. So, you'll need to override the composer.json file of the library stating that it has the composer/installers dependency.

Let's take a look at an example:

"repositories": [ { "type": "package", "package": { "name": "enyo/dropzone", "version": "4.3", "type": "drupal-library", "source": { "url": "https://github.com/enyo/dropzone.git", "type": "git", "reference": "master" }, "dist": { "url": "https://github.com/enyo/dropzone/archive/v4.3.0.zip", "type": "zip" }, "require": { "composer/installers": "~1.0" } } }, ... ], ... "extra": { "installer-paths": { "web/libraries/{$name}" : ["type:drupal-library"], ... } }

After the above is added to the composer.json, run composer require enyo/dropzone:4.3 to download the library. Also, here we have used the exact version and added the "dist" section to make it possible for Composer to download a zip archive instead of cloning the Git repository.

Switch a dependency package to a forked version

Add the forked repository to the composer.json:

"repositories": [ { "type": "vcs", "url": "https://github.com/<REPOSITORY/NAME>" }, ... ],

Run composer require <PACKAGE/NAME>:dev-<BRANCH_NAME>#<COMMIT_HASH>

Update an existing Drupal 8 project to use Composer
  • Make a backup ;)
  • Delete everything that will be managed by Composer: Drupal's "core" folder, contrib modules, etc.
  • Delete all Drupal "root" files, such as index.php, update.php, README.txt... All of them.
  • Create "web" directory in the project root and move all remaining Drupal folders (sites, modules, themes, libraries, profiles, etc.) into it.
  • Copy the Drupal Composer template files to the project root.
  • Prepare a list of Drupal core and contrib module versions (and everything else that will be managed by Composer) that are used currently on the project. Then run composer require specifying every dependency with the exact version. You'll need to convert Drupal versions into Composer versions, here are some examples:
    • drupal/core:8.1.8 is obvious
    • drupal/admin_toolbar:8.1.15 refers to admin_toolbar 8.x-1.15
    • drupal/ctools:8.3.0-alpha26 refers to ctools 8.x-3.0-alpha26
    • drupal/config_installer:dev-8.x-1.x#a16cc9acf84dd12b9714def53be0ce280a5b0c1a refers to config_installer dev snapshot made from the a16cc9a commit of the 8.x-1.x branch
  • Manually update versions of Drupal core and contrib modules to "~8.0" in the "require" section of the composer.json file. That will make updates possible.
  • Run composer drupal-scaffold which will create the Drupal "root" files.
  • Make your webserver use "web" directory as the web root.

Deeson: AI is a punk teenager and is angry at its parents

Planet Drupal -

This blog post covers 50% of what I’m going to be talking about at this year’s Museums Computer Group conference at the Wellcome Trust in London, held on the 19th of October. The follow-up post will go live on the 20th - you can sign up here to be notified.

There are three important things you need to understand about artificial intelligence:

  1. It exists now
  2. It’s more capable than you know.
  3. It will replace you (unless you redefine who you are).

I’ll examine each one - it’ll be interesting to see what you think.

It exists now

Artificial intelligence, as a concept, has been around for a long time. From Hephaestus building the “fighting machines of the gods” to Mary Shelley’s Frankenstein, humans have thought about and created stories around our desire to replace the mighty gods with ourselves for several thousand years.

We see it today with modern franchises like “The Terminator” and “The Matrix”, and less recently with “2001: A Space Odyssey” and “Do Androids Dream of Electric Sheep/Blade Runner”. AI is so popular and accessible as a concept in mainstream media that if you ask people what they think it is, they think they’ll be able to answer.

But here’s the rub - it’ll sound something like “Killer Robots in the Future!”. Rarely do you hear anyone mention the effect of AI on the stock market or the Amazon website. I find this lack of awareness about AI frustrating and frightening because AI exists now, it has existed for decades, and it impacts almost every aspect of our daily lives.

The birth of AI as a research area happened in 1956 at Dartmouth College in New Hampshire as a small but well-funded programme that hoped to create a truly intelligent “thinking machine” within a generation. They failed of course, as creating intelligence isn’t particularly easy. But they laid the foundations. With others following, the acceleration of our understanding and the number of practical uses for AI has increased. And like most technologies, the rate of improvement in AI can be plotted as an S curve.

Technologies tend to have a slow adoption rate early on as a result of the limited capabilities they offer. As the offer increases, so does the adoption rate. Unlike exponential growth, the S curve understands and plots the reduction of the technology’s popularity as we find its maximum potential, or as market forces push funding into new technologies which will ultimately replace it.

A better way to picture the impact of a specific technology on our lives is as a game of chess. At the start of the game, the choices you make are small and of little significance. You can recover from a mistake. But by the time you reach the middle of the board every decision you make will have large significance, and each creates a win or lose situation. Games of chess also follow the S curve.

By the time a technology reaches the lower midpoint of the curve it starts to have a major visible impact, with the velocity of that impact suddenly starting to increase. Artificial intelligence is now at that point. AI is not just here, it’s a punk teenager and pissed off at it’s parents.

It’s more capable than you know.

You interact with AI and one of its children, Machine Learning, every time you use any web-connected device. You do it every time you search, shop online, fill out a form, send a Tweet, or upvote a comment. It even happens when you buy petrol, turn on the tap, drive your car to work, or buy any newspaper. Every aspect of your life is measured, stored, and used at some point by an algorithm.

Everything you do while living your life is kept as data so that machines can later parse it and use it to identify patterns. The effect is huge.

Roughly 70% of the world’s financial trading is controlled directly by 80 computers that use machine learning to improve their own performance. They can recognise an opportunity and carry out a purchase or sale within 3 milliseconds. The speed at which they operate means that humans are not only incapable of being part of the process, but have been designed out of the system completely to reduce error.

AI is rapidly getting to the point where it is better at diagnosing medical conditions than teams of doctors. Every patient report, every update to a patient’s condition, and every case history is available as digital data to be parsed, analysed and scored in real time to diagnose conditions that require a breadth of knowledge no single person has. In one case from Japan, AI was used to solve (in 10 minutes) a cancer diagnosis that oncologists had failed to detect (the human doctors had spent months trying).

Statistically, computers are better drivers than people are. In the 1.4 million miles Google’s fleet of self driving cars have covered on public roads, “not one of the 17 small accidents they’ve been involved in was the fault of the AI”. There’s the Google car driving into a bus that happened recently, but deep analysis of the incident showed that the bus actually drove into the car. A study by Virginia Tech showed that Google’s autonomous systems are 2.5 times less likely to have a car crash than a human. Given some of the behaviour I’ve experienced on the roads, I think this is a pessimistic number. AI is also being used to fly planes, with pilots of the Boeing 777 on average spending “just seven minutes manually piloting their planes in a typical flight” (anonymous Boeing 777 pilot). The United States and British governments have had fully autonomous drones flying for well over a decade.

Computers are now writing articles, poems, and even screenplays. Netflix’s now famously complicated taxonomy may have been put in place by people, but it’s machines that use it to work out what the next hit TV show will be. Associated Press uses AI to deliver over 3000 reports per year, while Forbes’ earning reports are all machine generated. These aren’t lists of numbers - this is long-form copy. Many sports reports are now written using AI, and they are published instantly as soon as the game ends. Before the team has left the field, the articles are being read. A study by Christer Clerwall showed that when asked to tell the difference between machine or human-written stories, people couldn’t. I mean, can you tell which parts of this blog were written by a machine?

Computers are better at designing their own components than people are. In the 1990’s Dr Adrian Thompson of Sussex University wanted a test on what would happen if evolutionary theory was put to use by machines in building an electrical circuit. The circuit was simple - all it had to do was recognise a 1KHz tone and drop the output voltage to 0, or for a 10KHz tone an output of 5 volts. An algorithm iterated over 4000 times before finding the best possible circuit. The circuit was tested, and it worked perfectly. The surprising thing though was that nobody could explain how the circuit worked, or manage to produce a better one. This experiment has been repeated many times, with more and more complexity introduced, and each time the machines make parts for themselves better than people can.

Computers are creating art, helping to cure the sick, improving themselves, and taking care of complex or monotonous tasks. We let them drive us, shop for us, fly us, and treat us. We let them form opinions for us, and let them entertain us. Where do people fit in?

It will replace you (unless you redefine who you are)

A study in 2013 showed that 47% of jobs in the United States were at risk of being replaced by automated systems. And a lot has happened in 3 years.

While your interactions with AI can make your life easier and more pleasant, they are designed to achieve something more. Every time you do something that can be logged and compared, you are training the AI in human behaviour. We can’t stop living our lives, so how can we stop the machines taking over?

If you are coming to the Museum's Computer Group Conference on October the 19th, I’ll tell you!

qed42.com: New Module - Referral Discount for Drupal Commerce

Planet Drupal -

New Module - Referral Discount for Drupal Commerce Body

One of the popular Growth hacking technique for e-commerce and SaaS businesses is Referrals, which is to leverage your user's network to get new users by offering incentives / discounts. On a recent e-commerce project we had the requirement to create a complete referral system but couldn't find a module that came close to fulfilling the requirements, hence we developed and contributed Commerce Referral Discount. This module allows us to provide a discount credit to an existing user for referring new users. Discounts can be configured for both the referring user and the new user who joins as part of the referral. Lets see a typical flow:

  • User A invites user B to signup on website using a unique invite URL (http://yoursite.com/invite/username).

  • User B visits the site using this URL, and is taken to the registration form to create a new account.

  • User B gets some discount amount (say $5) which he could use on his first purchase.


  • After user B makes his first purchase, user A gets a discount amount (say $10), which could be used in the next purchase.

  • Both discount amounts are configurable from the admin backend.

Module Configuration:

  • To configure the discount amounts browse to /admin/config/referral-discount


  • Configure referral discount on product purchase at Administration » Store settings » Promotions » Discounts:

    • Go to admin/commerce/discounts page.

    • Click on "Add discount" button.

    • Choose discount type : Order discount

    • Choose offer type : Referral Discount

    • Now click on Save discount.


  • Configure Invite/Referral Link block

    • Visibility settings: Show block for authenticated user.

Commerce Referral Discount module provide "Invite/Referral Link" block, which contains unique refer/invite link for authenticated users to share across their friends. 

The module also integrates with views:

  1. It provides a view type 'Commerce Referral Discount' which can be used to list down all the discounts and other data which it stores in the 'commerce_referral_discount' table in database.
  2. It also provides relationship to the user entity, so you can also include the data of Referrer user and Invited user.


    Nikhil Banait Mon, 10/17/2016 - 13:55


    Subscribe to Cruiskeen Consulting LLC aggregator