Development News

groups.drupal.org frontpage posts: Have your say in where Drupal 8 is going by participating in key initiatives

Main Drupal Feed - Tue, 04/24/2018 - 14:26

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 and showcasing 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. There is a weekly meeting on all API first work (REST, Waterwheel, JSON API, GraphQL) every Monday 2pm UTC on Google Hangouts. A link to the current hangout is posted 5 minutes before the meeting in the #drupal-wscci IRC channel.
  2. The Out of the box/demo team also meets every Monday at 3pm UTC on Google Hangouts.
  3. The Javascript office hours are held weekly in https://drupal.slack.com/archives/javascript every Monday at 4:30pm UTC. Get an invite at http://drupalslack.herokuapp.com/.
  4. The Panels ecosystem meeting is on every Tuesday at 5pm UTC in the #drupal-scotch IRC channel.
  5. The usability meeting is every week at 7:30pm UTC on Tuesday at https://drupal.slack.com/archives/ux, get an invite at http://drupalslack.herokuapp.com/
  6. There is a media meeting every Wednesday at 2pm UTC, join at https://drupal.slack.com/archives/media, get an invite at http://drupalslack.herokuapp.com/.
  7. Wanna help with migrate? The team either meets in Google Hangouts or the #drupal-migrate IRC channel. (Discussed at the start of the meeting based on lead availability in IRC). Meetings are on Thursdays 9pm UTC and 2pm UTC on a weekly alternating basis.

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

DrupalEasy: DrupalEasy Podcast 209 - Local Development Environments

Main Drupal Feed - Tue, 04/24/2018 - 10:19

Direct .mp3 file download.

Ted Bowman and Mike Anello, both back from DrupalCon Nashville, spend some quality time together to catch up on all the latest happenings involving local development environments. Ted hosted some BoFs about the topic, and Mike posted a comparison of some of the more popular Docker-based, Drupal-focused local development tools, so we figured it was a good time to devote an entire podcast on the topic. In addition, Mike and Ted name their "favorite thing" from DrupalCon Nashville.

Discussion Sponsors Follow us on Twitter Subscribe

Subscribe to our podcast on iTunes, Google Play or Miro. Listen to our podcast on Stitcher.

If you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our contact page.

Dropsolid: Solr search and multilingual content in Drupal

Main Drupal Feed - Tue, 04/24/2018 - 10:00
24 Apr Make SOLR understand your multilingual content to improve the user experience Kevin VB Drupal 8 Apache

We all use searches multiple times a day without ever giving them a second thought. Browsing a webshop to find that one particular product, searching through forums to find a solution to your specific problem, or filtering stores based on your location to find the closest one, etc.

All of these examples require the same thing: content that is indexed in such a way that it can be filtered. In general, this is quite easy to set up: all you need is a database and a query to get you started.

However, what should you do if your visitors are more demanding and expect to be fed the right content when searching for plurals or a combination of words or synonyms? In the majority of cases, such complex queries fall beyond the reach of default search solutions, leading to dreaded messages like ‘Your search yielded no results’. This very quickly leads to user frustration and, subsequently, fewer conversions on your website. And this is only the start of it… What if your website also serves Germanic languages other than English? Suddenly, you are confronted with concatenations of words such as the infamous ‘Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz’ or ‘Chronischevermoeidheidssyndroom’.

In this blogpost, we explain how you can configure Apache Solr to improve your multilingual content indexing and querying. We will shed some light on the ways indexing and querying is configured and can be tested, so you can make sure that Solr can understand your content and return a better result when users are searching through it. We will be using Dutch as an example, because of its compound word complexity. The underlying principles, however, are valid in plenty of use cases for other languages and search-related problems.


What are compound words?

First things first: let’s analyze our definitions. If we stick with the example of ‘chronischevermoeidheidssyndroom’. This word consists of multiple building blocks: the adjectives ‘Chronische’ and ‘vermoeidheid’ and the noun ‘syndroom’. In Dutch, it is perfectly acceptable to combine these elements into one long noun - and the exact same principle applies to German. In English, the direct translation looks very similar: ‘Chronic Fatigue Syndrome’. The only difference, of course, is those handy spaces in between the individual components! Most language processing tools split words by spaces, which makes it easy to search for parts of a search term, as they already appear split up in the text. In the case of the German and Dutch examples above, this isn’t so easy to do. Because of this added complexity, we will need to configure our language processing tool to understand what the possible compound words are and how they are combined. Luckily, there are certain grammar tools around that make it possible to tackle this added complexity through handy algorithms!


Getting started

First of all, we must make sure to install the necessary modules:

The Search API acts as a bridge between different search servers and the Search API Solr allows to communicate with a Solr server.
Once those modules have been installed, the most important one for multilingual sites is the Search API Solr Multilingual module. This module allows to connect with a Solr server with better support for non-English languages.

If you are using the 8.2.x branch of Search API Solr, you won’t have to download the multilingual module, as it is merged into the Search API Solr module.
Once these modules have been installed, you will be able to set up a connection to a Solr server using the Multilingual backend connector. We will not go any deeper into the whole installation process, as the modules all come with their own detailed installation instructions.


Configuring your Solr server for multilingual content

The multilingual Solr module also provides a download mechanism that generates the Solr configuration files that are needed to support multilingual content indexation. 
One of the most important files in this configuration is the schema_extra_types.xml file.

This file declares a field type called text_nl, which has some filters declared when indexing the content and some when performing a query on the index. Some names speak for themselves, for example:

  • MappingCharFilterFactory: this uses the accents_nl.txt file to map a certain character to another. Using this, we can filter out special characters. This means that  the search mechanism can still understand what you’re looking for if you search without using this special character.
  • CharacterWhitespaceTokenizerFactory: this tokenizer splits words based on whitespace characters - this way each word get indexed.
  • LengthFilterFactory: Filters out words based on the max and min values. Example: min=2, max=100 will filter out words that are less than 2 characters and longer than 100 characters.
  • LowerCaseFilterFactory: makes the token lower case.
  • StopFilterFactory: Filters out words which are mentioned in the stopwords.txt file attached to this filter. This list contains words with no added value, like eg. but, for, such, this or with.
  • SnowballPorterFilterFactory: The most important argument for this factory is the language argument, as this will define how the stem of a certain word is defined. As you can see in the example, we are using Kp and not NL for Dutch stemming. This is because the Kp stemmer better stems Dutch words. Want to know more about this algorithm? You can find all the details via this link
    In short, this filter will result in plural words being indexed together with the stem of the word. E.g. 'modules' → 'modules', 'module'
  • RemoveDuplicatesTokenFilterFactory: removes any duplicate token.

Some filters are more complex, so let’s explain them more in-depth:

  • WordDelimiterFilterFactory: this filter will split words based on the arguments.
    • CatenateNumbers: If non-zero number parts will be joined: '2018-04' → '201804'.
    • GenerateNumberParts: If non-zero it splits numeric strings at delimiters ('2018-04' → '2018', '04'.
    • SplitOnCaseChange: If zero then words are not split on CamelCase changes. Example: 'splitOnCaseChange' → 'split', 'On', 'Case', 'Change'.
    • GenerateWordParts: If non-zero words are splitted at delimiters. 'DrupalCon' → 'Drupal', 'Con'.
    • PreserveOriginal: if non-zero the original entry is preserved. 'DrupalCon' → 'DrupalCon', 'Drupal', 'Con'.
    • CatenateAll: If non zero words and number parts will be concatenated. 'DrupalCon-2018' → 'DrupalCon2018'
    • CatenateWords: If non zero word parts will be joined: 'high-resolution-image' → 'highresolutionimage'
    • Protected: the path to a file that contains a list of words that are protected from splitting.
  • DictionaryCompoundWordTokenFilterFactory: this filter splits up concatenated words into separate words based on the list of words given as dictionary argument. Example: 'flagpole' → 'flag', 'pole'
  • SynonymFilterFactory: This filter allows to define words as synonyms by passing along a list of synonyms as synonyms argument. This list is a comma separated list of words which are synonyms. This can also be used to solve spelling mistakes.
    • Example: drupal, durpal - Will make sure that when a user searches for durpal, results with drupal indexed will be returned as possible matches.

With this setup, you should be able to make your search indexing and querying a lot smarter. You can find different synonyms.txt, nouns.txt and accent.txt files if you search the web for your language. 


Where can I find these txt files?

Remember the section about the compound words? This is where this knowledge comes in handy. We spent a long time browsing the web to find a good list of compound words and stop words. To make your life easier, we’ve attached them to this blog post as GitLab links for you to see, edit and collaborate on. These files are for Solr version 5 and above and are for the Dutch, English & French language.

Pay attention, however! When adding these files to an existing index, you will need to use a multilingual server connection and then reindex your data. If you don’t do this, your index and query will no longer be in sync and this might even have a negative impact on your environment.


Testing indexed and query results

When you have installed a Solr server and core, you can visit the Solr dashboard. By default, this can be reached on localhost:8983/
If you select your core, you will be able to go to the Analysis tab.

This screen allows to perform a search and see how the index (left input) or the query (right input) will handle your value. It’s important to select the field type, so the analysis knows what filters it needs to use on your value.


Things to avoid

Let’s stick with our example of the Dutch word ‘Chronischevermoeidheidssyndroom’ and see how the index will handle this word. If you don’t configure Apache Solr with support for Dutch, it will only store ‘chronischevermoeidheidssyndroom’ in the index. If someone were to look for all kinds of ‘syndromes’, this item wouldn’t show up in the website’s results. Perhaps you would expect otherwise, but Apache Solr isn’t that smart.


What you do want to happen

However, if the index is configured correctly with support for Dutch words, it will return the following results:
 

 Name of filter

 

 MappingCharFilterFactory

 C|h|r|o|n|i|s|c|h|e|v|e|r|m|o|e|i|d|h|e|i|d|s|s|y|n|d|r|o|o|m

 WhitespaceTokenizerFactory

 Chronischevermoeidheidssyndroom

 LengthFilterFactory

 Chronischevermoeidheidssyndroom

 LowerCaseFilterFactory

 chronischevermoeidheidssyndroom

 DictionaryCompoundWordTokenFilterFactory

“chronischevermoeidheidssyndroom”, “chronisch”, “chronische”, “scheve”, “vermoeid”, “vermoeidheid”, “syndroom”, “droom”, “room”

 StopFilterFactory

“chronischevermoeidheidssyndroom”, “chronisch”,  “chronische”, “scheve”, “vermoeid”, “vermoeidheid”,  “syndroom”, “droom”, “room”

 SnowballPortretFilterFactory

“chronischevermoeidheidssyndroom”, “chronisch”,  “chronische”, “scheve”, “vermoeid”, “vermoeidheid”,  “syndroom”, “droom”, “room”

 RemoveDuplicatesTokenFilterFactory

“chronischevermoeidheidssyndroom”, “chronisch”,  “scheve”, “vermoeid”, “syndroom”, “droom”, “room”


The word ‘Chronischevermoeidheidssyndroom’ will eventually be indexed with the following result: ‘chronischevermoeidheidssyndroom’, ‘chronisch’, ‘scheve’, ‘vermoeid’, “‘syndroom’, ‘droom’, ‘room’. If somebody searches for any of these words, this item will be marked as a possible result.

If, for example, we run a search for ‘Vermoeidheid’, we should expect that our beloved  ‘Chronischevermoeidheidssyndroom’ pops up as a result. Let’s try this out with the Solr analysis tool:

 MappingCharFilterFactory

 V|e|r|m|o|e|i|d|h|e|i|d

 WhitespaceTokenizerFactory

 Vermoeidheid

 WordDelimiterFilterFactory

 Vermoeidheid

 LengthFilterFactory

 Vermoeidheid

 LowerCaseFilterFactory

 vermoeidheid

 SynonymFilterFactory

 vermoeidheid

 StopFilterFactory

 vermoeid

 SnowballPortretFilterFactory

 vermoeid

 RemoveDuplicatesTokenFilterFactory

 vermoeid


Eventually, our query will search for items indexed with the word ‘vermoeid’, which is also a token index when indexing the word 'Chronischevermoeidheidssyndroom'.


In short

When up a Solr core for multilingual content, it’s important that we provide extra field types that handle the text in the correct language. This way, Solr can index the word in such a way that plurals and concatenations of words are understood. This, in turn, provides a better experience to the user who is looking for a certain piece of content. With everything configured correctly, a user running a search for ‘syndroom’ will be served all compound words as a possible result, providing the user a better overview of your site’s content.
 

You can find our Dropsolid resources here: https://gitlab.com/dropsolid/multilingual-solr-config 

 

More blogs

CU Boulder - Webcentral: Drupal.org Should Take a Page from Apple During Major Releases

Main Drupal Feed - Tue, 04/24/2018 - 09:31

Before the critical security update to SA-CORE-2018-002 was released on March 28, I was doing the same thing as many other members of the Drupal community.

via GIPHY

I was also looking for any updates about the status of Drupal.org or the 7.58 update on various Slacks, Twitter and Reddit.  While there were a lot of jokes like asking everyone else to stop refreshing, there was also a lot of discussion about deployments and security.  In the Slack for people working with Drupal in higher education, several people thanked Michael Hess and the University of Michigan for the time he devotes to Drupal’s security.

People were asking a lot of questions about why the Drupal.org infrastructure wasn’t scaled in anticipation of the traffic.  Lots of suggestions for improving the experience were given including taking a page from Apple’s playbook to just take the entire site down and link just to the security update.  That one caught my eye. Apple doesn’t take their store down because they don’t know how to scale.

I’m not sure if this is where I first read about this, but Scotty Loveless was discussing this back in 2013.  At the time he wrote…

In 2013, do they really not have the web chops to update their store live?  Of course they do… 

I believe Apple takes down the online store prior to product launches because that's one of their 'Christmas morning' traditions.

They have done it as long as I can remember and will most likely continue long into the future.

In many ways Apple is more like a family than the average company.  Taking the key web properties down before major announcements allows more of their family to participate in the event.  Regardless of someone's role at Apple, they’ve contributed directly or indirectly to what is about to be announced.  They may not have been the lead engineer on the product or even have any idea what is about to be announced, but by doing their job well they enable other people to focus on a different job.  Shutting down parts of apple.com is a small way they all share in the excitement of what they are able to achieve as a group.

While most members of the Drupal community don’t contribute directly to the security team, everyone clicking refresh over and over again is trying to contribute to Drupal’s security by securing even one site.

I don’t follow Apple as closely as I used to, but it looks like they still take the store down before big announcements.

I might be too late to change the plan for tomorrow's release, but I would like to see Drupal.org taken down when the community is waiting for major security update like this.  Maybe respond to all requests for a URL on Drupal.org with a simple message like...

We’ve taken Drupal.org offline while we prepare to distribute a critical security update. 

When the update is available, it will be linked here.

While you wait, take a few minutes to think about the amazing community you are a part of who are likely all clicking refresh over and over again right now too.

Rather investing resources scaling Drupal.org up so it's able to run normally, let's embrace the fact that Wednesday is not normal and that we're all in this together.

I've started a thread on r/drupal/ to discuss.

Developer Blog

Drupal Europe: Program vision and update

Main Drupal Feed - Tue, 04/24/2018 - 09:12

During our first few weeks of selling Drupal Europe tickets, we were frequently asked about how our program is going to be structured. In this post we will outline the structure of our program and what it means for you.

Why change what works?Pedro Lozano (Drupalcon Barcelona 2015)

Our organizers are regular attendees at DrupalCons and other Drupal events. DrupalCon has always had a very high level of quality in terms of sessions, speakers and diversity.

At a DrupalCon you would usually see the following elements:

  • Monday — Summits for industry-specific groups such as Government, Media and Publishing, etc. (Separate ticket required)
  • Monday — Training in a small number of topics presented by experienced professionals in a hands-on manner for a whole day (Separate ticket required)
  • Tuesday to Thursday — Sessions and workshops organized into tracks based mostly on expertise area (Backend development, Frontend, Design/UX, Site Building, Project Management, etc.) as well as common shared interests (Being Human, Building Community, Core conversations, etc.)
  • Sprints for some attendees on all days of the conference but really in full swing on Friday with a great group of mentors available to onboard new contributors
  • BoFs which provide an unconference style setup for people to self-schedule topics and gather with other people around a shared interest
  • Social events including well-known gatherings like Women in Drupal and First-Time Attendee Social

To meet the high expectations of our community, we will keep as much as possible of what worked well. At the same time, we wanted to improve the structure of the program by gearing it towards people who are interested in seeing Drupal applied to specific industries.

Speaking with many past sponsors and attendees, we observed that the main difference between European and non-European events is our fragmented markets. With fragmented markets you have a lower chance of meeting with colleagues, business partners, and customers from your markets, which leads to lower sponsor involvement.

Even if the program is outstanding, lack of sufficient business support makes the event impossible to put on. The primary feedback from all parties was that a Drupal event this size works best as a melting pot of different aspects of Drupal. This is an event where developers, decision makers, project managers, and other roles can share their work and get inspired by real-life stories like Drupal used to control insulin pumps, usage on cruise ships and many more.

Since we cannot really influence the European geopolitical questions, we looked at other aspects to help unify markets. In Europe, Drupal has a strong base in government, publishing, education, social media, and more. There are even Drupal distributions for these purposes originating from Europe. Also we have historically held various business events like the Drupal Business Days as well as popular events like Drupal Splash Awards that have contributed to Drupal’s strong European influence.

Therefore we are incorporating these successful event formats into Drupal Europe.

How Drupal Europe will be differentFocus on industry verticals

Instead of having a specific day for industry participants, we decided to organize the whole event around where Drupal is applied. Drupal Europe focuses on the following verticals:

  • Digital Transformation + Enterprise
  • Government
  • Healthcare
  • E-Commerce
  • Higher Education
  • Publishing + Media
  • Social + Non-profit
  • Infrastructure
  • Drupal Community
  • Drupal + Technology
  • Agency Business

Instead of primarily focusing on the technology used (e.g. frontend), you will see frontend talks in the government vertical, the e-commerce vertical, and so on. A great React online store implementation would be presented in the e-commerce vertical. A compelling multi-channel civic project will be included in the government vertical. We believe this focus of the program will help attendees see the value Drupal brings to their respective markets. It should also compel potential speakers who may not use the latest bleeding edge technology but have deeper industry know-how and insights to present.

Having specific industry verticals allows sponsors to meet with their peers, partners and clients and exchange information about important industry topics and around Drupal and Open Source Software in general. Also they have the chance to learn from other verticals that might face similar challenges in their growth. As a sponsor you can buy sponsorship packages targeted specifically at the verticals.

While focusing more on business, we did not want to lose the spaces and opportunities a conference of this size usually provides to Drupalers. Therefore the last three verticals are more focused on us Drupalers and represent the traditional structure with a focus on community, Drupal technology, and agency business.

Working on the program at DrupalCon NashvilleExpertise tagging

There is of course not one true way to organize sessions, so while our primary organization structure will be verticals, we’ll also use tagging on sessions so you can identify content based on expertises like frontend, backend, and so on… We also believe it is useful to keep the varied lengths and formats including panels, longer workshops and short lightning talks in most verticals.

Given this direction, Drupal Europe will not host summits on Monday.

Expanded opportunities for contribution

However, we also want to strengthen the space provided for contribution. Therefore we will hold a contribution day with mentors already on Monday (additionally to the usual mentored contribution day on Friday). Our contribution room will be open on all days in the conference venue. Join us on Monday to possibly get your contributions committed at the conference!

Birds of a Feather and Trainings

We don’t see a reason to change the unconference aspect and will make space for Birds of a Feather sessions as much as the conference venue allows us to.

Some training providers reached out to us to discuss training possibilities for Monday. We have space for training on Monday, and are still in talks with possible trainers.

Social events

We are also looking forward to continuing the traditional social events and already have an enthusiastic sponsor lined up for Trivia Night.

We’ve seen the success of Splash Awards in various countries across Europe: The Netherlands, Germany and Austria, Norway, Bulgaria, Denmark, France and Romania. We are proud to host the first European Splash Awards! Winners from local competitions can compete in this international contest. It is not too late to organize your local Splash Awards.

One ticket for Drupal Europe gives you access to all this great content. Don’t wait — buy your ticket now!

Join the program team!

Currently we’re looking for volunteers to help the program team create the best possible program. It would be great if you have a background or strong interest in one of the conference verticals so we can reach out to the most interesting speakers.

If you are interested, please email us at program@drupaleurope.org

If you have valuable contacts that you think could help us make Drupal Europe an awesome event, please refer them to us or this blog post.

DrupalEasy: Using Drupal's Linked Field module to output fields as links in view modes

Main Drupal Feed - Mon, 04/23/2018 - 23:07

With Drupal 8, the use of view modes (both default and custom) is gaining momentum. This is especially true because of their ability to be easily utilized by Views. Rather than specifying a list of fields with all the required configuration in a View configuration, many site-builders are finding it much easier to define a set of view modes for their entities, have them themed once, then re-used throughout the site - including as part of a View's output via the "Show: Content" option in a View's "Format" configuration. 

One hiccup that can slow this down is the not-uncommon occurrence of when a field needs to be output as a link to some destination. While this is relatively easy to do with Views' "Rewrite fields" options, there isn't an obvious solution when using view modes.

Enter the Linked Field module. As its name implies, it provides the ability for any field to be output as a link via its formatter settings. The formatter can be configured with a custom URL or it can use the value of a URL from another field value.

Think of this module as an "Output this field as a custom link" option for view modes!

The "Advanced" configuration section for the formatter settings includes the ability to custom things like the title, target, and class attributes for each link. 

If your goal is to maximize the use of display modes throughout your site, then this contributed module is an important tool in your arsenal.  

Hook 42: Mentoring at DrupalCon - Fostering a New Generation of Contributors

Main Drupal Feed - Mon, 04/23/2018 - 22:28

DrupalCon is more than just a conference for networking and learning; it provides an avenue for contributing back to the project during code/contribution sprints. Being a beginner to the issue queue can be daunting and overwhelming. With the help of mentors, novices can get the tools and support they need to jump in and start contributing.

Chris, AmyJune, Daniel, and John took it upon themselves to volunteer as mentors at the DrupalCon Nashville Sprints and we thought we’d share their afterthoughts to empower others to help with mentoring in the future.

Jacob Rockowitz: Content First, Technology Second

Main Drupal Feed - Mon, 04/23/2018 - 21:54

Many years ago, I was going for a morning stroll in New Jersey with my dad. We walked past a complete stranger and my dad said, “Hello.” My parents are divorced and I lived (mostly) with my mom in Brooklyn, so I spent the majority of childhood in a place where no one says hello to strangers. I was bewildered so I asked him why did we just said hi to a complete stranger and he said...

That is truly what he said and I can honestly say, it is the one and only time I have ever heard Sheldon Rockowitz swear. He broke his polite demeanor to emphasize to me the importance of saying hi.

Fast forward 20 years. I am now a father and my four-year-old son is complaining that he has no one to play with. I point to the closest child his age and tell him to go up to the kid and say 'Hi, my name is Ben'. He did it and discovered the concept and value of initiating a greeting with a complete stranger. And he made a friend for the day at the playground.

Two years ago, we were on a summer trip in Montreal and hanging out in a playground. Like many parents, I was laying low on the sidelines, observing my child's interaction with other kids. Ben walks up to a kid on the swing set and says, "I am not sure what language to say ‘Hi’ in, but my name is Ben." Ben's natural ability to adjust his approach blew my mind because he not only found a way to communicate with a complete stranger who might not be comfortable speaking his language, but he also shifted his method based on what he knew - and this is equally important - what he didn’t know. Kids are the future, and they teach us valuable lessons all the time.

Ben taught me..

The Drupal community and software needs to say "Hi" and make people feel comfortable

Improving the evaluator experience has become one of our communities initiatives. There are many approaches and plenty of awesome people contributing...Read More

Jeff Geerling's Blog: Post-Mollom, what are the best options for preventing spam for Drupal?

Main Drupal Feed - Mon, 04/23/2018 - 19:14

Earlier this month, Mollom was officially discontinued. If you still have the Mollom module installed on some of your Drupal sites, form submissions that were previously protected by Mollom will behave as if Mollom was offline completely, meaning any spam Mollom would've prevented will be passed through.

For many Drupal sites, especially smaller sites that deal mostly with bot spam, there are a number of great modules that will help prevent 90% or more of all spam submissions, for example:

Security public service announcements: Drupal 7 and 8 core critical release on April 25th, 2018 PSA-2018-003

Main Drupal Feed - Mon, 04/23/2018 - 16:27

There will be a security release of Drupal 7.x, 8.4.x, and 8.5.x on April 25th, 2018 between 16:00 - 18:00 UTC. This PSA is to notify that the Drupal core release is outside of the regular schedule of security releases. For all security updates, the Drupal Security Team urges you to reserve time for core updates at that time because there is some risk that exploits might be developed within hours or days. Security release announcements will appear on the Drupal.org security advisory page.

This security release is a follow-up to the one released as SA-CORE-2018-002 on March 28.

  • Sites on 7.x or 8.5.x can immediately update when the advisory is released using the normal procedure.
  • Sites on 8.4.x should immediately update to the 8.4.8 release that will be provided in the advisory, and then plan to update to 8.5.3 or the latest security release as soon as possible (since 8.4.x no longer receives official security coverage).

The security advisory will list the appropriate version numbers for each branch. Your site's update report page will recommend the 8.5.x release even if you are on 8.4.x or an older release, but temporarily updating to the provided backport for your site's current version will ensure you can update quickly without the possible side effects of a minor version update.

Patches for Drupal 7.x, 8.4.x, 8.5.x and 8.6.x will be provided in addition to the releases mentioned above. (If your site is on a Drupal 8 release older than 8.4.x, it no longer receives security coverage and will not receive a security update. The provided patches may work for your site, but upgrading is strongly recommended as older Drupal versions contain other disclosed security vulnerabilities.)

This release will not require a database update.

The CVE for this issue is CVE-2018-7602. The Drupal-specific identifier for the issue will be SA-CORE-2018-004.

The Security Team or any other party is not able to release any more information about this vulnerability until the announcement is made. The announcement will be made public at https://www.drupal.org/security, over Twitter, and in email for those who have subscribed to our email list. To subscribe to the email list: login on Drupal.org, go to your user profile page, and subscribe to the security newsletter on the Edit » My newsletters tab.

Journalists interested in covering the story are encouraged to email security-press@drupal.org to be sure they will get a copy of the journalist-focused release. The Security Team will release a journalist-focused summary email at the same time as the new code release and advisory.
If you find a security issue, please report it at https://www.drupal.org/security-team/report-issue.

Sooper Drupal Themes: Drupal 8 vs Drupal 7 Performance 2018: Drupal 8.5 Is Faster With Glazed Theme Main Demo! | 8 Days To Drupal 8 | Day 7

Main Drupal Feed - Sun, 04/22/2018 - 12:07

We're counting down the days to the official SooperThemes Drupal 8 Release! Count with us as we will be writing a Drupal 8 related blog post every day for the next 8 days.

Drupal 8 is known for being heavier and slower than Drupal 7. However, Drupal 8 doesn't deserve this image and I think it got this image from lazy benchmarking: Testers just install Drupal's default profile, run some ab tests and call it a day. This is not a realistic test! Real Drupal websites will have hundreds of pages, menu items, configuration objects, more complex theming, more modules etc. 

I did some more extensive testing to compare our Drupal 7 products with the Drupal 8 versions that are to be released next week. The beautiful thing (for this test) about our products is that we maintain them with feature parity across Drupal 8 and 7. We provide installation profiles that combined have thousands of content items, menu items, and configuration settings that make them very close to real-world Drupal 8 & 7 websites. Perfect material for benchmarking!

Test 1: Drupal 8 vs Drupal 7 Cached Page Delivery

Drupal 8 default profile cached page benchmark. Drupal 7 255% faster than Drupal 8.

Ok let's get this over with first. Drupal 8 is built on a PHP core that is slower to parse than Drupal 7 and uses more memory. On an empty Drupal installation you will really notice this difference because the empty shell will act like a magnifying glass on the underlying architecture. In the chart above you can see that Drupal 7 is more than twice as fast at delivering cached pages to anonymous users. 

This test is what most people will refer to when saying Drupal 8 is slower than Drupal 7 but this is in fact the least interesting test for 2 reasons:

  1. Nowadays it is very easy to put a cache in front of Drupal. You can use Nginx, Varnish, or Cloudflare with the free plan to serve thousands of cached pages per second, regardless of whether Drupal 8 or 7 or anything else is behind the cache. 
  2. Any empty installation with Drupal's default profile is a bad model for a real website.
Test 2: Drupal 8 vs Drupal 7 Autenticated Views Portfolio Display 

Drupal 8 Glazed Main Demo views display benchmark. Drupal 8  is 228% faster than Drupal 7.

For this second test we use the Main Demo installation profile with our Glazed Theme and Glazed Builder products. This means we have a dropdown menu with 100+ items, a database with around 100 nodes, lots of views displays and contrib modules, and our Glazed theme is enabled which subthemes the bootstrap basetheme. This is a much closer simulation of a real-life Drupal website than the default profile is!

We're benchmarking a views display that draws fields from nodes and taxonomy terms, does some interesting templating and is then pulled into a page using Glazed theme to display the view along with peripheral content.

As you can see in the chart Drupal 8 is now twice as fast as Drupal 7. Despite the heavier core, Drupal 8 is faster when handling large amount of configuration, views, and heavier themes like Glazed and the Bootstrap basetheme. I suspect this is due to the more elaborate caching architecture in Drupal 8. Especially template files are now heavily cached and so are other important Drupal components.

Tested page: https://demo.sooperthemes.com/glazed-main/portfolio/premium1

Test 3: Drupal 8 vs Drupal 7 Autenticated Drag and Drop Page 

Drupal 8 Glaezd Main Demo views display benchmark. Drupal 8 12,5% than Drupal 7.

Our previous test showed an extreme example of Drupal 8 being faster due to its better handling of views. This 3rd test shows what we typically see when benchmarking Drupal 8: Drupal 8 is slightly faster in loading pages in our Glazed Theme demos. We see similar results when testing drag and drop pages, or other content types that don't use the drag and drop builder. In fact our Page Builder module does not significantly impact performance even when loading multiple Glazed Builder editors within the same page. 

The Drupal 8 and 7 installation profiles have near feature-parity but in fact the Drupal 8 version includes the Admin Toolbar module and the Drupal 7 profiles do not include an admin menu module. This means that each page comes with an additional 200 menu items in the Drupal 8 tests. In Drupal 7 I usually install the admin_menu module for faster administration, and this module is known to be significant burden on the server. The fact that Drupal 8 is faster in our tests despite loading the additional 200 menu items is impressive! 

Tested page: https://demo.sooperthemes.com/glazed-main/elements/layout-elements/columns

Conclusion: Drupal 8 Is A Heavier System With More Extensive Caching That Can Make It Faster Than Drupal 7 In Real-Life Situations

At the start of its life Drupal 8.0 got a lot of criticism for being slow. Now in 2018, Drupal 8.5 has seen a significant number of performance improvements and while it's still slower than Drupal 7 at the core, it's faster in complex situations that are more relevant to real-life Drupal websites.

Drupal 8 is faster where it matters, and more scalable! It's also important to add that both test installations did not have any special settings enabling caching of content, views, blocks, etc. Drupal 8 has a much more advanced and more granular caching system that lets you finetune and optimize your experience for logged in users on a grander scale than was every possible with Drupal 7. Notably there is the BigPipe module that gives you lightning fast loadtimes for your primary content and it can then separately lazy-load less important content, like the footer, menus, and sidebar blocks.

For sure this test brings good news to SooperThemes customers, who will enjoy a faster experience our of the box with our Glazed demo installation profiles. As a side note: importing demo content is also twice as fast in our Drupal 8 installation profiles versus Drupal 7.

What is your experience?

Drupal's performance is a complex thing to test and I'm sure you can get different results in varying situations, if you have any questions about the test or if you want to share your own experience with Drupal 8's performance let me know in the comments!

Advomatic: Diversity and Staying Grounded: Recapping Drupalcon 2018

Main Drupal Feed - Fri, 04/20/2018 - 22:03

It was great to get back to DrupalCon this year.  I really enjoyed the Con, and this was one of my favorite DrupalCons in the eight years I’ve been going. Drupal as a community is getting more serious about diversity. In the past, there’s been an undercurrent of people saying “diversity is good” for a... Read more »

The post Diversity and Staying Grounded: Recapping Drupalcon 2018 appeared first on Advomatic.

Advomatic: A Week of Firsts at Drupalcon

Main Drupal Feed - Fri, 04/20/2018 - 21:56

I went to DrupalCon this year with the goal of doing things a bit differently this time. I’m a bit of an introvert with people at first, but I’ve been told I don’t come off that way. So, I decided to leverage that and just push myself through things that, in years past, I would... Read more »

The post A Week of Firsts at Drupalcon appeared first on Advomatic.

Celebrate the WordPress 15th Anniversary on May 27

Wordpress News - Fri, 04/20/2018 - 21:07

May 27, 2018 is the 15th anniversary of the first WordPress release — and we can’t wait to celebrate!

Party time!

Join WordPress fans all over the world in celebrating the 15th Anniversary of WordPress by throwing your own party! Here’s how you can join in the fun:

  1. Check the WordPress 15th Anniversary website to see if there’s a party already planned for your town. If there is, RSVP for the party and invite your friends!
  2. If there isn’t, then pick a place to go where a bunch of people can be merry — a park, a pub, a backyard; any family-friendly venue will do!
  3. List your party with your local WordPress meetup group (Don’t have a group? Start one!)  and then spread the word to other local meetups, tech groups, press, etc and get people to say they’ll come to your party.
  4. Request some special 15th anniversary WordPress swag (no later than April 27, please, so we have time to ship it to you).
  5. Have party attendees post photos, videos, and the like with the #WP15 hashtag, and check out the social media stream to see how the rest of the world is sharing and celebrating.

Don’t miss this chance to participate in a global celebration of WordPress!

Special Swag

In honor of the 15th anniversary, we’ve added some special 15th anniversary items in the swag store — you can use the offer code CELEBRATEWP15 to take 15% off this (and any other WordPress swag you buy), all the way through the end of 2018!

Keep checking the swag store, because we’ll be adding more swag over the next few weeks!

Share the fun

However you celebrate the WordPress 15th anniversary — with a party, with commemorative swag, by telling the world what WordPress means to you — remember to use the #WP15 hashtag to share it! And don’t forget to check the stream of WordPress 15th anniversary posts.

When 30% of the internet has a reason to celebrate, you know it’s going to be great!

Hook 42: Hook 42 at Drupaldelphia 2018

Main Drupal Feed - Fri, 04/20/2018 - 20:37

As part of Philly Tech Week this year, Drupaldelphia expanded their scope to include topics like Drupal, Agile, JavaScript (Node.js, Angular, React), case studies, and many more!!

Boomeranging back to Pennsylvania from DrupalCon Nashville, Adam Bergstein will be attending and presenting this year at Philadelphia's premier Drupal Camp.

CiviCRM Blog: Building the Roparun Team Portal Part 1: Syncing civicrm participants to drupal user records

Main Drupal Feed - Fri, 04/20/2018 - 15:12

This is a first blog post about how we build the team portal for Roparun.

But first what is Roparun? The Roparun is a relay race of over 500 kilometres from Paris and Hamburg to Rotterdam, where people in teams, take part in an athletic event to raise money for people with cancer. It’s also called an adventure for life. This is also clear from the motto, which for years has been: ‘Adding life to days, when days often can’t be added to life’.

So each year Roparun organizes this race and around 400 teams participate in the event. The first part of the project was to setup donation functionality and that is working right now.

The next part of the project is to create a new portal for team captains where they can manage their team data, (e.g. name of the team, start location and the individual team members). We have chosen to have this in a separate Drupal website.

In CiviCRM each team captain is registered as a participant to the Roparun event with the role team captain. The team captain can login into the portal as soon as he has been registered as a team captain and till the event is over.

The first part of this project is that we wanted the team captains being able to login and we have created a module called CiviMRF User Sync. This module build on top of the CiviMRF framework.

This user sync module uses the CiviCRM api to create drupal user accounts. See screenshot below for the configuration.

What you can see is that we use a custom api to retrieve the team captains. This custom api returns the email, contact id and the team id of the team captain. We store the e-mail address as the username and at the email field at the user level.

As soon as a new team captain is registered a new user record is created and the team captain receives an e-mail with a link to create a password.

As soon as an existing team captain is removed from CiviCRM the user account is cancelled and the team captain receives an email indicating that his account is disabled.

We have also created a drupal module to store the team id at the drupal user record and use this team id in the view (see https://github.com/CiviCooP/roparun_team_portal)

So the first bit is done, meaning a team captains can log in. The next bit is to build the portal with Drupal Views and Webforms. The building blocks we are going to use for that is CiviMRF Webform, CiviMRF Views and at the CiviCRM site the form-processor. I will keep you posted on the developments of the next steps.

APIArchitectureCase studies and user storiesDrupalExtensionsInterface and designTips

Sooper Drupal Themes: Drupal 8 Adding Content And Content Types | 8 Days To Drupal 8 | Day 5

Main Drupal Feed - Fri, 04/20/2018 - 13:27

We're counting down the days to the official SooperThemes Drupal 8 Release! Count with us as we will be writing a Drupal 8 related blog post every day for the next 8 days.

Drupal 8 content and content types video tutorial

view on sooperthemes.com if you can't see the video

This tutorial is for people who are new to Drupal 8. We'll be showing how to add content to Drupal 8 and how to change or add new content types. Content types are very flexible in Drupal 8 and that's what makes Drupal more powerful than WordPress and other systems for many use cases. 

Drupal 8's Content Overview Page

Just like all Drupal's previous versions this administration page is the central hub where all your content appears in one place. You get there by clicking the Content link in the toolbar. This takes you to an overview of all the pages in your Drupal website. From here you can edit and delete pages using the action links to the far right side of the table. Additionally you can operate on multiple pages at a time using the controls below the Action label.

The content administration page is not just for pages, using the primary tabs you can navigate to administration pages for files and comments. This can be extended by additional moduels that provide custom content entitities using Drupal 8's Entity API. For example on sooperthemes.com we also manage domain licenses and digital downloads on separate tabs, because these are custom entity types.

Adding Content In Drupal 8

Once you're at the content administration page it's easy to see how to add content. You start by clicking the blue button that reads "+ Add content". You'll now see a listing of content types that are available at your Drupal installation and you have to tell Drupal which type of content you would like to create. After choosing a content type you'll be taken to the content form where you get to fill in all the form fields that make up your content type. You'll learn more about these fields in the next section where we discuss adding fields to content types and adding new content types.

Drupal 8 Contact Management Administration Page

Adding Content Types In Drupal 8

The ability to create new content types and choose from a large selection of different field types is what makes Drupal the system of choice for many organisations that manage a lot of content. Companies of all sizes including Tesla, Disney, United Nations, and Qualcomm use Drupal because it's the best solution for managing a large amount of content on the internet.

To manage content types in Drupal 8 click Structure in the toolbar and then click Content Types.  Now you're looking at a listing of content types installed on your website. If you just installed a new Drupal 8 website with the default profile you will see the Article and Basic Page items.  If you installed one of our theme demo profiles or the free Glazed CMS installation profile you'll have a bunch more options. Check out our YouTube video above for a quick tour. 

Once you're at content types overview click the "+Add content type" button to create a new page type. The minimum you can do here is give your content type a name, for example "Special Page, or Forum Topic". There's a number of other options for your consideration when creating a content type:

Option What it's for Description Administrative help text for content type Preview before submitting You can require or offer a preview of the content before submission Explanation or submission guidelines Additional help text for content editors Publishing options 

You can choose whether this content should immediately be published upon saving. More importantly you should also check the "Create new revision" checkbox to ensure that you can compare and revert to older version of the content in case something goes wrong when editing the content. 

The other 2 options "Sticky at top of lists" and "Promoted to the front page" are legacy options that reference different ways in which your content can be prioritized in content listings (called views in Drupal).

Display settings Choose whether to display the author and post date on this content type, which really only makes sense for blog posts or other social content. This should be disabled for most use cases.  Menu settings Selecting menus here enabled content editor to add the content items to menus on your website.

Creating A Jobs Content Type

Let's create an example content type for the new Careers section of our website. We'll need to post job vacancies, so let's call our new content type Jobs. To create a new content type go to Structure > Content Types and click the "+ Add content type".

Here we fill in the name of our content type and disable the options for author information and menu structure. After all we don't want all our job postings to clutter our menu system, you would use the views module to create an overview of available jobs.

Next click the "Save and manage fields" button. Now we're in the content type configuration page and this is where we add the fields that we need on our job vacancies. To see exactly how this works check out the video above!

Building A Content Type For Job Vacancies

Adding Visual Drag And Drop To Your Content Type

Finally we'll show you how to get even more control over the design of your content with Glazed Builder our visual drag and drop builder for Drupal 8 and 7. You can use Glazed Builder on any long-text field in Drupal on any type of entity. To enable Glazed Builder on your content type go to Structure > Content Type > Your Content Type > Manage Display. Here you can select one or more of your text fields (For example the body field) and switch the Format option from Default to Glazed Builder. Take a peak at the end of our youtube video to see the end result!

Why i left google?

Drupal News Org - Fri, 04/20/2018 - 08:08

After nearly 13 years at Google, I have finally left the nest! Never thought it would happen. I always thought I would die at Google — maybe choking to death on one of their free chocolate brownies, or maybe finally having a heart attack over YouTube’s increasingly bizarre policy enforcement. But regardless of how I envisioned the Grim Reaper catching up with me, I always assumed he’d be hauling me in surrounded by colorful furniture, free food and snacks, and slightly entitled geniuses.

It is difficult to pry people away from Google. Even after almost 20 years of operation, Google is still one of the very best places to work on Earth, just about any way you care to measure it.

I have a lot of good stories saved up that I’d love to share. Google corporate didn’t much care for my blogging, and even though they never outright forbade it, I received a lot of indirect pressure from various VPs. So eventually I stopped. Sad.

But that’s not where my mind’s at today. Those stories will have to wait for my book. Today I just want to tell you about my new gig, because I think you’re going to be amazed. In fact I think I can safely predict that no matter who you are, something in this post is going to amaze you.

Before I tell you about the new gig, I’ll share a few brief observations about Google, to help paint a backdrop for why, of all the great companies out there, I chose to join Grap...

Tandem's Drupal Blog: Handling Post Migration Events in Drupal 8

Main Drupal Feed - Fri, 04/20/2018 - 00:00
April 20, 2018 Sometimes we need to alter data after a Drupal 8 migration has finished. With the migration events system, you can easily accomplish this. Why We need to do this One of the university clients we are helping migrate their Drupal 7 to Drupal 8 site had an interesting dilemma. They use the Flag module to mark favorite content withi...

Acquia Developer Center Blog: How to Build a Drupal Site with Composer, as Seen at DrupalCon

Main Drupal Feed - Thu, 04/19/2018 - 17:06

Fellow Acquian Matthew Grasmick and I just presented How to build a Drupal site with Composer AND keep all of your hair at DrupalCon Nashville, and though the session wasn't recorded, we posted the slides and hands-on guide to using Composer to manage your Drupal 8 sites to the linked session page.

Tags: acquia drupal planet

Pages