drupal

DrupalEasy: Mentoring a team of new contributors at DrupalCon Lille 2023

Image removed.

One of the signature events of every Drupalcon (IMHO) is contribution day, when community members from around the world gather to work together in the same physical space to advance various aspects of the project - from strategic and community initiatives to contributed modules and themes as well as non-code contributions like Promote Drupal and, of course, core contributions.

As part of this, space is always set aside for new contributors, with community volunteers helping to organize, train, and mentor community members new to project contribution. This space strives to be a welcoming environment to those of all skills and skill levels, and includes a "First time contributor workshop" to introduce new contributors to contribution areas and tools.

tl;dr The team I mentored managed to complete the core issue we selected and get it committed to core by the end of the day - something that hasn't happened at a Drupalcon in several years!

Setting a goal

This year, I volunteered to be a mentor in the Mentored Contribution room. Some mentors are provided with a free ticket to Drupalcon, with the understanding that they will not only volunteer a full-day of their time during contribution day, but will also dedicate several additional hours of their Drupalcon experience to attending a mentor orientation, helping out at the Community Mentoring table (graciously provided by Kuoni in the main expo area,) among other tasks.

I've mentored at community events previously (DrupalEasy also provides mentoring services for hire,) so going into the day, I knew exactly what the goals for my "team" were going to be:

  1. Find a core issue that was clear enough for our team to be able to make a strong attempt to get it to a "Reviewed & tested by the community" (RTBC) status by the end of the day - with a stretch goal of having it committed to core before the end of the day.
  2. Learn to work with Drupal.org issue forks.
  3. Utilize DrupalPod (thank you, Ofer!) for all work on the issue.

It is important to note that not all tasks at Mentored Contribution are code and/or project related. The mentoring team does a great job of mentoring other forms of contributions as well.

Finding the right core issue

Having some previous experience, I knew that the first task would likely be time-consuming, so I took it upon myself to spend a couple of hours prior to contribution day to browse through Drupal core issues tagged "Novice" . Finding the right issue to work on during a contribution day is always tricky. Newer core issues tend to be very dynamic with active contributors working on them. Older core issues tend to be more difficult for various reasons - sometimes consensus isn't reached, other times the issue is too complex to be approached by a group in a single day. Prior to the Mentored Contribution day, organizers perform issue triage to narrow down potential issues.

I eventually settled on an issue from November, 2020 titled Add autocomplete attributes on login form and password reset form. The task involved adding some HTML attributes to a couple of core forms to help password managers more reliably target username and password fields. There was an existing merge request (MR) for the issue, but it was without tests (and about two years old.)

This issue seemed to have the criteria I was looking for - something approachable and a relatively straight-forward end goal, something that would allow us to utilize merge requests, and something that required some, but not too much, coding so we had a chance at finishing before the end of the day.

The team

Generally, mentors declare the types of tasks they'd like to work on, then volunteer greeters welcome folks as they show up for the day and bring them to a table to get to work once the "First time contributor workshop" is complete.

Our team consisted of eager new contributors, including: guzmanb, maxime.rffd, hexaki, samuel_orhan, rauch, guiu.rocafort.ferrer, mullzk, and binnythomas.

Image removed.

Using DrupalPod

The mentoring organizers recommend that we use DrupalPod during contribution day. DrupalPod is a browser extension and a set of scripts that make it super-easy to spin up a core development environment on GitPod. DrupalPod utilizes DDEV (something I know a little bit about) and runs completely in a browser, making it very convenient for contribution events like this.

We took some time to ensure everyone was able to spin up their DrupalPod environment for the existing MR, but quickly faced some challenges, as the DrupalPod environment was not launching cleanly.

We worked together to eventually determine that the main issue was the fact that the issue fork was over 2 years old and didn't have an 11.x branch, so the DrupalPod scripts were unable to properly set up the development environment. This allowed our team to learn about diagnosing and correcting issue fork challenges.

This also allowed our team to learn about (and practice) the necessary configuration and workflow for pushing commits from a Gitpod environment back to drupal.org. This involved setting up a temporary .ssh key set (with assistance from DrupalPod) and using Visual Studio Code's Git UI for making pushes (and not the command line.)

These tasks took several hours to complete - ensuring that all team members were staying engaged. 

The issue code

Once we had the development environment and issue fork configured properly, it was time to discuss our approach to completing the issue. Several of our team members had to leave after lunch, so we were left with a core group of individuals, with new contributor guiu.rocafort.ferrer volunteering to take the lead. We planned out the change (and actually expanded the scope of the issue a tiny bit) and I received some guidance from an experienced core developer on what would be a reasonable PhpUnit test for this issue that I relayed back to the team.

I provided some guidance to the team to figure out where the test code should go (a new test class wasn't necessary; we just had to figure out the best existing test class to add to) and an overview of what the (relatively simple) test should look like.

At that point, I felt the existing team members had things well-in-hand, so I stepped back and let them get to work. 

Getting to RTBC

By now, it was mid-afternoon and I was very hopeful that we'd at least be able to get the issue to "Needs review" with an outside chance of "RTBC." While the team worked on the code, I recruited a couple of experienced code contributors to review the code as soon as it was ready.

The team had some minor questions as they proceeded, but no blockers. They were all experienced PHP developers, so for them, this was the easiest part of the task, I suspect.

When they felt they had completed the task, I did a line-by-line code review with them, suggesting several minor changes, before they committed and pushed to the MR. I then alerted our reviewers (jurgenhass and lostcarpark) and they both agreed that it looked good. While this was going on, I alerted the mentoring organizers that we would potentially have a core issue at RTBC.

Live Drupal core commit

As long as I've been a part of the Drupal community, during Drupalcon contribution days, "live core commits" have always been a thing. From what I've been told, there hasn't been one for "several years" for various reasons, so I was quite proud of our team when nod_ showed up to congratulate our team and commit their changes to Drupal core on the big screen at the front of the mentored contribution room

Retrospective

Looking back at the event, the only thing I would have changed is something that was completely out of my control - the fact that over half of our team wasn't able to stay for the full day and get the sense of pride that the rest of the team clearly had watching a Drupal core committer accept their contribution.

Personally, core mentoring is incredibly rewarding, and I always get more out of it than I expect. Along the way, I learned some additional details about DrupalPod as well as the pitfalls (and solutions) when working with old issue forks.

If you're an experienced Drupal developer, I encourage you to make a commitment to dedicate your time to helping to grow the next wave of contributors. If you're interested, say hello in the #mentoring-team channel of the Drupal Slack workspace.

Photos courtesy of Andy Blum

Tag1 Consulting: Scary Drupal Migrations - with Benji Fisher

--- In this Halloween-themed episode of Tag1 TeamTalks, Benji Fisher, a top contributor to Drupal, shares two chilling platform migration stories. In the first tale, set in 2019, Benji tackled a government website project with a tight deadline. The initial plan to use the unstable feeds module for Drupal 8 was alarming, given the project's complexity. Benji opted for the more reliable Migrate API to handle the intricate XML data structure, a decision that ultimately paid off. The second hair-raising story occurred in 2013-2014 during the implementation of HTTPS on a Learning Management System (LMS). Benji had to persuade the client that HTTPS wouldn't harm performance and deal with hardcoded HTTP URLs in JavaScript activities. He devised a clever shell script to convert and edit the URLs, swiftly resolving the issue. Both stories exemplify the unpredictability and challenges of platform and data migration. They underscore the importance of selecting the right tools and techniques. These experiences, though harrowing at the time, now serve as reminders of successful problem-solving and resilience in the tech world. Please let us know if you have specific migration-related topics you'd like to see us cover. Or, reach out and let us know if we can...

Read more michaelemeyers Wed, 10/25/2023 - 06:00

ComputerMinds.co.uk: Andrei's first Drupalcon

Image removed.

A little over a year ago, I ventured into the world of Drupal; a complex content management system. Despite making considerable progress in understanding its intricacies, it's widely acknowledged that Drupal presents a steep learning curve. To navigate this learning curve successfully, one must maintain unwavering dedication and find satisfaction in troubleshooting and problem-solving, which can provide a rewarding sense of achievement.

Image removed.

I was fortunate to have an exceptional team that provided a constant stream of knowledge, invaluable advice, and overall support in my pursuit of mastering Drupal. A significant milestone in my Drupal journey was the invitation to attend DrupalCon2023, a pivotal moment as it marked my first conference participation, entirely dedicated to my field of interest.

I'll admit that I felt apprehensive in the lead-up to Dries' keynote address, with doubts about my qualifications to be part of such a prestigious event nagging at me. However, my confidence had a steady revival following the opening ceremony and the initial conference keynote. The first session I attended provided an in-depth exploration of SearchAPI, which provides a quicker and more robust approach to formulating queries and has the potential to reduce reliance on Solr and enhance response times. Additionally, the discussion on the Gin Admin Theme held my attention. Remarkably, observing fellow attendees using Linux on their laptops further motivated me to expedite my laptop's development setup.

Image removed.

The collective experience at DrupalCon instilled a profound sense of community. It reinforced the commitment of remarkable individuals tirelessly working to improve Drupal and, by extension, making positive contributions to the broader world. Immersing myself in this environment was incredibly insightful, offering deep inspiration and motivation. Watching the collaborative brainstorming of like-minded individuals led to the formation of new ideas, which was a unique experience for me.

The event expanded my horizons, particularly in understanding the diverse potential of the applications of Drupal. It also deepened my appreciation of the open-source philosophy and has inspired me to endeavor to contribute back to the Drupal community.

I treasured the opportunity to strengthen my connections with colleagues, engage in collective sessions, and subsequently share insights from the various talks we attended.

Drupal blog: State of Drupal presentation (October 2023)

This blog has been re-posted and edited with permission from Dries Buytaert's blog.

Last week, approximately 1,300 Drupal enthusiasts came together in Lille, France for DrupalCon. In good tradition, I delivered my State of Drupal keynote, commonly referred to as the "Driesnote". You can watch the video of my keynote or download my slides (264 MB).

This keynote was unlike any other. I narrated a fairy tale that explores how the Drupal community is working together to simplify the process of starting, building, and maintaining Drupal websites. Yes, you read that correctly – a fairy tale. However, rest assured, it's a fairy tale with a happy ending.

If you're keen to experience the full magic of the Drupal fairy tale, I highly recommend watching the video instead of reading this blog post. And if you want to avoid any spoilers, stop reading here.

A tale of four cities: learning from competitors

As the speaker, I took the audience on a journey that started with my discovery of a mysterious book related to Drupal. The book uses an analogy to explain Drupal as a character living in the Drupal Village. This village is full of different types of houses, from cozy cottages to grand estates. In this bustling village, ambitious villagers work together to construct and take care of their homes.

The Drupal villagers cherish core values such as creativity, flexibility, scalability, accessibility, collaboration, empowerment, security, and freedom.

In the Drupal Village, a young builder grows frustrated with the challenges of constructing and maintaining homes. Driven by curiosity about alternative approaches, the young builder makes the bold decision to leave Drupal Village and embark on a journey to neighboring towns. Their hope was to uncover if there were superior methods for homebuilding.

Image removed.
The Drupal character leaves on a journey to visit nearby villages.

Drupal, our central character, decides to follow the young builder, embarking on a journey that takes them to four unique villages: Reactopia, Contentville, Squarix, and Edoby Heights. Along the way, Drupal gathers valuable insights from each of these unique villages. Despite uncovering some of their shortcomings, Drupal also came to understand why these villages hold allure for young builders.

Image removed.
Summary of lessons learned from Drupal's visits to Reactopia, Contentville, Squarix, and Edoby Heights.

Learning from the strengths of these four villages, the Drupal character realizes that for Drupal Village to prosper, it must offer an exceptional builder experience. Furthermore, through their visits to these four villages, our main character developed a clear idea of what an exceptional experience might look like. With a clear goal in mind, Drupal decides to simplify the process of starting, building, and maintaining homes in the Drupal Village.

Image removed.
Drupal understands that for the Drupal Village to prosper, the builder's experience must be exceptional: it should be simpler to get started, easier to build, and effortless to maintain.
​​​​​​

Drupal brings together some of the most skilled craftspeople from the community to meet at a nearby atelier called OuiWork. Within this collaborative space, initiative leaders Tim Plunkett (Acquia), Cristina Chumillas (Lullabot), and Lauri Eskola (Acquia) shared valuable insights about the work they are doing.

In practical terms, I discussed the significance of the Project Browser and Automatic Updates Initiatives. These initiatives serve to streamline the process of starting and maintaining your Drupal sites. Our goal is to include Automatic Updates and Project Browser into Drupal 10.3, scheduled to be released in June 2024. Achieving this milestone will be the culmination of over a decade of dedicated effort. I believe Drupal's Automatic Updates and Project Browser will be both the most advanced and most security-conscious tools of their kind among all PHP applications.

I also highlighted various efforts to make it easier to build with Drupal. This includes improvements in content modeling features (watch video segment) and enhancements to Drupal's administration toolbar (watch video segment). This work not only follows a design-first approach but also showcases our ability to make rapid progress, underscoring changes in the way we work and collaborate.

Image removed.
Drupal announces a new strategic initiative: a Next Generation Page Builder.

Lastly, I introduced a new strategic initiative aimed at improving the user experience for building pages with Drupal (watch video segment). The initiative is called Next Generation Page Builder and focuses on improving Drupal's layout builder, which was first introduced in Drupal 8.

Beyond the dark clouds: advocating for an Open Web

Image removed.
The Closed Web proponents casting dark clouds over Drupal Village.

After working on improving the builder experience, the Drupal character returns home to discover Drupal Village shrouded in dark clouds. These ominous clouds are the work of the Closed Web advocates, sinister figures in the story. Hope arrives in the form of a visit from Fairy Godfather Tim Berners-Lee. The visit inspires Drupal to become an unwavering promoter and protector of the Open Web. In the morning, the Drupal character takes it upon themselves to write the Open Web Manifesto. This seminal document binds the entire community to a shared commitment: the creation of a digital future that is more accessible and inclusive for all.

Shining a light on Drupal: the role of Drupal marketing

Image removed.
Drupal seeks the assistance of three sorcerers with magical (marketing) powers.

Sadly, the Open Web Manifesto alone can't clear away the dark clouds created by the Closed Web advocates. As the dark clouds creep closer and obscure the village, Drupal seeks help from three powerful sorcerers. The sorcerers use their magic to dispel the dark clouds, unveiling the remarkable work occurring in Drupal Village to the entire world.

In reality, the "sorcerers" are the Drupal Marketing Committee. Their mission is to shine a light on Drupal, promoting it to showcase the impressive work being done. The goal is to encourage more individuals to consider Drupal over closed web solutions, who often have significant resources for marketing themselves.

The Drupal Association launched a Drupal Marketing Committee after DrupalCon Pittsburgh. Comprising seasoned marketing professionals like Lynne Capozzi (former Acquia CMO), Suzanne Dergacheva(Evolving Web), Nikhil Deshpande (State of Georgia), and more, this committee is developing a marketing strategy for Drupal – a first in Drupal's 20+ year history. I had the honor of conducting an on-stage interview with them during my keynote (watch video segment), where they discussed the importance of marketing for Drupal and how it might impact the Drupal community.

We're committed to investing in Drupal's marketing efforts in the next few years. While the full marketing plan will be unveiled towards the end of this year, expect to see things like:

  • A new website launch, with more focus on outsiders and evaluators.
  • Refreshing the Drupal brand, with focused messaging aimed at attracting fresh talent.
  • Improving Drupal's visibility and presence at conferences.
  • Increase presence and engagement with universities.
  • Grow the involvement of Drupal Certified Partners.

The Drupal Marketing Committee welcomes all Drupal community members to participate in our marketing efforts.

Drupal's three promises

In the end, our main character, Drupal, commits to three important promises:

  1. Enhance the builder experience to make it easier to start, build, and maintain Drupal sites.
  2. Advocate for an Open Web, championing a more inclusive and accessible digital future.
  3. Amplify our marketing efforts to highlight the outstanding work happening in Drupal, and to expand Drupal's reach and influence in the market.

With these promises in motion, the dark clouds fade. As they clear, the village's future sparkles with newfound hope, and the eager young builder returns home.

Image removed.
The Drupal Village celebrates after the clouds vanished. Finally the world can see what a great place it is for ambitious villagers.

Thank you

Last but not least, I want to thank everyone who made DrupalCon Lille a tremendous success. I always come away inspired and full of ideas, and this year is no exception. Here is to a long and prosperous future for Drupal Village and all of its ambitious villagers! I look forward to sharing future chapters of the fairy tale as we continue to grow our community and software together!

— Dries Buytaert

Specbee: Getting Started with Drupal Feeds: A Beginner's Data Import Guide

Disclaimer: Zero coding involved! Yes, you heard it right! It’s because we’re talking about implementing the Drupal Feeds module, where you don’t need to code to import and manage data! The Feeds module in Drupal simplifies data import into nodes, users, taxonomy terms, and more via a user-friendly web interface. No coding required! It handles various formats like CSV, JSON, XML, and RSS feeds. Dive into this article to get started with installing and implementing the Feeds module for data imports. Why use the Drupal Feeds Module When stacked up against other migration modules like Migrate, which is a part of Drupal 10's core, here's what sets Feeds apart: All imports are created from Drupal's UI. Say goodbye to coding and hello to user-friendly imports!  Provides different ways of importing source data, whether it's from local files, directories, or URLs. Your data, your choice!  All your imports can be handled directly from your website's UI. No need to change any configurations.  Allows you to schedule imports so your data is always up-to-date.  You’re not restricted to just a single data source. Installing the Feeds module Like any other contributed Drupal module, you can install the Feeds module with the Composer command: composer require 'drupal/feeds'. (okay maybe just this one line of code :) Once it is downloaded, enable it with the drush command or by visiting the Drupal admin dashboard. Configuring the Import Feed To configure the module, navigate to admin > structure > feed types > Add Feed Type.   To begin importing data, provide the name and a description of the importer, this indicates the importer's use. Below are the 3 Importers options: Fetcher This option indicates the source for importing data. You have 3 different options here: Download: Import data via a URL.  Upload: Data will be imported via a file upload.  Directory: This option lets you select files that will be found in the system folder of our Drupal file system.  After selecting the Fetcher option, you can configure the import settings within the Fetcher settings tab. Parser The parser is responsible for handling the source data's format. It offers a range of format choices for your imported data, including RSS/ATOM, CSV, and XML. If you need JSON format support, you can install the Feeds Extensible parser module. Once you've selected your preferred format, you can fine-tune the settings within the Parser settings tab. Processor The job of the processor is to create the appropriate content in Drupal using the data you’ve received. This can include various content types such as nodes, users, taxonomy terms, files, URL aliases, and more. The processor is configured in the Processor settings tab. Here are some important configurations: Update existing content items  Previously imported items  Insert new content items  Language  Owner  Settings Under the settings tab, you can schedule the import period. Adding Fields to the Feed Type Define which elements of a single item of a feed (Sources) map to which content pieces in Drupal (Targets). To avoid importing duplicate values, make sure that at least one definition has a Unique option checked.  Here is an example of adding fields from a JSON file: To add, click on the Mapping tab. Add context as [ ] key defined in the JSON file as $.array_name.* To add a field, click on Select a target option under the Target tab.  Now, let's add a Title. To add the title field click: Select a target selector  Choose the title field  Click Select a source selector  Choose a New JSON source   Provide the exact key name and save.   Once the Import feed Type is created, you can find it under admin >structure > Feed Types (/admin/structure/feeds). Importing Data With the configuration in place, it's time to initiate the data import using the Feed type you've created. Navigate to Content > Feeds.  Click on +Add feed.  After clicking on Add Feed, you will see a list of configured feeds. Select the appropriate feed type to import data. Select the feed to import data.  To begin the import, provide the title value, select a file for the import, and click on Save and Import. After a successful import, the content will be created for the specific processor. And that, my friends, is your ticket to smoothly importing data into our Drupal website using the versatile Drupal Feeds module. Final Thoughts In this blog, we've explored the key features and steps to implement the Drupal Feeds module, making data import and management a breeze. With its user-friendly interface, support for various data formats, and the ability to schedule imports, the Feeds module empowers you to keep your website's content fresh and dynamic without the need for extensive coding. Looking for a more detailed article on the Drupal Feeds module with examples and module extensions? Click here to read now. Ready to leverage the power of Drupal for your website? Take advantage of our expert-driven Drupal development services and transform your website today. Don't wait, let's get started!