FLOSS Project Planets

File modes in C++20

Planet KDE - Mon, 2024-04-29 18:00

I was looking at some code that sets file permissions – file modes – by calling chmod(2). The command-line chmod(1) has a bunch of possibilities for setting permissions, but the underlying system-call needs an int, and the C headers for it are annoying to use. So I fired up some C++ machinery to “make it nicer to use”.

tl;dr: scroll to the bottom for a compile-time, compact way of writing file permissions so that chmod(filename, "rwx--x--x"_mode) does something plausible, with good error messages in case of typo’s.

The manpage for chmod(1) is fairly extensive. There are two ways to specify a file mode, either in octal or symbolically. Octal is just a number, symbolically is much more complicated.

On the C API side, the manpage for chmod(2) shows you need a pathname and a mode, and there are a whole bunch of symbolic constants to use, like S_IRUSR.

How I think about file modes

It turns out I nearly always think about file modes in octal. I have somehow internalized things like “755 for executables” and “666 for crap” and “600 for files in ~/.ssh” but I don’t really have names for these things. If I think about it, I can use the symbolic manipulations like ugo+rw for crap. But I don’t see permissions in this symbolic form, and the octal form is persnickety in C source, probably because I don’t expect everyone to know “leading 0 means octal”.

But there is a form in which I see file modes every day: the output from ls -l, where permissions are shown with 10 characters, the first 10 on this line:

-rw-r--r-- 1 adridg users 0 Apr 30 11:46 example.txt

The first - says something about the type of file and is - for regular files, d for directories, l for symbolic links, and there are others, too. That’s not really the mode, though, while the next 9 characters are: each group of three shows r, w, and x in that order, or a - in each position, indicating the read, write, or execute bit for the corresponding class of logins. The first three are the current user, next three are group, the last three for others.

The C code to call chmod with this mode looks like

chmod("example.txt", 0644); chmod("example.txt", S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);

One is octal-arcane and the other is just arcane and hard-to-read.

Turning readable modes into numbers

So I thought to myself: I can write a C++ function that turns the 9-characters of the mode in text form, into an actual mode_t value (that’s an integer).

That’s a trivial exercise, really, although it gets a bit persnickety in error handling. I would just throw on an incorrect length, or any incorrect character, and leave it at that.

From there, though, I went on to: I can write a consteval C++ function that does the computation at compile-time (guaranteed to be only at compile-time, because consteval). This is a function that can only be called with a compile-time string literal, so the function signature is potentially:

consteval mode_t from_readable_mode(const char (&permission_string)[10])

The array-reference is to 10 characters because there are 9 mode characters, and then a trailing NUL byte (zero) in a string literal. This function can be called (in the context, sill, of chmod()) like so:

chmod("example.txt", from_readable_mode("rw-r--r--"));

and at compile-time that is already computed to be 420 (that’s 0644 octal).

The last step of make-it-cool (for an appropriate value of “cool”) is to turn the whole thing into a user-defined literal. In my source code I can now write

chmod("example.txt", "rw-r--r--"_mode);

Which really satisfies my own desire for “readable, compact, compile-time”.

Don’t get me started on Qt

For some reason, the values of QFileDevice::Permission are in hexadecimal, but written as hex, look like the corresponding octal values. So in Qt code if you don’t use the symbolic representation of the flags, and just go ram an integer into there, you get 0x644 meaning the same as 0660 in the call to chmod() and everything becomes just that much more confusing and fraught.

Meaningful error messages

C++ and “helpful, friendly, easy-to-read error messages” go together like peaches and .. battery acid? Like things that don’t go well together at all. In recent GCC versions there has been a marked improvement in the look of error messages.

With some judicious use of templates and naming of types, existing error messages can be improved. You still get a veritable torrent of messages, but if, somewhere in the middle, the error message (here, from Clang 17) says:

mode.h:26:9: note: subexpression not valid in a constant expression 26 | throw invalid_permission_character{}; mode.h:41:9: note: in call to 'expected_character_at_position(&"rwxbadbug"[0])' 41 | detail::expected_character_at_position<3, 'r'>(s) |

Then it’s a lot easier to decide that the character at position 3 – the letter b – is not expected, and maybe an r was expected there instead.

User-defined file mode literals

Here is the definition of my _mode literal. String-based literals get a pointer and a size, which is inconvenient because they don’t turn back into fixed-size arrays.

consteval mode_t operator""_mode(const char *s, size_t len) { if (len != 9) { throw detail::invalid_permission_string_length{}; } return detail::from_readable_mode_string(s); }

Anyway, if the string is the wrong size then a meaningful exception is thrown, which isn’t constexpr, so you get a meaningful error message:

mode.h:65:9: note: subexpression not valid in a constant expression 65 | throw detail::invalid_permission_string_length{}; main.cc:44:24: note: in call to 'operator""_mode(&"birb"[0], 4)' 44 | std::cout << "birb"_mode;

Here us the implementation of the function that does the actual work, turning the string into a mode_t:

consteval mode_t from_readable_mode_string(const char * const s) { return detail::expected_character_at_position<0, 'r'>(s) | detail::expected_character_at_position<1, 'w'>(s) | detail::expected_character_at_position<2, 'x'>(s) | detail::expected_character_at_position<3, 'r'>(s) | detail::expected_character_at_position<4, 'w'>(s) | detail::expected_character_at_position<5, 'x'>(s) | detail::expected_character_at_position<6, 'r'>(s) | detail::expected_character_at_position<7, 'w'>(s) | detail::expected_character_at_position<8, 'x'>(s); }

It’s really wordy, which is unfortunate, but by writing it like this, the error message – at least with Clang 17 – repeats the template parameters and mentions the specific subexpression that is problematic.

Here is a Clang 17 error message when using an inappropriate permission character:

mode.h:26:9: note: subexpression not valid in a constant expression 26 | throw invalid_permission_character{}; mode.h:44:9: note: in call to 'expected_character_at_position(&"------uwu"[0])' 44 | detail::expected_character_at_position<6, 'r'>(s) | mode.h:67:12: note: in call to 'from_readable_mode_string(&"------uwu"[0])' 67 | return detail::from_readable_mode_string(s);

Huh, I guess you can’t give uWu permission to others. The same error message from GCC 13 looks similar:

main.cc:44:18: in 'constexpr' expansion of 'operator""_mode(((const char*)"------uwu"), 9)' mode.h:67:45: in 'constexpr' expansion of 'detail::from_readable_mode_string(s)' mode.h:44:55: in 'constexpr' expansion of 'detail::expected_character_at_position<6, 'r'>(((const char*)s))' mode.h:26:9: error: expression '<throw-expression>' is not a constant expression 26 | throw invalid_permission_character{};

And here’s the implementation that turns a single character into a bit in a file mode value:

template<int position, char accept> consteval mode_t expected_character_at_position(const char * const permission_string) { const char c = permission_string[position]; if(c == accept) { return 1 << (8-position); } if(c == '-') { return 0; } throw invalid_permission_character{}; }

This is a bit wordy, but it ensures that position and the acceptable (expected) char are front-and-center in error messages, and that the expected character and - are the only characters for which this is a constant expression – everything else will fail because exceptions aren’t constexpr.

So there you have it, a compact constexpr representation of file modes with meaningful error messages. You can find the code in my personal GitHub repository playground, in the subdirectory mode/ . I won’t link it here because, frankly, it is time I get my ass in gear and migrate to some other forge.

Categories: FLOSS Project Planets

Bugzilla Bot improvements in the Automation Sprint

Planet KDE - Mon, 2024-04-29 17:30

I'm happy to have been able to attend my first in-person KDE event, the Automation & Systematization Sprint in Berlin. Previously, my contributions to KDE have consisted of submitting and triaging bug reports. During this weekend, I was able to meet some of the KDE team in person, and become more involved. I've started working with the Bugzilla Bot code, and plan to start digging into the automated test code.

The Bugzilla product list had fallen out of date, so first I updated that (yay, my first accepted MR!). I also started working on using the GitLab API to automate these updates. In the near future, I'll be tackling some requested improvements to the Bugzilla Bot. This will lessen the amount of boring manual bug chores and free people up to do more valuable work.

Thanks to the KDE team for being so friendly and willing to help me learn the development environment. I'm happy to have found more ways to contribute that I enjoy, and will be valuable to the project.

Categories: FLOSS Project Planets

Tim Retout: seL4 Microkit Tutorial

Planet Debian - Mon, 2024-04-29 17:02

Recently I revisited my previous interest in seL4 - a fast, highly assured operating system microkernel for building secure systems.

The seL4 Microkit tutorial uses a simple Wordle game example to teach the basics of seL4 Microkit (formerly known as the seL4 Core Platform), which is a framework for creating static embedded systems on top of the seL4 microkernel. Microkit is also at the core of LionsOS, a new project to make seL4 accessible to a wider audience.

The tutorial is easy to follow, needing few prerequisites beyond a QEMU emulator and an AArch64 cross-compiler toolchain (Microkit being limited to 64-bit ARM systems currently). Use of an emulator makes for a quick test-debug cycle with a couple of Makefile targets, so time is spent focusing on walking through the Microkit concepts rather than on tooling issues.

This is an unusually good learning experience, probably because of the academic origins of the project itself. The Diátaxis documentation framework would class this as truly a “tutorial” rather than a “how-to guide” - you do learn a lot by implementing the exercises.

Categories: FLOSS Project Planets

Amarok 3.0 "Castaway" released!

Planet KDE - Mon, 2024-04-29 16:00

The Amarok Development Squad is happy to announce the immediate availability of Amarok 3.0 "Castaway"!

The new 3.0 is the first stable Qt5/KDE Frameworks 5 based version of Amarok, and first stable release since 2018, when the final Qt4 based version 2.9.0 was released.

The road to 3.0 has not been a short one. Much of the Qt5/KF5 porting was done in 2015 already, but finishing and polishing everything up has been a slow, sometimes ongoing and sometimes stalled process ever since. 3.0 Alpha was released in February 2021 and has been since used by many people, as have been nightly builds of git master available for various distributions. Now in the past few months, an effort was made to get everything ready for a proper 3.0 release.

Common usecases should work quite well, and in addition to fixing KF5 port related regressions reported in pre-releases, 3.0 features many bugfixes and implemented features for longstanding issues, the oldest such documented being from 2009. However, with more than 20 years of development history, it is likely that not every feature Amarok has been tested thoroughly in the new release, and specifically some Internet services that have changed their API in recent years are not available, at least for now. It might well be that getting them in better state wouldn't require huge effort, however, so if you know your way with Qt and KDE Frameworks and your favourite Internet music service does not work with Amarok 3.0, you are extremely welcome to join in and help!

In the following months, minor releases containing small fixes and additions, based on both newly reported and longer-standing bug reports and feature requests, are to be expected. Work on porting to Amarok to Qt6/KDE Frameworks 6 should start in the following months, the goal being to have a usable Qt6/KF6 based beta version in 2024 still.

One should observe that due to scripting framework port from QtScript to QJSEngine still being a work in progress, previous Amarok 2.x scripts are often not compatible. The script API documentation at community wiki is also partially out of date. Additionally, due to incompatibilities and other issues, KNewStuff downloading of scripts is disabled for the time being. Having script support in more polished shape is something to work on after an initial Qt6/KF6 version starts to be usable. It is also evident that the web site and community wiki pages largely originate from more than ten years ago, and contain partially outdated information. Some work on refreshing them and pruning the documentation to make it more maintainable is likely to happen during the following months.

Now it's time to Rediscover Your Music in the 2020's! Changes since 3.0 Beta (2.9.82) FEATURES:
  • Added a visual hint that context view applets can be resized in edit mode.
  • Display missing metadata errors in Wikipedia applet UI.
  • Add a button to stop automatic Wikipedia page updating. (BR 485813)
CHANGES:
  • Replace defunct lyricwiki with lyrics.ovh as lyrics provider for now. (BR 455937)
  • Show only relevant items in wikipedia applet right click menu (BR 323941), use monobook skin for opened links and silently ignore non-wikipedia links.
  • Don't show non-functional play mode controls in dynamic mode (BR 287055)
BUGFIXES:
  • Fix loading of some Flickr photos in the photos context view applet and show more relevant photos. (BR 317108)
  • Fix playlist inline play control slider knob & draw playlist delegate icons with higher DPI.
  • Fix searching for composer and album info for local files in Wikipedia applet.
  • Don't remove wrong songs from collection when contents of a folder, whose name is a substring of another collection folder, are changed (BR 475528)
  • Prefer symbolic systray icon to fix colours in Plasma6 systray (BR 485748)

The complete ChangeLog, which includes the pre-releases, is available in the git repository.

To provide some insight on the road from 2.9.0 to 3.0.0, statistics collected from git repository are presented:

Commits and added/removed lines of code between 2.9.0 and 3.0 alpha (2.9.71)

l10n daemon script: 117 commits, +898, -192
Heiko Becker: 72 commits, +5641, -2112
Laurent Montel: 69 commits, +9478, -9697
Aroonav Mishra: 65 commits, +15474, -6808
Pino Toscano: 31 commits, +6892, -1637
Malte Veerman: 30 commits, +19466, -29990
Olivier CHURLAUD: 27 commits, +1106, -474
Yuri Chornoivan: 19 commits, +966, -806
Pedro de Carvalho Gomes: 8 commits, +145, -407
Pedro Gomes: 7 commits, +7222, -805
Luigi Toscano: 7 commits, +15, -14
Mark Kretschmann: 6 commits, +27, -17
Wolfgang Bauer: 5 commits, +31, -7
Tuomas Nurmi: 4 commits, +39, -23
Stefan Derkits: 4 commits, +20, -19
Andreas Sturmlechner: 3 commits, +189, -75
Aditya Dev Sharma: 3 commits, +47, -46
Stephan Wezel: 2 commits, +12, -7
Andreas Sturmlechner: 2 commits, +8, -6
Andreas Hartmetz: 2 commits, +2, -2
Victor Mataré: 1 commits, +7, -3
Tobias C. Berner: 1 commits, +5, -1
Thiago Sueto: 1 commits, +1, -1
Sven Eckelmann: 1 commits, +5, -3
Somsubhra Bairi: 1 commits, +1, -1
Simon Depiets: 1 commits, +2, -2
Rishabh Gupta: 1 commits, +1, -4
Nicolas Lécureuil: 1 commits, +4, -2
Nate Graham: 1 commits, +7, -7
Johnny Jazeix: 1 commits, +2, -2
Elbin Pallimalil: 1 commits, +11, -5
Christophe Giboudeaux: 1 commits, +1, -2
Antonio Rojas: 1 commits, +1, -0
Alexandr Akulich: 1 commits, +1, -1
Albert Astals Cid: 1 commits, +1, -0

Commits and added/removed lines of code between 3.0 alpha 2.9.71 and 3.0.0

l10n daemon script: 317 commits, +1597783, -75585
Tuomas Nurmi: 147 commits, +3813, -1550
Friedrich W. H. Kossebau: 9 commits, +1075, -1044
Jürgen Thomann: 8 commits, +130, -101
Heiko Becker: 8 commits, +187, -19
Pino Toscano: 6 commits, +3361, -24
Toni Asensi Esteve: 4 commits, +100, -13
Pedro de Carvalho Gomes: 4 commits, +51, -9
Mihkel Tõnnov: 4 commits, +4486, -800
Zixing Liu: 2 commits, +140, -8
Fabian Vogt: 2 commits, +9, -0
David Faure: 2 commits, +4047, -15
Damir Islamov: 2 commits, +401, -420
Yuri Chornoivan: 1 commits, +1, -1
Sebastian Engel: 1 commits, +21, -21
Nicolas Fella: 1 commits, +1, -1
Nicolás Alvarez: 1 commits, +7, -7
Nate Graham: 1 commits, +1, -0
Matthias Mailänder: 1 commits, +5, -0
Jonathan Esk-Riddell: 1 commits, +2, -6
Jakob Meng: 1 commits, +1, -1
Heiko Becker: 1 commits, +17, -17
Christophe Giboudeaux: 1 commits, +3, -4
Carl Schwan: 1 commits, +7, -2
Boris Pek: 1 commits, +1, -1
Andreas Sturmlechner: 1 commits, +2, -0

Packager section

You can find the package on download.kde.org and it has been signed with Tuomas Nurmi's GPG key.

Categories: FLOSS Project Planets

Evolving Web: Which Page Builder is Best? Drupal vs WordPress vs Webflow

Planet Drupal - Mon, 2024-04-29 15:07

We’re often asked which platform is the best for creating landing pages. Our answer is always “it depends on your needs!” Each platform has its strengths and weaknesses. It takes a strong understanding of both your options and your needs to pick the right one.

We illustrated this point with a 'Landing Page Builder Battle' at EvolveDrupal Atlanta 2024. Developers were challenged to create a web page in just five minutes using either Drupal Layout Builder, Drupal Paragraphs, WordPress Block Editor (Gutenberg), WordPress Elementor, or Webflow. On top of being a whole lot of fun, this competition highlighted the unique capabilities and limitations of each platform. It also underscored the practical implications of choosing the right tool for different projects.  

Curious what we learned? We’ve packed it all into this guide, which examines the pros and cons of each of the five page builders that battled it out at EvolveDrupal. Read on to find out who won and discover the best tool for you.

Drupal Layout Builder

Drupal Layout Builder is a core module in Drupal that lets admins customize content layouts without needing to dive into code. Its visual layout editor allows admins to design pages using a drag-and-drop interface.

Pros
  • Effortless integration. Because it's part of Drupal core, Layout Builder works seamlessly with other Drupal functionalities.
  • Highly customizable. It offers extensive capabilities to customize layouts for individual pieces of content or entire content types.
  • Accessibility. Drupal prioritizes accessibility and Layout Builder is no exception, allowing admins to create better content for all users including those with disabilities.
  • Regular updates. Along with other Drupal core and contributed modules, Layout Builder is continuously improved upon by the Drupal community.
Cons
  • Complexity. There can be a steep learning curve for users who are unfamiliar with Drupal.
  • No live preview. Unlike WordPress Gutenberg or Elementor, Layout Builder doesn’t offer a WYSIWYG (What You See Is What You Get) interface. 
  • Performance. Heavy use of Layout Builder on complex sites can impact performance without proper optimization.
Drupal Paragraphs

Paragraphs is a Drupal module that replaces the basic body field with a set of customizable paragraph types, offering a cleaner way to manage content chunks.

Pros
  • Flexibility. Users can add different types of content (images, text, videos) and arrange them with ease.
  • Reusable components. Paragraphs lets you define types of components that are reusable across different pages, or even across different websites within a multi-site configuration. This reusability not only speeds up the content creation process but also helps maintain consistency across your digital presence.
  • Content control. Paragraphs break content into discrete components that can be individually edited and arranged. This modular approach simplifies content management and enhances the editorial workflow. 
  • Regular updates. As with LayoutBuilder, the Drupal community makes ongoing contributions to improve Paragraphs.
Cons 
  • No live preview. Paragraphs doesn’t have a WYSIWYG interface, while Wordpress Block Editor and Elementor do. 
  • Potential overhead. Managing an extensive library of paragraph types can become a cumbersome task.
  • Less design control. Paragraphs gives you less control over the layout compared to Layout Builder. But there is a Layout Paragraphs module that lets you benefit from the layout control capabilities of Layout Builder in Paragraphs. It does this by using the underlying API of Layout Builder.
WordPress Block Editor (Gutenberg) 

The default block editor for WordPress, colloquially referred to as the Gutenberg editor, introduced to make adding rich content to websites more accessible and enjoyable.

Pros
  • Modern block editor.  The block editor offers a more intuitive and media-rich editing experience.
  • Extensibility. Developers can create custom blocks, enhancing flexibility.
  • Core integration. Being a part of WordPress core, the block editor is well-maintained and receives regular updates.
  • User-friendly interface. A clean and straightforward interface simplifies the content creation process.
  • Flexibility. It easily integrates with a wide range of themes and plugins designed.
  • Regular updates. The block editor is continuously improved upon by the WordPress community.
  • Live preview available. The block editor offers a WYSIWYG interface, allowing you to see changes in real-time as you edit. 
Cons 
  • Mixed reception. Some users find the transition to block-based editing confusing.
  • Limited layout options. The block editor is more restrictive in layout design compared to page builders like Elementor.
  • Plugin dependencies. It often requires additional plugins to extend functionality to match other builders.
WordPress Elementor

Elementor is a powerful WordPress page builder plugin that offers a high degree of design flexibility with a drag-and-drop interface.

Pros
  • Intuitive design interface. WordPress Elementor makes designing websites straightforward, even for those without coding skills.
  • Template and widget variety. Comes with numerous widgets and templates that can be customized extensively.
  • Responsive design controls. Users can tweak settings for different devices directly from the editor.
  • Third-party add-ons. Supported by a wide array of third-party add-ons for additional functionality.
  • Live preview available. WordPress Elementor offers a WYSIWYG interface, allowing real-time viewing of changes as you edit. 
  • Regular updates. It’s continuously improved upon by plugin developers.
Cons
  • Plugin dependency. Elementor relies on being compatible with the active WordPress theme and other plugins, which can sometimes lead to conflicts.
  • Performance issues. It can become heavy and potentially slow down site performance due to extensive feature sets.
  • Cost. While there is a free version, premium features require a paid subscription.
Webflow

Webflow is a standalone tool that combines website design and development in one platform. It allows users to design, build, and launch responsive websites visually. It also handles hosting and can export clean code.

Pros
  • All-in-one solution. It combines design, development, and hosting in one platform.
    Visual CSS styling. Webflow allows designers to style elements visually, which is then automatically converted into clean code.
  • Advanced animations. It supports sophisticated animations and interactions.
    Complete design freedom. Webflow offers extensive design control without needing to write code.
  • Responsive by default. Designs are automatically responsive, which is excellent for mobile optimization.
Cons
  • Learning curve. New users may find the interface and abundance of options overwhelming.
  • Cost. Webflow can be more expensive than other solutions, especially for hosting.
Choosing Your Page Builder Champion

The choice between Drupal, WordPress, and Webflow tools boils down to specific project requirements, your technical comfort, and the scale of your digital ambitions. Below is a summary of what we think are the best use cases for each tool.

  • Drupal Layout Builder – Best for complex, content-heavy websites needing deep customization.
  • Drupal Paragraphs – Suitable for sites where structured, multi-use content is needed without layout concerns.
  • WordPress Block Editor (Gutenberg) – Great for content creators and bloggers who need an intuitive system integrated into WordPress.
  • WordPress Elementor – Perfect for WordPress users who need detailed design control without deep coding.
  • Webflow – Best for designers who want total design freedom and the ability to launch a site within one platform.

So who won the battle? Webflow emerged victorious for the ease of quickly assembling a functional website in 5 minutes. Although Drupal might still pose a learning curve for newcomers, its continuous evolution promises even more accessible and enhanced user experiences.

Wishing you’d caught the Page Builder Battle in real life? Join us at the next EvolveDrupal! Our next stop is Montreal on June 14, 2024. Come along for more live demonstrations and dozens of insightful sessions. It's a great opportunity to see digital tools in action and network with other professionals in the field.

 

Register for EvolveDrupal Montreal 2024 or sign up for future updates.
 

+ more awesome articles by Evolving Web
Categories: FLOSS Project Planets

Talking Drupal: Talking Drupal #448 - D11 Readiness & PHPStan

Planet Drupal - Mon, 2024-04-29 14:00

Today we are talking about Drupal 11 Readiness, What you need to think about, and PHPStan with guest Matt Glaman. We’ll also cover MRN as our module of the week.

For show notes visit: [www.talkingDrupal.com/448https://www.talkingDrupal.com/448)

Topics
  • What do we mean by Drupal 11 Readiness
  • How will this be different than 9 and 10
  • Top 5 tips
  • D11 Meeting and slack channel
  • Will this be easier
  • Major issues
  • What is PHPStan
  • How does it play a role
  • How is PHPStan Drupal different than PHPStan
  • Does using PHPStan with drupal reduce the need for tests
  • How do you see it evolving over the next few years
  • Drupal 12 wishlist
Resources Hosts

Nic Laflin - nLighteneddevelopment.com nicxvan John Picozzi - epam.com johnpicozzi Matt Glaman - mglaman.dev mglaman

MOTW Correspondent

Martin Anderson-Clutz - mandclu

  • Brief description:
    • Have you ever wanted an easy way to generate detailed release notes for your contrib projects? There’s a web app for that
  • Module name/project name:
  • Brief history
    • How old: created in Aug 2022 by today’s guest Matt Glaman
  • Maintainership
  • Usage stats:
    • Currently no usage reporting, but a tool I’ve been using a ton lately as I get modules ready for Drupal 11
  • Module features and usage
    • It’s very simple to use, you just enter the machine name of your project, and then the numbers of the releases you want it to compare
    • It will generate the structure for your release note, include a spot for you to write a summary at the top, a list of contributors that links to their profiles, and a list of issues
    • Previously part of Matt’s drupalorg CLI project, MRN is now a lambda function on AWS, so there’s nothing to download or install
    • I like that you can choose which tags you want to compare, so if the release is part of a branch that doesn’t yet have a stable release, I’ll put a comparison to the previous release in the branch at the top, and then a comparison to the current stable release below it, so people can see the full list of everything new they’ll get by moving from the stable release
    • It’s worth noting that because this works from the git history, you need to make sure you credit everyone properly before clicking to merge an MR in the Drupal.org UI. You can give credit to other people after the fact using the checkbox and they’ll get contribution credits, but won’t be included in the release notes generated by MRN
Categories: FLOSS Project Planets

PyCon: Meet PyCon US Keynote Speakers

Planet Python - Mon, 2024-04-29 10:45

We can’t wait to welcome Jay Miller, Kate Chapman, Simon Willison, and Sumana Harihareswara to our stage as PyCon US keynote speakers this year.



We asked each of our keynote speakers: 

  • What excites them about the Python community? 

  • What they’re looking forward to doing at PyCon US? 

  • What can we expect from their keynote speech? 

  • And any advice they’d like to share with the Python community. 

Check out our interviews with each of our keynote speakers below! 


Jay Miller

"I fully believe I owe my entire tech career to the Python community. I met so many amazing people that I would become long lasting friends with."

Kate Chapman

"I'm excited to connect with people who are passionate about free and open source software and to learn about technologies that I haven't spent much time with."

Simon Willison"Take advantage of the fact that so many people from the worldwide Python community are in the same place at the same time for just a couple of days. Everybody here wants to talk to you. And you should assume that anyone who you think is interesting will find you interesting as well and will want to hear from you."

Sumana Harihareswara

"I do stand-up comedy and theater. I take it seriously, my responsibility to educate and entertain if you're sitting in front of me for 40 minutes."


Register Now

Don’t miss out on meeting our keynote speakers in person! Register now for PyCon US before we sell out. As a note, some of our tutorials are already sold out, as well as our hotel room blocks. There are only a few short weeks left before the conference, so don’t wait, register today!

Stay in the Loop

The PyCon US website has all the information you need to know about attending our conference. In order to catch all the latest news, be sure to:

Engage with our community on social media by using our official hashtag: #PyConUS.

Thank you for supporting the Python community. We can’t wait to meet you all in Pittsburgh in a few short weeks!
Categories: FLOSS Project Planets

Real Python: Python's unittest: Writing Unit Tests for Your Code

Planet Python - Mon, 2024-04-29 10:00

The Python standard library ships with a testing framework named unittest, which you can use to write automated tests for your code. The unittest package has an object-oriented approach where test cases derive from a base class, which has several useful methods.

The framework supports many features that will help you write consistent unit tests for your code. These features include test cases, fixtures, test suites, and test discovery capabilities.

In this tutorial, you’ll learn how to:

  • Write unittest tests with the TestCase class
  • Explore the assert methods that TestCase provides
  • Use unittest from the command line
  • Group test cases using the TestSuite class
  • Create fixtures to handle setup and teardown logic

To get the most out of this tutorial, you should be familiar with some important Python concepts, such as object-oriented programming, inheritance, and assertions. Having a good understanding of code testing is a plus.

Free Bonus: Click here to download the free sample code that shows you how to use Python’s unittest to write tests for your code.

Take the Quiz: Test your knowledge with our interactive “Python's unittest: Writing Unit Tests for Your Code” quiz. You’ll receive a score upon completion to help you track your learning progress:

Interactive Quiz

Python's unittest: Writing Unit Tests for Your Code

In this quiz, you'll test your understanding of Python testing with the unittest framework from the standard library. With this knowledge, you'll be able to create basic tests, execute them, and find bugs before your users do.

Testing Your Python Code

Code testing or software testing is a fundamental part of a modern software development cycle. Through code testing, you can verify that a given software project works as expected and fulfills its requirements. Testing enforces code quality and robustness.

You’ll do code testing during the development stage of an application or project. You’ll write tests that isolate sections of your code and verify its correctness. A well-written battery or suite of tests can also serve as documentation for the project at hand.

You’ll find several different concepts and techniques around testing. Most of them surpass the scope of this tutorial. However, unit test is an important and relevant concept. A unit test is a test that operates on an individual unit of software. A unit test aims to validate that the tested unit works as designed.

A unit is often a small part of a program that takes a few inputs and produces an output. Functions, methods, and other callables are good examples of units that you’d need to test.

In Python, there are several tools to help you write, organize, run, and automate your unit test. In the Python standard library, you’ll find two of these tools:

  1. doctest
  2. unittest

Python’s doctest module is a lightweight testing framework that provides quick and straightforward test automation. It can read the test cases from your project’s documentation and your code’s docstrings. This framework is shipped with the Python interpreter as part of the batteries-included philosophy.

Note: To dive deeper into doctest, check out the Python’s doctest: Document and Test Your Code at Once tutorial.

The unittest package is also a testing framework. However, it provides a more complete solution than doctest. In the following sections, you’ll learn and work with unittest to create suitable unit tests for your Python code.

Getting to Know Python’s unittest

The unittest package provides a unit test framework inspired by JUnit, which is a unit test framework for the Java language. The unittest framework is directly available in the standard library, so you don’t have to install anything to use this tool.

The framework uses an object-oriented approach and supports some essential concepts that facilitate test creation, organization, preparation, and automation:

  • Test case: An individual unit of testing. It examines the output for a given input set.
  • Test suite: A collection of test cases, test suites, or both. They’re grouped and executed as a whole.
  • Test fixture: A group of actions required to set up an environment for testing. It also includes the teardown processes after the tests run.
  • Test runner: A component that handles the execution of tests and communicates the results to the user.

In the following sections, you’ll dive into using the unittest package to create test cases, suites of tests, fixtures, and, of course, run your tests.

Organizing Your Tests With the TestCase Class

The unittest package defines the TestCase class, which is primarily designed for writing unit tests. To start writing your test cases, you just need to import the class and subclass it. Then, you’ll add methods whose names should begin with test. These methods will test a given unit of code using different inputs and check for the expected results.

Here’s a quick test case that tests the built-in abs() function:

Read the full article at https://realpython.com/python-unittest/ »

[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]

Categories: FLOSS Project Planets

Nikola: Nikola v8.3.1 is out!

Planet Python - Mon, 2024-04-29 08:11

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v8.3.1. This release fixes some small bugs, including some introduced by the new Nikola Plugin Manager.

The minimum Python version supported is now 3.8, and we have adopted a formal policy to define the Python versions supported by Nikola.

What is Nikola?

Nikola is a static site and blog generator, written in Python. It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).

Find out more at the website: https://getnikola.com/

Downloads

Install using pip install Nikola.

Changes Features
  • Support passing --poll to nikola auto to better deal with symlink farms.

Bugfixes
  • Remove insecure HTTP fallback from nikola plugin

  • Fix the nikola plugin command not working (Issue #3736, #3737)

  • Fix nikola new_post --available-formats crashing with TypeError (Issue #3750)

  • Fix the new plugin manager not loading plugins if the plugin folder is a symlink (Issue #3741)

  • Fix the nikola plugin command not working (Issue #3736)

  • Remove no longer used leftovers of annotations support (Issue #3764)

Other
  • Nikola now requires Python 3.8 or newer.

  • Nikola has adopted a policy for Python version support, promising support for versions supported by the Python core team, Ubuntu LTS, or Debian stable, and taking into consideration Debian oldstable and PyPy.

  • Remove polyfill from polyfill.io.

Categories: FLOSS Project Planets

KDE neon Post-Plasma 6 Updates Review

Planet KDE - Mon, 2024-04-29 07:31

The goal of KDE neon is to build all KDE’s software on a stable Ubuntu LTS base, we do it in an automated way and for the User edition have automated QA to deploy rapidly but safely. For the KDE 6 Megarelease there was a lot of updates and the system didn’t work as well as it ought, not all the update issues could be tested and this broke some the operating system on some people’s computer which is a horrible experience that should not happen.

What happened?

We were testing KF6, Plasma 6 and KDE Gear 24.04 in our unstable and testing repos for some time before the release. A week ahead of release we were building it in our User repo and testing upgrades. Jonathan, as release manager for both the MegaRelease and neon, travelled to Malaga to do an in person joint release with Paul from promo, this helped the coordinated release but lost some testing time. Some package transitions happened during the pre-release week which made the updates more complex than they had to be and meant extra work (for better end result in theory). Once the MegaRelease sources were published on Thursday the testing of Neon was ongoing and many later fixes were made to make for a successful upgrade on the tests. Neon’s KF6/Plasma6/KDE Gear 24.02 packages were published later on Thursday and Jonathan drove home, alas due to bad weather there was no internet available on the ferry limiting later fixes.

Although the semi automated upgrade tests passed this didn’t cover all cases and some people had incomplete upgrades due to packaging transitions being incomplete. This was fixed over the next day or two and also an update to the installer Calamares was brought in which turned out to have a bug with the final install setup so although upgrades now worked the ISO installs were broken. Quite horrible.

On the Monday Jonathan fixed some more upgrade issues and Calamares so the neon end of things was fixed but there remain other problems with KF6 and Plasma 6 which affect all distros and many of these have since been fixed and some are ongoing, many caused by the switch to Wayland or Akonadi switching to sqlite.

Issues?

There wasn’t one big problem that caught everyone. There was lots of small but significant problems which caught many people.

  • KMyMoney package issues – needed a rebuild which we did after release
  • Ocean sound theme not installed – new package which was added after release
  • Palapeli packages in wrong location – an incomplete change that was made during the transition
  • Video and pdf thumbnailers broken – these packages needed added to the main install
  • KOrganizer had invalid dependency – that needed removed
  • xwaylandvideobridge error on shared library – needed a rebuild
  • libzxing needs soname bump – that transition needed completed
  • akonadi not working on upgrade – for some reason some users had to manually reinstall the mysql akonadi backend
  • Calamares install fails to happen – a bug from Calamares that was initially avoided but later included in our ISO
  • OEM mode no longer worked – this affects Slimbook systems and some parts just needed ported to Plasma 6, ideally it would be code which was in Calamares and not in Neon

NVidia users had a number of issues often caused by the switch to Wayland. Most users can switch back to X11 to get it working but that is hardly a user friendly setup.

This is just a small sample, there were more similar issues.

Review

Neon is a small team, Jonathan working on it (alongside release duties for Plasma and Frameworks) from Blue Systems and top volunteer helper Carlos with occasionally Harald and others helping out.

We had a review with KDE’s QA star Nate of what happened and why and mitigations and we also had two open calls with neon community members where they gave their feedback.

Ponderings

The Plasma 6 and KF6 upgrades in neon were too fragile and caused too much pain for many of our users.

There wasn’t one single problem and many people had a perfectly good experience doing the upgrade but too many people were caught with problems which will be painful when you are just wanting to have a useful Linux system.

Conclusions

Our constantly rolling release model and small team means we can’t guarantee total stability so we will stop using terms like “rock solid base” on our website and emphasise the new-ness factor.

When doing big updates test and if travelling bring in other people to do testing and fixes.

We can’t support NVidia hardware as we don’t have the skills, time, hardware or access to source to fix it.

Switching to Wayland was a choice of Plasma and after a decade in development a necessary choice but we should be aware of issues there and communicate those.

Get more QA on ISO images, currently we don’t have any prior to release which is going to lead to problems.

Consider if we can to upgrade QA on older snapshots as well as the current one.

Consider how to do more QA on KDE PIM apps.

Thanks to all our lovely users for staying with us, sorry to those who we let down and those who have left us. Thanks to our community for staying supporting of each other and us as developers. Of course there’s plenty of alternatives if you want a slower release cycle (Kubuntu have just made a new LTS with Plasma 5) but if you want the freshest software from KDE then neon continues to be a great place to get it.

Categories: FLOSS Project Planets

mandclu: Getting Smart Date Dialed Up to 11

Planet Drupal - Mon, 2024-04-29 06:14
Getting Smart Date Dialed Up to 11

I just tagged the first stable release for Smart Date 4.1, a year (almost to the day) since the first stable release of Smart Date 4.0. A lot of work went into this new release, but I'm thankful beyond words to the many people who helped shape it into what it is today.

mandclu Mon, 04/29/2024 - 06:14 Tags
Categories: FLOSS Project Planets

Golems GABB: The Impact of Web Design on Conversion: Strategies and Tools for a Successful Web Project

Planet Drupal - Mon, 2024-04-29 06:01
The Impact of Web Design on Conversion: Strategies and Tools for a Successful Web Project Editor Mon, 04/29/2024 - 13:01

Do you still doubt that web design directly affects the conversion of your Drupal site? Today, high-end web design goes beyond a simple and beautiful layout, well-optimized photos, or an eye-catching color scheme. If you neglect the connection between web design and conversion, your lead generation progress won’t help you realize your digital marketing objectives and desired ROI rates.
With the right choice of design strategies for conversions, novice professionals can drastically improve the target platform’s responsiveness and accessibility — with user journeys improved and bounce risks reduced. 

Categories: FLOSS Project Planets

Qt Visual Studio Tools 3.2.0 Released

Planet KDE - Mon, 2024-04-29 04:53

We are happy to announce the release of the Qt Visual Studio Tools version 3.2.0. Installation packages are now available at the Visual Studio Marketplace and download.qt.io.

This update of the Qt VS Tools extension adds experimental support for QML LSP server, as well as full support of the Qt VS Tools for Visual Studio 2022 on ARM64.



Qt MSBuild file support:

Alongside providing Qt-related MSBuild files within the Qt VS Tools package, we now offer them as a separate .zip download for your convenience. Starting from version 3.2.0, access the standalone Qt MSBuild files by visiting our public server download location: Official releases

Please refer to the project's Changelog for a list of all changes included in this release. Feel free to report any problems, or make any suggestions or comments, in the Qt Visual Studio Tools bug tracker.

Categories: FLOSS Project Planets

Zato Blog: API Testing in Pure English

Planet Python - Mon, 2024-04-29 03:43
API Testing in Pure English 2024-04-29, by Dariusz Suchojad How to test APIs in pure English

Do you have 20 minutes to learn how to test APIs in pure English, without any programming needed?

Great, the API testing tutorial is here.

Right after you complete it, you'll be able to write API tests as the one below.

Next steps: More blog posts
Categories: FLOSS Project Planets

The Drop Times: Everyone Has Their Own Journey

Planet Drupal - Mon, 2024-04-29 02:22

Dear Readers,

This is your reminder that everyone has their path in life, so embrace the uniqueness of your journey.

"A journey of a thousand miles begins with a single step."

— Laozi (Lao Tzu), Tao Te Ching (Daodejing), Chapter 64

Instead of fixating on others' paths, focus on discovering what works best for you. Your journey to success unfolds uniquely, guided by your own rhythm and routine. Trust in your process and celebrate your progress along the way. Just as in the diverse Drupal community, where each contributor's unique experiences and skills enrich the whole, your unique contributions to your own life and the lives of others around you are invaluable. Embrace your individual journey, just as Drupal embraces the diversity of its community.

Drupal itself is built on the principle of open collaboration, fostering an environment where different perspectives lead to better solutions and innovations. This ethos extends beyond the technology, influencing the Drupal community to support each other's growth and development. The community thrives on the collective effort of individuals who bring their distinct paths and insights, contributing to the strength and flexibility of Drupal as a platform. As you walk your path, remember the power of a community that values each step of your journey.

Now, Let's take a moment to revisit the highlights from last week's coverage at The Drop Times.

Alka Elizabeth and Kazima Abbas, sub-editors at The Drop Times, spoke with Dominique de Cooman, the founder of Dropsolid. He discussed his journey, from his profound interest in Drupal to the establishment of his company, sparked by a pivotal experience at DrupalCon Munich in 2012. Read about his inspiring story here.

Anoop John, the founder and lead at The Drop Times, explores the scope and composition of the Drupal community. To get the full insights, read the article here

Ajith Thampi Joseph recounts his transition from traditional server setups to modern development tools in another feature. His article discusses the challenges he encountered and the solutions he implemented. Learn more about his journey here.

Acquia sets the stage for a memorable evening at DrupalCon Portland 2024 on Tuesday, May 7. This event promises an evening of fun-filled activities, including vintage arcade games, bowling, and karaoke. To know more, click on the link here.

Just one more week until DrupalCon Portland 2024 kicks off! The event is scheduled to run from May 6th to May 9th. Are you ready to dive into the excitement? We invite volunteers to join our team and help us cover the biggest open-source event in North America.

In collaboration with DubBot and Iowa's Department for the Blind, Lullabot will host a webinar on web accessibility on Thursday, May 16, 2024. This event coincides with Global Accessibility Awareness Day and aims to highlight common issues impacting individuals with disabilities. 

CTI Digital's webinar on "Navigating Drupal 7 End-of-Life: What To Do Next?" is scheduled for Friday, May 3, 2024. The webinar will be led by CTI Digital's Drupal Technical Director, David Bishop, and Sales Director, James Tillotson

EvolveDrupal returns to Montreal for its Second Edition on June 14, 2024. This event promises a day filled with learning, networking, and inspiration. Learn more about the event here.

Northern Commerce and Acquia have collaborated to host a free "Lunch & Learn" event titled "Unlocking the Digital Student Journey," aimed at providing insights into enhancing the digital experiences of students. Scheduled for Thursday, May 08, 2024, the event promises valuable discussions and strategies for navigating the evolving landscape of digital education.

NEDcamp 2024 is set to take place on November 15-16, inviting Drupal enthusiasts to mark their calendars for this exciting event. With a rich tradition of fostering collaboration and learning within the Drupal community, NEDcamp promises attendees engaging sessions and networking opportunities. Drupal events are held worldwide each week to keep Drupal enthusiasts engaged. A complete list of events for the week is available here.

Michael Anello has unveiled version 1.0.1 of the Drupal Markdown Easy module. This version boasts a minor bug fix, default configuration settings, Drupal 11 compatibility, and enhanced code quality, ensuring smoother markdown experiences for users. The Beautify HTML module for Drupal has been updated, introducing enhanced formatting tools to streamline HTML code editing. With these improvements, users can expect a more efficient and user-friendly experience working with HTML on Drupal websites.

Octahedroid has unveiled a new preview feature that facilitates decoupled Drupal and Next.js integration, empowering developers with advanced preview capabilities. This release marks a significant advancement in decoupled architecture, offering seamless content preview experiences for Drupal-powered websites using Next.js frontend frameworks.

Kevin Wall has introduced a groundbreaking new feature for Drupal module installation in collaboration with Accorbis, promising to simplify and streamline the process for users. With this innovation, Drupal users can expect a more efficient and user-friendly experience when installing modules, enhancing their website development workflows.

Scheduled for November 2024, PHP 8.4 brings enhanced security and functionality, providing developers with improved features and safeguards. Learn more here.

We acknowledge that there are more stories to share. However, due to selection constraints, we must pause further exploration for now.

To get timely updates, follow us on LinkedIn, Twitter and Facebook. Also, join us on Drupal Slack at #thedroptimes.

Thank you,
Sincerely
Elma John
Sub-editor, The DropTimes.

Categories: FLOSS Project Planets

The Drop Times: From Drupal's Roots to Aiven's Branches: Angie Byron's Tech Journey

Planet Drupal - Mon, 2024-04-29 01:54
Angie Byron, Community Director at Aiven and former Drupal Core Co-Maintainer, shares insights on her journey in tech. This interview explores her transition from Google Summer of Code participant to Drupal Product Manager, her advocacy for diversity in tech, and her work in fostering community collaboration.
Categories: FLOSS Project Planets

Russell Coker: USB PSUs

Planet Debian - Sun, 2024-04-28 18:02

I just bought a new USB PSU from AliExpress [1]. I got this to reduce the clutter in my bedroom, I charge my laptop, PineTime, and a few phones at the same time and a single PSU with lots of ports makes it easier. Also I bought a couple of really short USB-C cables as it’s been proven by both real life tests and mathematical modelling that shorter cables get tangled less. This power supply is based on Gallium Nitride (GaN) [2] technology which makes it efficient and cool.

One thing I only learned about after that purchase is the new USB PPS standard (see the USB Wikipedia page for details [3]). The PPS (Programmable Power Supply) standard allows (quoting Wikipedia) “allowing a voltage range of 3.3 to 21 V in 20 mV steps, and a current specified in 50 mA steps, to facilitate constant-voltage and constant-current charging”. What this means in practice (when phones support it which for me will probably be 2029 or something) is that the phone could receive power exactly matching the voltage needed for the battery and not have any voltage conversion inside the phone. Phones are designed to stop charging at a certain temperature, this probably doesn’t concern people in places like Northern Europe but in Australia it can be an issue. Removing the heat dissipation from inefficiencies in voltage change circuitry means the phone will be cooler when charging and can charge at a higher rate.

There is a “Certified USB Fast Charger” logo for chargers which do this, but it seems that at the moment they just include “PPS” in the feature list. So I highly recommend that GaN and PPS be on your feature list for your next USB PSU, but failing that the 240W PSU I bought for $36 was a good deal.

Related posts:

  1. USB-PD and GaN A recent development is cheap Gallium Nitride based power...
  2. Power Supplies and Wires For some time I’ve been wondering how the wire size...
  3. Qi Phone Charging I have just bought a wireless phone charging system based...
Categories: FLOSS Project Planets

What’s new for Fedora Atomic Desktops in Fedora 40

Planet KDE - Sun, 2024-04-28 18:00

Fedora 40 has been released! 🎉 So let’s see what comes in this new release for the Fedora Atomic Desktops variants (Silverblue, Kinoite, Sway Atomic and Onyx Atomic).

Note: You can also read this post on the Fedora Magazine.

Introducing Fedora Atomic Desktops

As you might have guessed from the title, we are now called Fedora Atomic Desktops! See the Introducing Fedora Atomic Desktops Fedora Magazine article for all the details.

The summary is that the Fedora Atomic Desktops are made up of four atomic spins:

  • Fedora Silverblue
  • Fedora Kinoite
  • Fedora Sway Atomic (was Fedora Sericea)
  • Fedora Budgie Atomic (was Fedora Onyx)

And we have a landing page on fedoraproject.org.

Status update on bootloader updates (bootupd integration)

Unfortunately, we could not land bootupd support in this release due to an issue found late in Anaconda’s handling of bootupd installations which relied on incomplete functionality in bootupd.

We will attempt to add bootupd again after the release, via an update.

If you encounter Secure Boot errors or need to update your bootloader in the meantime, you can try the instructions from fedora-silverblue#543. Make sure to have a Live USB ready in case you encounter an issue. Please make backups beforehand.

We are hoping to land improvements to bootupd that should simplify this process.

See: atomic-desktops-sig#1.

What’s new in Silverblue Latest GNOME release

Fedora Silverblue comes with the latest GNOME 46 release.

For more details about the changes that comes with GNOME 46, see What’s new in Fedora Workstation 40 on the Fedora Magazine and Fedora Workstation 40 – what are we working on from Christian F.K. Schaller.

No longer overlay language packages (langpacks) by default

GNOME Software will no longer overlay the langpack packages for your locale on the first update. This should make updates much faster as they won’t need to overlay packages anymore (unless you explicitly decide to overlay some packages).

If you are updating from a previous release, you will have to remove this overlayed package manually. For example:

  1. Find the overlayed package using rpm-ostree status:
$ rpm-ostree status State: idle Deployments: ● fedora:fedora/40/x86_64/silverblue Version: 40.20240410.1 (2024-04-10T03:43:23Z) Commit: 2428fdbec13787633b3bcd79d4f002ab48582bae8c6a473ca357a1ad43573a94 GPGSignature: Valid signature by E8F23996F23218640CB44CBE75CF5AC418B8E74C LayeredPackages: langpacks-fr fedora:fedora/40/x86_64/silverblue Version: 40.20240402.0 (2024-04-02T00:39:43Z) Commit: 634c8097165e6aab2baeaca6ae6d1ea2a7f11fba9f4955297bcf0fc2507047be GPGSignature: Valid signature by E8F23996F23218640CB44CBE75CF5AC418B8E74C LayeredPackages: langpacks-fr
  1. Remove the overlayed package and reboot:
$ rpm-ostree uninstall langpacks-fr ...

Note that this will remove the dictionaries for the corresponding language from your system and thus for applications included in the image.

For Flatpaks, the dictionaries are downloaded according to the languages set in the Flatpak config. If you have set your preferred languages in GNOME Settings, this configuration should have been set already. For example:

# Get the current config $ flatpak config --list languages: en;fr;de (default: en) extra-languages: *unset* # Set the languages to use $ flatpak config --set languages "en;fr"

See the flatpak-config documentation for more details.

This will also remove the translated man pages for system commands. To get the man pages back, you can install them in a container using toolbox for example:

$ toolbox create $ toolbox enter $ sudo dnf install man-pages-fr

See: atomic-desktops-sig#14.

What’s new in Kinoite KDE Plasma 6

Fedora Kinoite ships with Plasma 6, Frameworks 6 and Gear 24.02 (Fedora Change). See also What’s New in Fedora KDE 40? on the Fedora Magazine.

Wayland only

Fedora Kinoite is now Wayland only. Legacy X11 applications will run using XWayland. See Fedora 40: X11 is now unsupported.

If you have a NVIDIA GPU and encounter issues, I recommend looking at Universal Blue images, waiting for an upcoming NVIDIA driver update that will hopefully improve Wayland support or trying out the updated Nouveau / NVK stack for supported cards.

KDE Apps as Fedora Flatpaks

A subset of KDE Apps are now installed by default as Fedora Flatpaks by Ananconda for new installations. The Flatpaks are not installed on updates but you can install them from the Fedora Flatpak remote or from Flathub.

KDE Flatpak on Flathub

Most KDE Apps are directly published and maintained on Flathub by the KDE community and we have mostly completed the transition to the Qt 6.6 / KDE Framework 6 Runtime.

You can track the progress for the remaining apps in kde/teams/flathub#26.

What’s new in Sway Atomic

Fedora Sway Atmoic comes with the latest 1.9 Sway release.

What’s new in Budgie Atomic

Fedora Budgie Atomic ships with the latest release of the Budgie Desktop 10.9 “release series”. Budgie 10.9 features some initial porting work to libxfce4windowing as it progresses towards its move to Wayland and redesigns its Bluetooth applet with new direct (dis-)connect functionality.

Additionally, Fedora Budgie Atomic ships with the latest Budgie Control Center and takes into use budgie-session. As Buddies of Budgie officially supports Fedora, Budgie Desktop has also received numerous backported bug fixes to provide Fedora users an even better experience.

You can learn more about the latest happenings in Budgie on the Buddies of Budgie blog.

What’s next

Unfortunately, this section will be short this time, as there has not been much progress on our future plans since the last time.

We will provide an updated article when more information becomes available.

Teaser for improved update support in Discover for Kinoite

Universal Blue, Bluefin, Bazzite and Aurora

Our friends in the Universal Blue, Bluefin and Bazzite projects also released updates for their images.

Universal Blue is now considered Generally Available alongside Bluefin.

For all your gaming needs, Bazzite reached version 3.0, rebasing on our fresh Fedora 40 images.

They are also introducing Aurora, a KDE Plasma and Kinoite based alternative to Bluefin. See the Introduction to Aurora post for all the details.

Where to reach us

We are looking for contributors to help us make the Fedora Atomic Desktops the best experience for Fedora users.

Categories: FLOSS Project Planets

#! code: LocalGov Drupal Camp 2024

Planet Drupal - Sun, 2024-04-28 15:35

April 23rd, 2024 saw the first LocalGov Drupal Camp, held at the Birmingham Council buildings in Birmingham city center.

It's been ages since I attended an in person Drupal Camp in the UK, so when I saw that the LocalGov Drupal people were organising one just down the road for me I jumped at the chance to grab a ticket.

LocalGov Drupal is a distribution that combines Drupal, some configuration, some contributed modules, and some glue code with the aim of making it easier for councils to generate sites.

The initiative was started a few years ago where two councils (Brighton & Hove City Council & Croydon Council) decided to re-use some of their Drupal work and create a system that they could both benefit from. There are now 44 different councils around the UK who use the distribution in some capacity.

I work with a few of the councils in my day job and I have been really impressed by the power of the distribution. The fact that it is also backed up by a dedicated team of developers really helps with support and future development of the project.

Introductions

The day started with a few introductions and thank you messages, followed by a number of lightning talks from various members of the community.

Read more

Categories: FLOSS Project Planets

Pages