All RPGs and Storygames by Tod Foley are now available at DrivethruRPG. Bring these games to your table!
The large business world knows no compromise. Your website should stand out from the competitors and keep up with all the business requirements. And not just keep up — a site can move your business forward by offering advanced digital experiences to customers.
Whether the website is capable of doing this, largely depends on the choice of the platform to build it with. In this post, we discuss why it’s worth choosing Drupal for large business website development.
Drupal core announcements: Issues adding new deprecations (for removal in Drupal 10) should be moved to 9.1.x
Drupal 8 and higher provide a continuous upgrade path with a deprecation policy that requires old APIs to be marked deprecated and retained until the next major version. Drupal 8.8 was the final release to introduce new deprecations that will be removed in Drupal 9. This means that all new deprecations in 8.9 and higher will be retained in Drupal 9 and marked for removal in Drupal 10 instead.
For now, in order to continue work on issues that add new deprecations without causing disruption and noise for Drupal 9 readiness tools that detect deprecations, issues with new deprecations for Drupal 10 should be moved to the 9.1.x branch.
9.1.x is not yet open for development and so patches will not apply to it, but work can continue on these patches in the meanwhile by testing them against 9.0.x instead when the patch is uploaded:
We may change our policy in the future and allow 10.0.x deprecations to be backported to 8.9.x and 9.0.x in certain cases (discussion in issue #3088246). Otherwise, 9.1.x will open for development in either March or April, depending on progress on Drupal 9 release blockers.
Drush 9 command used to query a Drupal 7 site database and generate an Excel file that can be used to plan migrations.
The idea of this module is let you define by CMS selectors to trigger DataLayer events.
It basically works by defining 4 datalayer variables: eventCategory, eventAction, eventLabel and eventValue.
After defining a Jquery Selector and how those fields should be filled, it will add HTML Data Attributes to the element and trigger a DataLayer push on clicks with an event called eventClick.
It's a good option to catch events with GTM without getting garbage like every 'click' push.
A versatile solution for importing large CSV files into Drupal.In this post we will cover...
- Point one
- Point two
- Point three
Migrating content from an existing site or an external data source can help reduce the effort required by content editors to get a new site ready for launch. As a result, constructing and executing content migrations is a common task we undertake as part of the site build process. While these migrations can vary in type, typically spreadsheets are exported in a comma separated value (CSV) format due to their simplicity.
While Drupal has robust support for migrating in from a CSV file, the current structure can struggle when presented with large CSV files. In particular, the migration import process can run out of memory part way through the migration process. We encountered this problem while migrating tens of thousands of locations for a client. Increasing the PHP memory limit for the migration was an initial step, but proved not to be enough:
- Memory usage is 1.21 GB (80% of limit 1.51 GB), reclaiming memory.
Memory usage is now 1.21 GB (80% of limit 1.51 GB), not enough reclaimed, starting new batch
Even though the migration module attempts to reclaim memory and start a new batch, the process does not always complete.
Some approaches to get around this issue include scripting your migration and utilizing the limit option when running a migration. However, we wanted a solution that could be more versatile and wouldn’t require custom scripting for each new migration we would write.
As a result, we wrote a custom Drush command that acts as a wrapper around the default Migrate import command. Our custom command splits a large CSV file into smaller files that can be imported in batches.
As an example, the following command may be run:
drush migrate:import:batch sample_migration --batch-size=100
When the migration is run, the CSV source file for the sample_migration is split into smaller CSV files with 100 lines each. The migration runs for each of these files. These files are temporarily stored in the private files directory and are cleaned up after the migration is finished.
Other migration operations run like normal and all of the default options may be passed in. Migration mapping hashes are maintained, so the migration may be rolled back like normal, too.
The module’s code currently exists in a Github repository which also contains more information on the module’s usage, but we plan on releasing it as a contributed module on Drupal.org in the future. Feel free to give it a try on your project and let us know how it works for you!Development Drupal Site Building
Having more companies working with Drupal is a good and necessary thing, but it means we need to improve the way that we onboard, recognize, and differentiate those who help sustain and innovate Drupal.
A few weeks ago, I earned my first ever Drupal contribution credit for my DrupalCamp Colorado keynote. While I am oddly excited about that, I also find it somewhat ironic, as that keynote should not be mistaken for my first contribution to Drupal.
According to my Drupal.org profile, I’ve been a community member for over twelve years. In that time, I’ve presented keynotes for three other DrupalCamps, presented sessions and participated in panels going back to DrupalCon Boston 2008, led the RFP process for the redesign of Drupal.org, chaired DrupalCon Chicago 2011, served on the board of the Drupal Association for nine years and, most recently, served on the Executive Director Search committee. That is but a partial tally of my individual contributions; of course my company, Palantir.net, has also made considerable contributions of time, talent, and treasure over all these years.
Recognition is not my motivation for these efforts; like so many open source contributors, I give back to Drupal because I am committed to stepping up when I see a need or an opportunity. When I was new to the community, the karma earned from such efforts, code and non-code, was informally held in the living memory of those who were there. I always felt that I had earned the credibility and support of those with whom I collaborated closely to move on to the next opportunity, to tackle and solve the next problem. In many ways, as a woman on/of the internet, I appreciated the relative anonymity of it.
In that way, Drupal has become the largest independent community-driven open source project. And many of us believed that our collective success and the impact we made was enough to sustain the virtuous cycle of open source. But was it?
Open source has won: we now have legions of people and companies who rely on Drupal and other open source tools and products; however, these companies picked the best tool, which just happened to be an open source tool, and they don’t necessarily yet know the open source way. Twelve years ago, the Drupal community was small enough that those established norms and expectations were passed on person-to-person, along with the lore and the legends. The old ways of influencing behavior and enforcing norms through social bonds (aka peer pressure) aren’t strong or explicit enough for the swells of newcomers.
There is a lack of shared understanding, visibility, and support for what it takes to not just keep Drupal sustainable, but to have it thrive and win in a competitive landscape. This lack of clarity has led to the emergence of multiple subcultures within the commercial ecosystem and a worrying disparity between those who benefit the most from Drupal versus those who give the most.
In his Amsterdam 2014 keynote, Dries noted that while open source has a long history of credit (for code) to the individual contributors, this does not adequately recognize (or incentivize) the organizations. He proposed a simple way to give organizations credit in addition to individual credits for the core issues their teams either performed directly or sponsored, which the Drupal Association released in late 2015. Over time, this system has been expanded to capture more than just code contributions.
And yet, the contribution credit system has not wholly replaced karma. As my own experience shows, so much of the vital work that Drupal relies on is not yet captured in credits. Due to my privilege (not looking for a job, having well-established connections in the community, etc.), the lack of visibility was a feature, not a bug, for me as an individual contributor.
However, wearing my Palantir CEO hat I’ve come to realize that the failure to capture fully what and how companies do (and are expected to) contribute is far more problematic for the sustainability of the project. Some of the most essential work in the community (Drupal Association Board of Directors, the Community Working Group (CWG), the Security Team and non-code Core team work including release management, communication, sprint organizing, and overall project and initiative coordination) is severely undervalued or all-in-all ignored by the contribution system. George DeMet's ongoing commitments as the chair of the CWG often average anywhere from ¼ - ½ of his time (more at intense times) and over the last year he received four credits (the other members of the CWG received even less!). The community and the project suffer because this invisibility obscures, and indeed over time deteriorates, the community expectations and norms by measuring what is easy to measure, rather than what matters.
When Drupal 7 was released, the firms that built Drupal enjoyed a competitive advantage: those who wanted to use Drupal knew which firms meaningfully contributed and why it mattered. However, over the last five years, the Drupal ecosystem has expanded to include many new, larger firms that leveraged partnership and sponsorship programs to establish their Drupal credentials.
These programs and the new implementers and agencies they ushered into the Drupal community are essential to Drupal’s growth and adoption. They are a welcome addition to the ecosystem. However, there are serious problems with the ways that these programs have been structured to date and their unintended impact on our culture of contribution:
- Status within these programs is primarily pay-to-play and non-financial contributions to the project are not required.
- The programs do not directly support or indirectly incentivize the time or talent contributions on which the Drupal project depends.
- The financial proceeds of such programs benefit infrastructure initiatives (Drupal.org and more broadly the Association) and market visibility, which are not necessarily the areas of greatest need for the project or community.
- These programs have undermined the reputational system that prioritized successful outcomes (successful client implementations AND contributions back to the project) and replaced it with one that favored outputs (financial success and client list).
Allowing companies to position themselves as leading experts in Drupal without validation that these firms are contributing commensurate with the benefits derived from Drupal has been corrosive to the sustainability of the project. This has tacitly supported the commoditization of Drupal services, devalued the competitive advantage received from direct contribution, and simultaneously incentivized and conditioned all in the ecosystem to increase indirect contribution (sponsorship and advertising on Drupal.org and events including DrupalCon).
As I noted on a panel at OSCON, I see all of this as a success problem. Having more companies, including large scale implementers and agencies, working with Drupal is a good and necessary thing. What we need to improve is the way that we onboard, recognize, and differentiate those who help sustain and innovate Drupal to (re)establish a culture of contribution for Drupal. Doing this well will involve creating new and easy-to-access avenues for contribution that match the project’s weighted needs and companies’ available resources (be they time, talent or treasure). A concerted focus on what matters will shore up Drupal’s path to long-term sustainability.Community Drupal Open Source People
This module provides a way to show a message on a form
when editing something and leaving without submitting.
Based on https://www.drupal.org/project/node_edit_protection
But allows you to add the form alert on any form.
A small module for a quick start on theming the "Not found" and "Access denied" error pages. Adds multiple helper theme hooks for error 404 and 403 pages:
- Adds error404 and error403 body classes
- Adds theme hook suggestions such as: page--4xx.html.twig, page--403.html.twig and page--404.html.twig
Enable the module, clear the cache and you are good to go!
This module provides support for webform -> entity construction.
This module does nothing on its own.WebformHandler
We provide a webform handler that is attached to the webform and, when the form has been completed, it compiles the data and launches a delayed event using the event_scheduler module.
The delayed event means that the work on constructing the entity from the webform data takes place after the current page has been sent to the user. It provides better UX with less delay.
Provides an event-based system for checking file access and file
downloadability plus file copying and removal.
This module does nothing on its own and is for developers to simplify their
task when deciding whether a file can be displayed or downloaded.
Client modules should have event subscribers for either (or both):
Happy New Year, everyone! If you’re not willing to let go of the holiday spirit just yet, you’re in luck - we’ve prepared an overview of our favorite Drupal blog posts from December. We hope you enjoy revisiting them!READ MORE
Mike and Matt talk with the leads of Drupal's "Automatic Updates" initiative to discuss the security, limitations, status, and gotchas of automatic updates.
Consider the following case: You copy a live site to a dev site and develop on it. If you (for whatever reasons) access the site without https, and login with your admin credentials, your live site is potentially compromised.
This module prevents this. Note that you can still login to a dev site via drush uli.
We're thrilled to announce that we will be back in Berkeley on October 14th - 17th, 2020!
We are stoked to be returning to The Hotel Shattuck for 4 days of roaring sessions, training classes, summits, sponsors, and parties for all you flappers, philosophers, and Drupallers!
We’re still working on all the details, so if you want to follow along with news hot off the presses, sign up for our mailing list!
As 2019 comes to an end and we wrap up another decade of Drupalling, we’re excited to announce another BADCamp that’s sure to be the bee’s knees, and invite you to join us over at 2020.badcamp.org. We'll be back in Berkeley on October 14th - 17th, 2020!
We are stoked to be returning to The Hotel Shattuck for 4 days of roaring sessions, training classes, summits, sponsors, and parties for all you flappers, philosophers, and Drupallers!Drupal Planet