All RPGs and Storygames by Tod Foley are now available at DrivethruRPG and RPGnow. Bring these games to your table!
Redirect users to the their cart just after they add a product to it.
DrupalCon been a very productive conference so far. The first two days of pre-conference sprinting resulted in fixing the testing pipeline of the webpack module, a prototype for using Drupal as a datasource for Gatsby using GraphQL instead of JSON:API and even solved an unexpected issue for the devel module to provide a way to load dump an entity with all its references embedded inside. You can read more about these solutions here.Blazej Owczarczyk Fri, 04/12/2019 - 17:45
After a good Wednesday afternoon, breathing in the calming air of Seattle, Thursday came and it started for me with a breakfast with Victor. He ordered his favourite meal - the Fresh French Croissant and after a short meal, we headed to the venue.
I decided to start the day with the Web components BoF led by Salem Ghoweri. Pega systems use web components a lot and it was interesting to learn about the advantages and pitfalls. IE 11 seems to be the biggest obstacle, especially when it comes to the shadow dom. Polyfilling it is very expensive computationally, so what they did is to actually ditch the shadow dow in browsers that don’t support it natively. In general, looks like web components are getting traction and IE is the main problem, so same as 5 years ago.
The next spot was the GraphQL 101: What, Why, How session by my friend Maria Comas. It started with a brief history of the query language followed by its definition.
I learned that the reason to build the GraphQL spec at Facebook was because of the need to find a tool that is powerful enough to handle everything Facebook does while staying simple enough so that it’s easy to comprehend by the product developers. The thing Maria likes most about GraphQL is that it is a tool that changes human behaviour.
The session finished on time and there were hardly any questions so we had time to get the best seats for the next Amazee session: CSS-in-JS and Drupal sitting in a tree... by John Albin Wilkins. On our way there Victor, grave as always decided to make use of his hipster camera and take this photo of me. No comment.
John is a natural so his sessions are always entertaining and packed with great content. In this one, he compared 3 different ways of doing CSS-in-js which are:
CSS in object literals
CSS in template literals and
CSS in files (CSS modules)
After that, I headed to the Considerations of Federated Search and Drupal session by Adam Bergstein. The ability to find content that originates from many different websites is a hard topic which is required by the enterprise clients quite often, so I thought it might be interesting.
Nerdstein started with a high level, generic overview of the system. The structure is similar to what we have in Drupal migrations. He recommended using scrapy. It’s a tool from the python ecosystem which is great because there are many great data manipulation and natural language processing packages. Scrapy also has many destination plugins, e.g. for elastic search, so it’s easy to insert data directly into the search index.
Next, there was lunch and an unexpected booth on the way there - a box with cute, fluffy creatures.
I’m not really sure how they ended up there but they definitely made lots of people happy. Here are some photos. Hopefully, they will make you happy as well.
This module provides recaptcha validation for configured routes. It adds access requirement for the configured routes. The access check service validates responce of recaptcha.
Its main use case is to provide a flexible lean implementation that can deal with extremely large taxonomies, using dynamic loading of tree levels.
We'll be spending the day removing deprecated code from Drupal 8 contributed modules to get them ready for Drupal 9.
Here's how you can participate! (Whether in-person or remotely!)
- Pull up the getting started info at https://tiny.cc/d9readiness and get set up with the drupal-check tool to check your code.
- Join the #d9readiness channel on Drupal Slack.
- Check the list of issues tagged Drupal 9 compatibility + Seattle2019 (or use your own module!)
- Fix 'em and upload a patch! There are tips and tricks on the most common ones at https://github.com/mglaman/drupal-check/wiki/Deprecation-Error-Solutions, and the list of change records have the full details for any given change.
If you're a module developer who would like to "opt in" to having your module reviewed / patched by a new contributor, please create (or find an existing) issue with the Drupal 9 compatibility + Seattle2019 tags!Tags: drupalconSeattle2019drupal 8drupal 9drupal
For us, the Paragraphs module is the holy grail of structured content creation.
With Paragraphs it is relatively uncomplicated to define prefabricated content elements that define the structure of the corresponding content. These can then simply be placed in the desired content by editors.
Behavior-driven development is a great way to write tests for code because it uses language that real humans can understand. Once you learn about BDD and its benefits, you may want to implement it in your next project. Let's see how to implement BDD in Drupal using Behat with the Mink extension.
With Drupal 9 targeted to be released in June of 2020, many people are wondering what they need to do to prepare.
The good and important news is that upgrading from Drupal 8 to Drupal 9 should be really easy — radically easier than upgrading from Drupal 7 to Drupal 8.
The only caveat is that you need to manage "deprecated code" well.
If your site doesn't use deprecated code that is scheduled for removal in Drupal 9, your upgrade to Drupal 9 will be easy. In fact, it should be as easy as a minor version upgrade (like upgrading from Drupal 8.6 to Drupal 8.7).What is deprecated code?
Code in Drupal is marked as "deprecated" when it should no longer be used. Typically, code is deprecated because there is a better alternative that should be used instead.
For example, in Drupal 8.0.0, we deprecated \Drupal::l($text, $url). Instead of using \Drupal::l(), you should use Link::fromTextAndUrl($text, $url). The \Drupal::l() function was marked for removal as part of some clean-up work; Drupal 8 had too many ways to generate links.
Deprecated code will continue to work for some time before it gets removed. For example, \Drupal::l() continues to work in Drupal 8.7 despite the fact that it was deprecated in Drupal 8.0.0 more than three years ago. This gives module maintainers ample time to update their code.
When we release Drupal 9, we will "drop" most deprecated code. In our example, this means that \Drupal::l() will not be available anymore in Drupal 9.
In other words:
- Any Drupal 8 module that does not use deprecated code will continue to work with Drupal 9.
- Any Drupal 8 module that uses deprecated code needs to be updated before Drupal 9 is released, or it will stop working with Drupal 9.
If you're interested, you can read more about Drupal's deprecation policy at https://www.drupal.org/core/deprecation.How do I know if my site uses deprecated code?
There are a few ways to check if your site is using deprecated code.
If you work on a Drupal site as a developer, run drupal-check. Matt Glaman (Centarro) developed a static PHP analysis tool called drupal-check, which you can run against your codebase to check for deprecated code. I recommend running drupal-check in an automated fashion as part of your development workflow.
If you are a site owner, install the Upgrade Status module. This module was built by Acquia. The module provides a graphical user interface on top of drupal-check. The goal is to provide an easy-to-use readiness assessment for your site's migration to Drupal 9.
If you maintain a project on Drupal.org, enable Drupal.org's testing infrastructure to detect the use of deprecated code. There are two complementary ways to do so: you can run a static deprecation analysis and/or configure your existing tests to fail when calling deprecated code. Both can be set up in your drupalci.yml configuration file.
If you find deprecated code in a contributed module used on your site, consider filing an issue in the module's issue queue on Drupal.org (after having checked no issue has been created yet). If you can, provide a patch to fix the deprecation and engage with the maintainer to get it committed.How hard is it to update my code?
While there are some deprecations that require more detailed refactoring, many are a simple matter of search-and-replace.
You can check the API documentation for instructions on how to remedy the deprecation.When can I start updating my code?
I encourage you to start today. When you update your Drupal 8 code to use the latest and greatest APIs, you can benefit from those improvements immediately. There is no reason to wait until Drupal 9 is released.
Drupal 8.8.0 will be the last release to deprecate for Drupal 9. Today, we don't know the full set of deprecations yet.How much time do I have to update my code?
Contributed module maintainers are encouraged to remove the use of deprecated code by June of 2020 so everyone can upgrade to Drupal 9 the day it is released.
Drupal.org project maintainers should keep the extended security coverage policy in mind, which means that Drupal 8.8 will still be supported until Drupal 9.1 is released. Contributed projects looking to support both Drupal 8.8 and Drupal 9.0 might need to use two branches.How ready are the contributed modules?
As it stands today, 44% of the modules have no deprecation warnings. The remaining 56% of the modules need to be updated, but the majority have less than three deprecation warnings.
With the Twig templates replacing the old PHP templates, Drupal has been brought to a whole new “era”. We can now leverage the advantages of a component-based development in Drupal 8. But what does that mean, more precisely?
How does this (not so) new approach in software development benefit you? Your own team of developers...
And everyone's talking about tones of flexibility being unlocked and about the Twig templates' extensibility. About how front-end developers, even those with little knowledge of Drupal, specialized in various languages, can now... “come right on board”. Since they're already familiar with the Twig engine...
Also, we can't ignore all the hype around the advantage of the streamlined development cycles in Drupal and of the consistent user experience across a whole portfolio of Drupal apps/websites.
When conversations began a few months back about DrupalCon Seattle, I was so thrilled about the prospect of heading west and being fully indoctrinated with all things Drupal for the first time! As a newcomer to the field, I have been eager to simply be surrounded by, and learn from, so many in this community. Additionally, DrupalCon is providing the perfect opportunity to hang out with some incredible colleagues.Liz Lockwood Thu, 04/11/2019 - 18:02 The Day Begins: People
The feel of day three was noticeably more vibrant as the surge of conference attendees began to fill the halls of the Washington State Convention Center. It’s been great to see representation from all over the country and be surrounded by an association with such rich diversity.
I learned quickly that there is no lack of learning opportunities at DrupalCon. The number of sessions to choose from felt like a buffet for your mind -- where you could pick and choose, and tailor your experience to be as uniquely tailored to you as you want.
I chose sessions that I knew would provide helpful reminders to me on practices and processes I already have in place, as well as topics in which I simply want to increase my awareness or hear a different perspective.Wednesday Learnings
Much of the late morning to the afternoon was spent in periodic spurts of catching up on work, popping into sessions and dropping by our booth. Here are a few of the sessions I went to, with three key learnings from each:
Getting an Angry Wet Cat to Purr: Turning an Unhealthy Client Relationship Into a Productive One (Donna Bungard, Project Strategist at Tandem)
Communication: Everything comes down to having an open, honest, direct conversation. This is the key manner in which you build trust with your team.
Hearing is good. Understanding is better.
There are always the next steps to be taken. You simply need to identify them.
Lead, Follow or Get out of the Way: Managing Global Teams Harmoniously (Yuriy Gerasimov, Organizer at Drupal Ukraine Community and Clyde Boyer)
Active Trust is foundational to team success.
A common mistake on distributed teams is not recognizing isolation in your team members. Take notice if the communication style of a team member changes (this may point to something not being well in their world).
You don’t talk your way to trust. You have to earn it, mostly with time.
Design Strategies: Our Process for Building User-centered Websites (Valerie Neumark Mickela, Board Member at Full Circle Funds and Andrew Goldsworthy, Co-Founder at Rootid)
(I actually sat down in this session by mistake, but by the time I realized, it was too late to leave without causing disruption . . . it wouldn’t be a full conference experience without a mishap along the way, right?!)
Design and development communications can be challenging: You absolutely cannot rely on assumptions.
In design, you are most often thinking through a psychological lens, versus a creative one.
When considering a feature, don’t ask “Is it possible?” (all things are possible with time and money!) Ask “Is it hard?” (this will provide a more realistic barometer for time and cost)
Finding Your Way: Practical Strategies for Navigating Your Career (Gus Childs, Senior Software Engineer at Mondo Robot)
Be selfish with your career - you should be doing work that’s fulfilling.
You should be excited about these three things when it comes to your career: People, Projects and Money.
Never burn bridges.
The awards ceremony was held at a beautiful location, inside a music venue called The Triple Door, just a couple blocks from the Pike Place Market. After being at the conference for a few days, meeting new friends and getting to know my colleagues better, Splash Awards was a perfect opportunity to catch up and talk about work and life with everyone who attended. While Amazee did not walk away with any awards, it was really fun to celebrate with others, and celebrate the incredible Amazee work that was nominated:
From the Splash Awards, we walked over to Spin Seattle for one of the evening parties. Spin was packed from wall-to-wall with conference attendees and was a really fun way to end the day.
In closing, I will just say that I have been really encouraged by how warm the Drupal community is, and am so grateful for the opportunity to be at DrupalCon Seattle 2019.
Work in progress.
Participatory process to vote ideas and expose participation results.
I am proud to announce that the 2nd edition of my book, Drupal 8 module development, was recently published. I’ve been working on this in the past few months and it has kept me quite busy.
The purpose of this update is to bring all the code and practices covered in the first version up to date with the newest version of Drupal 8. That is 8.7. I know. It’s not even released yet but everything you find in the new book should work with 8.7 already. I’ve been following the change records quite closely during this cycle. If, however, you do discover any issues or that I'm peddling some deprecated code, I’d appreciate an errata report.
Since 8.2 (the focus of the first version), there were quite a few changes in Drupal. There were some new things pertinent to this book, but also quite a lot of changes in practices that resulted in deprecated classes and functions. It’s important to keep up to date with these things. Why? Because Drupal 9 will basically be the latest version of Drupal 8 without all the deprecated code. So if you keep up to date, you won’t have such a big problem upgrading to Drupal 9. Read this blog post from Dries Buytaert on the plans for Drupal 9 to get more details on what I mean. Ah, and did I mention that he was kind enough to write the foreword for my book? So make sure you check that out as well.
Enjoy the book and a million thanks for the support! As usual, you can buy it from lots of places.
Details to follow :)Video: Conference: DrupalCon SeattleLocation: Seattle, WA, United StatesDuration: 30 minutesExtra information:
Same as every month, we wanted to share with you our favorite Drupal blog posts from the previous month. So, here's a list of 8 Drupal-related posts from March that we found the most interesting. Enjoy!READ MORE
Workbench Menu Access is an extension module that applies Workbench Access logic to menus.
This module adds access controls to menu editing and the menu links within a specific menu, both in stand-alone and node-editing contexts.
In Open Source, there is a long-held belief in meritocracy, or the idea that the best work rises to the top, regardless of who contributes it. The problem is that a meritocracy assumes an equal distribution of time for everyone in a community.Open Source is not a meritocracy
I incorrectly made this assumption myself, saying: The only real limitation [to Open Source contribution] is your willingness to learn.
Today, I've come to understand that inequality makes it difficult for underrepresented groups to have the "free time" it takes to contribute to Open Source.
For example, research shows that women still spend more than double the time as men doing unpaid domestic work, such as housework or childcare. I've heard from some of my colleagues that they need to optimize every minute of time they don't spend working, which makes it more difficult to contribute to Open Source on an unpaid, volunteer basis.
Or, in other cases, many people's economic conditions require them to work more hours or several jobs in order to support themselves or their families.
Systemic issues like racial and gender wage gaps continue to plague underrepresented groups, and it's both unfair and impractical to assume that these groups of people have the same amount of free time to contribute to Open Source projects, if they have any at all.
What this means is that Open Source is not a meritocracy.
Free time is a mark of privilege, rather than an equal right. Instead of chasing an unrealistic concept of meritocracy, we should be striving for equity. Rather than thinking, "everyone can contribute to open source", we should be thinking, "everyone deserves the opportunity to contribute".Time inequality contributes to a lack of diversity in Open Source
This fallacy of "free time" makes Open Source communities suffer from a lack of diversity. The demographics are even worse than the technology industry overall: while 22.6% of professional computer programmers in the workforce identify as women (Bureau of Labor Statistics), less than 5% of contributors do in Open Source (GitHub). And while 34% of programmers identify as ethnic or national minorities (Bureau of Labor Statistics), only 16% do in Open Source (GitHub).
It's important to note that time isn't the only factor; sometimes a hostile culture or unconscious bias play a part in limiting diversity. According to the same GitHub survey cited above, 21% of people who experienced negative behavior stopped contributing to Open Source projects altogether. Other recent research showed that women's pull requests were more likely to get accepted if they had a gender-neutral username. Unfortunately, examples like these are common.Taking action: giving time to underrepresented groups
While it's impossible to fix decades of gender and racial inequality with any single action, we must do better. Those in a position to help have an obligation to improve the lives of others. We should not only invite underrepresented groups into our Open Source communities, but make sure that they are welcomed, supported and empowered. One way to help is with time:
- As individuals, by making sure you are intentionally welcoming people from underrepresented groups, through both outreach and actions. If you're in a community organizing position, encourage and make space for people from underrepresented groups to give talks or lead sprints about the work they're interested in. Or if you're asked to, mentor an underrepresented contributor.
- As organizations in the Open Source ecosystem, by giving people more paid time to contribute.
Taking the extra effort to help onboard new members or provide added detail when reviewing code changes can be invaluable to community members who don't have an abundance of free time. Overall, being kinder, more patient and more supportive to others could go a long way in welcoming more people to Open Source.
In addition, organizations within the Open Source ecosystem capable of giving back should consider financially sponsoring underrepresented groups to contribute to Open Source. Sponsorship can look like full or part-time employment, an internship or giving to organizations like Girls Who Code, Code2040, Resilient Coders or one of the many others that support diversity in technology. Even a few hours of paid time during the workweek for underrepresented employees could help them contribute more to Open Source.Applying the lessons to Drupal
Over the years, I've learned a lot from different people's perspectives. Learning out in the open is not always easy, but it's been an important part of my personal journey.
Knowing that Drupal is one of the largest and most influential Open Source projects, I find it important that we lead by example.
I encourage individuals and organizations in the Drupal community to strongly consider giving time and opportunities to underrepresented groups. You can start in places like:
- Drupal Core Mentoring to inspire, enable and encourage new contributors to get involved.
- The Drupal Diversity and Inclusion Contribution Team.
- The Drupal Apprentice Initiative by TalentPath, which helps organizations build a diverse talent pipeline through apprenticeships.
When we have more diverse people contributing to Drupal, it will not only inject a spark of energy, but it will also help us make better, more accessible, inclusive software for everyone in the world.
Each of us needs to decide if and how we can help to create equity for everyone in Drupal. Not only is it good for business, it's good for people, and it's the right thing to do.
Special thanks to the Drupal Diversity and Inclusion group for discussing this topic with me. Ashe Dryden's thought-leadership indirectly influenced this piece. If you are interested in this topic, I recommend you check out Ashe's blog post The Ethics of Unpaid Labor and the OSS Community.