Feeds
Acquia.com - Drupal Blog: Final Takeaways from DrupalCon Lille
Acquia.com - Drupal Blog: All Eyes on AI at DrupalCon Lille
Acquia.com - Drupal Blog: DrupalCon Lille: Why Accessibility and Inclusion Matter
Acquia.com - Drupal Blog: Driesnote Lille 2023: Recapping the Tale of Drupal
Matt Layman: Flash messages and content encodings - Building SaaS with Python and Django #188
Krita Monthly Update – Edition 14
Welcome to the latest development and community news curated for you by the Krita-promo team.
Development reportOfficial Recap of February’s Online Development Meeting
Last month we provided highlights of the video meeting led by Halla, Krita’s Maintainer. She has since published a post on Krita.org presenting the challenges and opportunities that came out of that meeting.
One of the largest projects this year is porting Krita from Qt5 to Qt6 (Qt is the framework upon which Krita is built). This is a major change and will require serious development time. We invite you to read more about the considerations of this project as well as other ideas the Krita team is currently discussing and changes that have taken place within Krita’s development team. You can access it here.
Highlights of this month-
YRH tackled a feature request to prevent the canvas from shifting position when toggling canvas-only mode. Deif_Lou assisted by also merging a fix addressing a jump in canvas position.
-
Grum999 identified an opportunity to improve grids and guides management such that settings are now saved in Krita documents. The grid offset on/off toggle was improved so that user settings are retained. Isometric grids may now be measured more accurately (Note: the original code was preserved and is now called “Isometric Legacy” to ensure compatibility with older documents).
-
The most recent text tool merge from Wolthera for 5.3 means Krita can now store units (relative units for letter spacing and font size). Wolthera reports that about half the properties are now implemented.
There should have been a video here but your browser does not seem to support it. (Video created by Wolthera)
-
Stable and unstable nightly builds are back following the migration to GitLab CI, with the exception of macOS which is being worked on. On Android, Krita will no longer be built for the 32-bit x86 architecture.
Krita-Artists members outdid themselves by creating 41 images for Mythmaker’s challenge: Marvellous Metal. The quality and calibre of the entries made it tough to choose only two when it was time to vote. Elixiah emerged the winner with these two images:
Vintage Forgotten Ford by elixiah Wildkat-Engine by elixiahElixiah asked MangooSalade and jimplex, who tied for second place, to choose the April challenge and they have come up with a good one! Our new topic is Animal Curiosity and this time there is an additional challenge. Read all about it here.
We’re Asking for Ideas
Mythmaker started a very positive conversation about improving the way images are selected for the featured artwork banner on krita-artists.org website. We have had nomination processes in place for some time which have been somewhat effective (and you’ll see the results of our first featured artwork poll in the next section) but we haven’t landed on a system that makes it easy to nominate artwork and is manageable administratively. Take a glance at some of the proposed ideas – something in there might trigger a new idea for you to share.
Featured artworkWe held our very first monthly poll for the Krita-Artists featured artwork banner. Five images were added to the banner so thank you for nominating and voting. Dragon Courier by desenhunos was the #1 pick.
The March/April nomination thread will be open until April 10, 2024. Here’s how you can participate.
Noteworthy pluginHCL Sliders by Lucifer “HCL Sliders is a color slider plugin with various hue/colorfulness/lightness models for use with the sRGB color profile and its linear counterpart.” More details about the plugin’s capabilities can be found in Lucifer’s post.
Tutorial of the month
Wrap Around Mode by David Revoy In just two minutes, you’ll learn what makes this feature so powerful.
Notable changes in codeThis section has been compiled by freyalupen. Mar 6 - Mar 31, 2024
Stable branch (5.2.2+):Bugfixes:
- File Formats: PNG - Fix lines in export of 32-bit CMYK images to PNG, by preventing multiple color conversions. (BUG:475737) (merge request, Rasyuqa A H (Kampidh))
- Usability - Fix a jump in canvas position when panning after going to Canvas-Only mode. (commit, Deif Lou)
- Linux: KDE Plasma - Fix Krita's menu not appearing in Plasma's global menu. (BUG:483170) (merge request, Halla Rempt)
- Text Tool - Fix a crash when pasting font family name into rich text editor and saving changes without hitting enter first. (BUG:484066) (merge request, Igor Danilets)
Features:
- General - Tweak the Welcome Page. New/Open File labels moved beside the icons. Recent file thumbnails have a tinted background. (merge request, Agata Cacko)
- General - Remove the development fund banner from the Welcome Page, as it was ineffective. (commit, Halla Rempt)
Features:
- Text - Allow keeping track of relative font units (em). (merge request, Wolthera van Hövell)
- Enclose and Fill Tool - Support gap closing in the Enclose and Fill tool. (commit, Deif Lou)
- Enclose and Fill Tool - Add "Include contour regions" option to the "All regions" method in the Enclose and Fill tool. (commit, Deif Lou)
- Vector Layers - Add an option to disable/enable anti-aliasing on Vector Layers. (merge request 1, merge request 2, Grum 999)
- Grids and Guides Docker - Various improvements to Grid and Guides. Grid and Guide properties are now saved into .kra files. New type of isometric grid that ensures the cell lengths match. (merge request, Grum 999)
- Animation Dockers - Add Lock Docker button to animation dockers. (merge request, reinold rojas)
- Scripting - Add various methods to Scratchpad API related to fill, zoom, and pan. (merge request, Grum 999)
Bugfixes:
- Layer Stack- Fix a crash when using color labeled layers as a reference for selection if color label includes a mask. (BUG:480601) (commit, Deif Lou)
- SVG - Fix saving 'paint-order' tag for non-text shapes. (commit, Dmitry Kazakov)
- Wide Gamut Color Selector- Fix Wide Gamut Color Selector shortcut popup closing immediately if the cursor is moving while triggering it. (merge request, reinold rojas)
- Usability - When switching to and from Canvas Only mode, keep the canvas in the same position. (merge request, Maciej Jesionowski)
These changes are made available for testing in the following builds:
- Stable "Krita Plus" (5.2.2+): Linux - Windows - Android (arm64-v8a / arm32-v7a / x86_64)
- Unstable "Krita Next" (5.3.0-prealpha): Linux - Windows - Android (arm64-v8a / arm32-v7a / x86_64)
(macOS builds will be available in the future.)
Like what we are doing? Help support usKrita is a free and open source project. Please consider supporting the project with donations or by buying training videos or the artbook! With your support, we can keep the core team working on Krita full-time.
Donate Buy somethingBits from Debian: proxmox Platinum Sponsor of DebConf24
We are pleased to announce that Proxmox has committed to sponsor DebConf24 as a Platinum Sponsor.
Proxmox provides powerful and user-friendly open-source server software. Enterprises of all sizes and industries use Proxmox solutions to deploy efficient and simplified IT infrastructures, minimize total cost of ownership, and avoid vendor lock-in. Proxmox also offers commercial support, training services, and an extensive partner ecosystem to ensure business continuity for its customers. Proxmox Server Solutions GmbH was established in 2005 and is headquartered in Vienna, Austria.
Proxmox's product offerings are built on top of the Debian operating system.
With this commitment as Platinum Sponsor, Proxmox is contributing to make possible our annual conference, and directly supporting the progress of Debian and Free Software, helping to strengthen the community that continues to collaborate on Debian projects throughout the rest of the year.
Thank you very much, Proxmox, for your support of DebConf24!
Become a sponsor too!DebConf24 will take place from 28th July to 4th August 2024 in Busan, South Korea, and will be preceded by DebCamp, from 21st to 27th July 2024.
DebConf24 is accepting sponsors! Interested companies and organizations may contact the DebConf team through sponsors@debconf.org, or visit the Become a DebConf Sponsor website.
Qt Creator 13 released
We are happy to announce the release of Qt Creator 13!
Dropsolid Experience Cloud: 10 things you probably didn’t know about Drupal
Dropsolid Experience Cloud: Mautic for Developers: connecting Drupal content to Mautic email marketing
Dropsolid Experience Cloud: Everything you need to know about headless Drupal
Dropsolid Experience Cloud: How to add metatags to your headless Drupal project
Dropsolid Experience Cloud: The road to fully headless Drupal
Dropsolid Experience Cloud: Dropsolid DXP, the most open Drupal powered DXP for enterprises with a low entry barrier
Dropsolid Experience Cloud: What is a Digital Experience Platform (DXP) and why do you need one?
The Drop Times: Navigating the Currents of Change: The Multidimensional Journey of Preston So
The Drop Times: TDT Named Official Media Partner of DrupalCon Barcelona
The Drop Times: TDT an Official Media Partner for Drupal Iberia 2024
Drupal Atlanta Medium Publication: How to Configure the SMTP Module in Drupal 10 with Gmail, Since Google Removed Less Secure Apps
To ensure your Drupal 10 website can send emails, like password reset links, you must configure the SMTP Module, especially after Google’s policy change on September 30, 2024, which prohibits the use of less secure apps. This guide will show you how to set up the SMTP Module in Drupal 10 for sending password reset emails and other form submissions via Gmail.
Before you begin, ensure you have the necessary tools. You will need Composer and Drush installed on your computer. Additionally, you must have access to a Gmail account and its password, which will be used to send the emails. Follow these steps to configure SMTP in Drupal 10, ensuring your site’s email functionality is uninterrupted by Google’s security updates.
Note: The instructions below are for a standard Gmail and have not been tested on a Google Workspace email address.
Download and Enable the Module- First, you must download and enable the module.
- We are going to use composer to download and then a drush command to enable it. Or you could just enable the module in the
drush en smtp -yConfigure the SMTP Module in Drupal
- Navigate to the configuration page admin/config/system/smtp
- Under Turn this module on or off select On.
- Under SMTP server enter the following smtp.gmail.com. Leave SMTP backup server blank
- Under SMTP port enter 587
- Under Use encrypted protocol select Use TLS
- Under E-MAIL OPTIONS use the same Gmail address as you did above and enter an E-mail from name
- Login to your Gmail account at https://myaccount.google.com/
- On the account homepage, click Sign-in & security or navigate to https://myaccount.google.com/security
- Turn on 2-factor authentication and enter your phone numbers
- Visit https://myaccount.google.com/apppasswords
- Name your app — XYZ Drupal Website
- Copy the password and enter this password into the SMTP Module password location.
How to Configure the SMTP Module in Drupal 10 with Gmail, Since Google Removed Less Secure Apps was originally published in Drupal Atlanta on Medium, where people are continuing the conversation by highlighting and responding to this story.
ComputerMinds.co.uk: Format Drush output for easy wins!
Drush, the brilliant command-line tool for Drupal, is capable of giving you its output in several ways. Its global --format parameter can be set to a type that you can use in useful ways. Most recently, I found this incredibly useful when I had made some configuration changes through Drupal's admin pages, and needed to then script those changes to automatically apply to hundreds of sites on a platform we manage.
I simply asked Drush for the value of the configuration I had set, formatted as the PHP code to set those values. Then I could drop that into our PHP automatic update script. Here are two examples - one getting just a single property of a block placement, and another for the whole settings object for a module.
# Get the visibility conditions of my block. drush config:get block.block.myblock visibility --format=var_export # Get the whole settings singleton for my module. drush config:get mymodule.settings --format=var_exportThe var_export format provides the output using PHP's traditional array syntax, instead of the default YAML (which matches the format of config export files). Here's an example of the output for another type of configuration, an action:
array ( 'uuid' => 'faaaea7f-d377-4b9c-bbfb-bd1b9c562050', 'langcode' => 'en', 'status' => true, 'dependencies' => array ( 'module' => array ( 0 => 'mymodule', ), ), '_core' => array ( 'default_config_hash' => 'vvt7bzrXEwxrTfY--axzCfSRPzggH0o4hahUY9Kh0z0', ), 'id' => 'mymodule_foo_action', 'label' => 'An example action', 'type' => 'webform', 'plugin' => 'mymodule_foo_action', 'configuration' => array ( ), )Then I could just copy the output and paste it into a post-update hook. My IDE makes it easier to prettify the code to match Drupal's coding standards and switch to PHP's newer short array syntax. I also removed all the bits that I could leave to be dynamic; like the uuid, _core, and empty configuration properties in the action example above. I can then either use the entity storage for my type of entity to save the configuration, or just use the Configuration Factory service more directly:
$data = // (Paste & adapt the output from drush for this variable.) // Example of using the config factory. $config = \Drupal::configFactory()->getEditable('block.block.myblock'); // Using `setData()` will replace the entire config array. We could instead // use `set()` for individual properties. $config->setData($data)->save(); // Alternatively use the entity type storage and specific methods, when // available. Create new entities with `$storage->create($settings)->save()`. $storage = \Drupal::entityTypeManager()->getStorage('block'); $storage->load('myblock')->set('settings', $data['settings'])->save();We tend to automate Drupal core's configuration management on most of our projects - but not always. Even where we don't, there is usually some config that we exclude from the automated management - usually to allow clients to make changes in the admin UI without needing to access the codebase. So this is a handy trick to have available when you just need to script some changes outside of config management.
Under the hood, the consolidation/output-formatters library is what provides output formatters. If you run drush help version you can get a list of other standard formatters, which includes:
-
yaml
-
The key-value format usually used for configuration exports.
-
csv
-
Comma-separated values; ideal for simple lists
-
php
-
The format that PHP's internal serialize() method produces.
-
var_dump
-
Probably my new favourite; as produces coloured syntax highlighting in the terminal output! It is powered by Symfony's VarDumper component. I have found this particularly useful recently when debugging the output from a remote API endpoint, to help me visually parse clumps of output.
As a bonus, this can be useful for quickly loading up an entity to inspect its field values:
getStorage('taxonomy_term')->load(11)->toArray());" --format=var_dump`" data-entity-type="file" data-entity-uuid="9930f0b8-e138-4ae8-8432-1e42a2e7086b" src="https://www.computerminds.co.uk/sites/default/files/inline-images/drush-var-dumping.png" width="692" height="834" loading="lazy" /> My output from drush php-eval "return array_filter(\\Drupal::entityTypeManager()->getStorage('subscriber')->load(127)->toArray());" --format=var_dump
...which feels rather like a good case for a custom drush command, just taking an entity type and ID as arguments ;-)
What other handy uses of specifying an output format can you come up with? Let me know!