Feeds
Parabola GNU/Linux-libre: makepkg.conf change
Parabola's default makepkg.conf has long loaded /etc/makepkg.d/*.conf. As of makepkg 6.1.0, the program itself now loads /etc/makepkg.conf.d/*.conf, so this part of our makepkg.conf has been removed. Users who have /etc/makepkg.d/*.conf files need to move them to /etc/makepkg.conf.d/.
Freexian Collaborators: Discover release 0.3.0 of the debusine software factory (by Colin Watson)
Debusine is a Free Software project developed by Freexian to manage scheduling and distribution of Debian-related tasks to a network of worker machines. It was started some time back, but its development pace has recently increased significantly thanks to funding from the Sovereign Tech Fund. You can read more about it in its documentation.
For more background, Enrico Zini and Carles Pina i Estany gave a talk on Debusine in November 2023 at the mini-DebConf in Cambridge.
We described the work from our first funded milestone in a post to debian-devel-announce in March.
We’ve recently finished work on our second funded milestone, culminating in releasing version 0.3.0 to unstable. Our focus on this milestone was on new building blocks to allow us to automatically orchestrate QA tasks in bulk. Full details are in our release history document. As usual, debusine.debian.net is up to date with our latest work.
CollectionsIn the previous milestone, debusine could store artifacts and run tasks against those artifacts. However, on its own this required the user to do a lot of manual work, because the only way to refer to an artifact was by its ID.
We now have the concept of a collection, which can store references to other artifacts (or indeed to other collections) with some attached metadata. These are structured by category, so for example a debian:suite collection contains references to source and binary package artifacts with their names, versions, and architectures as metadata. This allows us to look up artifacts using a simple query language instead of just by ID.
At the moment, the main visible effect of this is that our Getting started with debusine tutorial no longer needs users of debusine.debian.net to create their own build environments before being able to submit other work requests: they can refer to existing environments using something like debian/match:codename=trixie:variant=sbuild instead.
We also have a basic user interface allowing you to browse existing collections, accessible via the relevant workspace (such as the default System workspace).
WorkflowsWe’ve always known that individual tasks were just a starting point: real-world requirements often involve chaining many tasks together, as many Debian developers already do using the Salsa CI pipeline. debusine intends to approach a similar problem from a different angle, defining common workflows that can be applied at the scale of a whole distribution without being tightly coupled to where each package’s code is hosted.
In time we intend to define a way for users to specify their own workflows, but rather than getting too bogged down in this we started by building a couple of predefined workflows into debusine. The update_environments workflow is used to create multiple build environments in bulk, while the sbuild workflow builds a source package for all the architectures that it supports and for which debusine has workers. (debusine.debian.net currently has amd64 and arm64 workers, supporting the amd64, arm64, armel, armhf, and i386 architectures between them.)
Upcoming work will build on this by adding more workflows that chain tasks together in various ways, such as workflows that build a package and run QA tasks on the results, or a workflow that builds a package and uploads the result to an upload queue.
Next stepsOur next planned milestone involves expanding debusine’s capability as a build daemon. For that, we already know that there are a number of specific extra workflow steps we need to add, and we’ve reached out to some members of Debian’s buildd team to ask for feedback on what they consider necessary. We hope to be able to replace some of Freexian’s own build infrastructure with debusine in the near future.
Reproducible Builds (diffoscope): diffoscope 268 released
The diffoscope maintainers are pleased to announce the release of diffoscope version 268. This version includes the following changes:
[ Chris Lamb ] * Drop apktool from Build-Depends; we can still test our APK code via autopkgtests. (Closes: #1071410) * Fix tests for 7zip version 24.05. * Add a versioned dependency for at least version 5.4.5 for the xz tests; they fail under (at least xz 5.2.8). (Closes: reproducible-builds/diffoscope#374) [ Vagrant Cascadian ] * Relax Chris' versioned xz test dependency (5.4.5) to also allow version 5.4.1.You find out more by visiting the project homepage.
KDE Plasma 6.1 Beta Release
Here are the major changes available in the Plasma 6.1 beta:
- Triple buffering in KWin for smoother rendering and animations
- Support for the Wayland Explicit Sync protocol, which should improve life for NVIDIA users in particular
- Support for the Input Capture portal
- Remote Desktop system integration to allow RDP clients to connect to Plasma desktops, plus a new page in System Settings for configuring this
- New UX for Plasma's edit mode to make its modality more obvious and visually fancier
- Added a configurable edge barrier between screens, to make it easier to hit UI elements touching the edges between screens. This also allows auto-hide panels on edges between screens to work properly
- Fake session restore on Wayland that at least re-opens apps that were open last time, even if they don't get positioned in the same place. Support for real session restore is still being worked on
- Support for syncing the color of your keyboard's RGB backlight with Plasma's accent color
- Support for using the color profile embedded into the display, for displays that bundle these
- Support in Discover for replacing end-of-support Flatpak apps with their replacements
- Support for the battery conservation mode features on many Lenovo IdeaPad and Legion laptops
- Support for passwordless screen locking, for using it as a screensaver in an environment without security concerns
- You can now middle-click the Power & Battery widget to block and unblock automatic sleep and screen locking, and scroll over it to switch the active power profile
- Slightly rounder corners, and more consistency between corner radius everywhere
- Better window layout algorithm for Overview
- The "Shake cursor to find it" effect has been enabled by default
- New off-by-default effect to hide the mouse pointer after a period of inactivity
- System Settings Keyboard page has been rewritten in QML
Plasma Wayland Protocols 1.13.0
Plasma Wayland Protocls 1.13.0 is now available for packaging.
This adds features needed for the Plasma 6.1 beta.
URL: https://download.kde.org/stable/plasma-wayland-protocols/
SHA256: dd477e352f5ff6e6ac686286c4b22b19bf5a4921b85ee5a7da02bb7aa115d57e
Signed by: E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell jr@jriddell.org
Full changelog:
- plasma-window-management: add a stacking order object
- output device, output management: add brightness setting
- outputdevice,outputconfiguration: add a way to use the EDID-provided color profile
- Enforce passing tests
- output device, management: change the descriptions for sdr gamut wideness
Promet Source: The Ultimate Guide to Drupal Migration for Higher Education
Luke Plant: pyastgrep and custom linting
A while back I released pyastgrep, which is a rewrite of astpath. It’s a tool that allows you to search for specific Python syntax elements using XPath as a query language.
As part of the rewrite, I separated out the layers of code so that it can now be used as a library as well as a command line tool. I haven’t committed to very much API surface area for library usage, but there is enough.
My main personal use of this has been for linting tasks or enforcing of conventions that might be difficult to do otherwise. I don’t always use this – quite often I’d reach for custom Semgrep rules, and at other times I use introspection to enforce conventions. However, there are times when both of these fail or are rather difficult.
ExamplesSome examples of the kinds of rules I’m thinking of include:
Boolean arguments to functions/methods should always be “keyword only”.
Keyword-only arguments are a big win in many cases, and especially when it comes to boolean values. For example, forcing delete_thing(True, False). to be something like delete_thing(permanent=True, force=False) is an easy win, and this is common enough that applying this as a default policy across the code base will probably be a good idea.
The pattern can be distinguished easily at syntax level. Good:
def foo(*, my_bool_arg: bool): ...Bad:
def foo(my_bool_arg: bool): ...Simple coding conventions like “Don’t use single letter variables like i or j as a loop variables, use index or idx instead”.
This can be found by looking for code like:
for i, val in enumerate(...): ...You might not care about this, but if you do, you really want the rule to be applied as an automated test, not a nit-picky code review.
A Django-specific one: for inclusion tags, the tag names should match the template file name. This is nice for consistency and code navigation, plus I actually have some custom “jump to definition” code in my editor that relies on it for fast navigation.
The pattern can again be seen quite easily at the syntax level. Good:
@inclusion_tag("something/foo.html") def foo(): ...Bad:
@inclusion_tag("something/bar.html") def foo(): ...Any ’task’ (something decorated with @task) should be named foo_task or foo_task, in order to give a clue that it works as an asynchronous call, and its return value is just a promise object.
There are many more examples you’ll come up with once you start thinking like this.
MethodHaving identified the bad patterns we want to find and fix, my method for doing so looks as follows. It contains a number of tips and refinements I’ve made over the past few years.
First, I open a test file, e.g. tests/test_conventions.py, and start by inserting some example code – at least one bad example (the kind we are trying to fix), and one good example.
There are a few reasons for this:
First, I need to make sure I can prove life exists on earth, as John D. Cook puts it. I’ll say more about this later on.
Second, it gives me a deliberately simplified bit of code that I can pass to pyastdump.
Third, it provides some explanation for the test you are going to write, and a potentially rather hairy XPath expression.
I’ll use my first example above, keyword-only boolean args. I start by inserting the following text into my test file:
def bad_boolean_arg(foo: bool): pass def good_boolean_arg(*, foo: bool): passThen, I copy both of these in turn to the clipboard (or both together if there isn’t much code, like in this case), and pass them through pyastdump. From a terminal, I do:
$ xsel | pyastdump -I’m using the xsel Linux utility, you can also use xclip -out, or pbpaste on MacOS, or Get-Clipboard in Powershell.
This gives me some AST to look at, structured as XML:
<Module> <body> <FunctionDef lineno="1" col_offset="0" type="str" name="bad_boolean_arg"> <args> <arguments> <posonlyargs/> <args> <arg lineno="1" col_offset="20" type="str" arg="foo"> <annotation> <Name lineno="1" col_offset="25" type="str" id="bool"> <ctx> <Load/> </ctx> </Name> </annotation> </arg> </args> <kwonlyargs/> <kw_defaults/> <defaults/> </arguments> </args> <body> <Pass lineno="2" col_offset="4"/> </body> <decorator_list/> </FunctionDef> </body> <type_ignores/> </Module>In this case, the current structure of Python’s AST has helped us out a lot – it has separated out posonlyargs (positional only arguments), args (positional or keyword), and kwonlyargs (keyword only args). We can see the offending annotation containing a Name with id="bool" inside the args, when we want it only to be allowed as a keyword-only argument.
(Do we want to disallow boolean-annotated arguments as positional only? I’m leaning towards “no” here, as positional only is quite rare and usually a very deliberate choice).
I now have to construct an XPath expression that will find the offending XML nodes, but not match good examples. It’s pretty straightforward in this case, once you know the basics of XPath. I test it out straight away at the CLI:
pyastgrep './/FunctionDef/args/arguments/args/arg/annotation/Name[@id="bool"]' tests/test_conventions.pyIf I’ve done it correctly, it should print my bad example, and not my good example.
Then I widen the net, omitting tests/test_conventions.py to search everywhere in my current directory.
At this point, I’ve probably got some real results that I want to address, but I might also notice there are other variants of the same thing I need to be able to match, and so I iterate, adding more bad/good examples as necessary.
Now I need to write a test. It’s going to look like this:
def test_boolean_arguments_are_keyword_only(): assert_expected_pyastgrep_matches( """ .//FunctionDef/args/arguments/args/arg/annotation/Name[@id="bool"] """, message="Function arguments with type `bool` should be keyword-only", expected_count=1, )Of course, the real work is being done inside my assert_expected_pyastgrep_matches utility, which looks like this:
from pathlib import Path from boltons import iterutils from pyastgrep.api import Match, search_python_files SRC_ROOT = Path(__file__).parent.parent.resolve() # depends on project structure def assert_expected_pyastgrep_matches(xpath_expr: str, *, expected_count: int, message: str): """ Asserts that the pyastgrep XPath expression matches only `expected_count` times, each of which must be marked with `pyastgrep_exception` `message` is a message to be printed on failure. """ xpath_expr = xpath_expr.strip() matches: list[Match] = [item for item in search_python_files([SRC_ROOT], xpath_expr) if isinstance(item, Match)] expected_matches, other_matches = iterutils.partition( matches, key=lambda match: "pyastgrep: expected" in match.matching_line ) if len(expected_matches) < expected_count: assert False, f"Expected {expected_count} matches but found {len(expected_matches)} for {xpath_expr}" assert not other_matches, ( message + "\n Failing examples:\n" + "\n".join( f" {match.path}:{match.position.lineno}:{match.position.col_offset}:{match.matching_line}" for match in other_matches ) )There is a bit of explaining to do now.
Being sure that you can “find life on earth” is especially important for a negative test like this. It would be very easy to have an XPath query that you thought worked but didn’t, as it might just silently return zero results. In addition, Python’s AST is not stable – so a query that works now might stop working in the future.
It’s like you have a machine that claims to be able to find needles in haystacks – when it comes back and says “no needles found”, do you believe it? To increase your confidence that everything works and continues to work, you place a few needles at locations that you know, then check that the machine is able to find those needles. When it claims “found exactly 2 needles”, and you can account for those, you’ve got much more confidence that it has indeed found the only needles.
So, it’s important to leave my bad examples in there.
But, I obviously don’t want the bad examples to cause the test to fail! In addition, I want a mechanism for exceptions. A simple mechanism I’ve chosen is to add the text pyastgrep: expected as a comment.
So, I need to change my bad example like this:
def bad_boolean_arg(foo: bool): # pyastgrep: expected passI also pass expected_count=1 to indicate that I expect to find at least one bad example (or more, if I’ve added more bad examples).
Hopefully that explains everything assert_expected_pyastgrep_matches does. A couple more notes:
it uses boltons, a pretty useful set of Python utilities
it requires a SRC_ROOT folder to be defined, which will depend on your project, and might be different depending on which folder(s) you want to apply the convention too.
Now, everything is set up, and I run the test for real, hopefully locating all the bad usages. I work through them and fix, then leave the test in.
Tipspyastgrep works strictly at the syntax level, so unlike Semgrep you might get caught out by aliases if you try match on specific names:
from foo import bar from foo import bar as foo_bar import foo # These all call the same function but look different in AST: foo.bar() bar() foo_bar()There is however, an advantage to this – you don’t need a real import to construct your bad examples, you can just use a Mock. e.g. for my inclusion_tag example above, I have code like:
from unittest.mock import Mock register = Mock() @register.inclusion_tag(filename="something/not_bad_tag.html") def bad_tag(): # pyastgrep: expected passYou can see the full code on GitHub.
You might be able to use a mixture of techniques:
A Semgrep rule avoids one set of bad patterns using some thirdparty.func, and requiring everyone to use your own wrapper, which is then constructed in such a way to make it easier to apply a pyastgrep rule
Some introspection that produces a list of classes or functions to which some rule applies, then dynamically generates XPath expression to pass to pyastgrep.
Syntax level searching isn’t right for every job, but it can be a powerful addition to your toolkit, and with a decent query language like XPath, you can do a surprising amount. Have a look at the pyastgrep examples for inspiration!
Mike Driscoll: Episode 41 – Python Packaging and FOSS with Armin Ronacher
In this episode, I chatted with Armin Ronacher about his many amazing Python packages, such as pygments, flask, Jinja, Rye, and Click!
Specifically, we talked about the following:
- How Flask came about
- Favorite Python packages
- Python packaging
- and much more!
The post Episode 41 – Python Packaging and FOSS with Armin Ronacher appeared first on Mouse Vs Python.
Wim Leers: XB week 1: 0.x branch opened!
Acquia is sponsoring me full-time to operate as the tech lead for Experience Builder — thanks!
Dries announced the formal start of the Experience Builder initiative at DrupalCon Portland 2024, on May 6. Shortly before DrupalCon, Drupal core product manager Lauri already shared the findings of the deep & wide research he conducted in prior months.
During the (entire!) month of March, Lauri walked some members of Acquia’s Drupal Acceleration Team (Ben “bnjmnm”, Ted “tedbow” Bowman,
“hooroomoo”, Alex “effulgentsia” Bronstein, Tim Plunkett and I) as well as the lead front-end and lead back-end developer of Acquia’s Site Studio team (Felix Mazeikis and Jesse Baker) through the product requirements that were identified for Drupal to leapfrog its competitors on this front.
We spent that month understanding those requirements and do an initial pass at sizing them. To be able to refine the estimates, we started building proof-of-concepts for the riskiest areas. For example, I started one for dynamically loading a different “design version”, and a few days later another one for validating the data model proposed by Alex.
These proof-of-concepts have been shared with long-time Drupal core contributors while they were being worked on — for example, we asked feedback from Mateu “e0ipso” at Lullabot from the very start since Single Directory Components are his brain child. We asked feedback from Lee “larowlan” Rowlands at PreviousNext given his work on Decoupled Layout Builder. And so on.
They’re hacky as hell — the purpose was to explore connections between concepts and check viability.
At DrupalCon, Dries revealed that he’d love to see organizations using Drupal to contribute back significantly to both Starshot (the other announcement, which will include Experience Builder once it’s ready). So at DrupalCon, Lauri and I found many people asking us how to start contributing — an excellent new challenge to have!
We’re currently in an awkward phase to welcome contributors. Because despite a clear product ambition/vision, we are in the very early stages of defining the concrete UX (Acquia’s UX team is working on wireframes and did user testing at DrupalCon). And during DrupalCon, there was no code base to point to!
So, during the week after DrupalCon, hooroomoo got a 0.x branch of Experience Builder going, cooking up a delightful hodgepodge of various PoC branches we’d worked on.
On Thursday May 16, Lauri and I met with 6 (!!!) people of the PreviousNext team, where they have not only serious Drupal core expertise, but also deep Layout Builder and JS knowledge — they offered to run the asynchronous meetings in the #experience-builder Drupal Slack channel. They’ve used this pattern before with great success, and it is the only viable way to truly involve the global Drupal community.
By the end of the week I got GitLab CI pipelines going (PHPStan L8!). Ready for more serious work in week 2 :)
The Drop Times: EvolveDrupal: Insights from Atlanta & What's Next in Montreal!
DrupalEasy: Ruminations on Drupal Starshot
a second official version of Drupal
- Dries Buytaert, in his blog post announcing Drupal Starshot
If you're a Drupal developer of any caliber and pay any attention to the goings-on in the Drupal community, then you no doubt have heard about Starshot, recently announced by Dries Buytaert at DrupalCon Portland 2024.
In this post, I'll do my best to not repeat everything that was announced, but rather to summarize, ask a question or two and offer an opinion or two…
The basicsStarshot will be a new download available on drupal.org that includes contributed modules and configuration to provide a superior out-of-the-box solution that is more usable/approachable/friendlier than Drupal core.
In my opinion, Starshot can be thought of (generally speaking of course) as two-ish large tasks. First, full integration with Automatic Updates, Project Browser and Recipes (including full Recipe support in Project Browser.) Second; Experience Builder, which is planned to be (roughly speaking) some combination of Layout Builder (or a replacement,) Paragraphs, Single Directory Components, an in-browser styling tool and other modules/configuration to provide a best-of-breed page-building solution.
The -ish in two-ish from above is all the additional functionality that having full Recipes support will bring. IMHO, this is the star in Starshot.
Note: Experience Builder is not new - it is an evolution of Next generation page builder initiative that started in 2023.
Why?In his keynote, Dries spoke about the need for Starshot over the course of a few minutes, enumerating various reasons why he and others in the community feel this is a necessary task, including the fact that Drupal's UI is difficult to use for new users.
I think Mike Herchel summed the Why up nicely in his blog post:
It’s an acknowledgement of the perception that Drupal is archaic and/or legacy software, and that this perception needs to change.
Starshot is the Drupal community's effort to win back small- and medium-sized sites that don't currently even consider using Drupal.
Furthermore, one of the main goals of Drupal Starshot is to allow for faster innovation cycles, allowing Starshot to add functionality at a faster pace than Drupal core.
TimelineThere's a countdown clock to liftoff on drupal.org/starshot that is currently at a bit over 200 days. Based on this, Starshot will be ready by January 1, 2025. Dries mentioned in his keynote that the goal was to have an initial release by the end of 2024.
There's actually a very early prototype of a subset of the functionality available from phenaproxima (Adam G-H.)
I'm a bit dubious about all of the mentioned functionality of Starshot being ready by the end of the year. More of my opinion on this in a bit…
Relationship to Drupal coreIt's not a fork - that much is clear. It will include Drupal core, but have its own release schedule. I can only imagine that any time Drupal core has a security update, there will be a new Starshot release (as well as any time any of the contrib modules used in Starshot have a security release as well, I assume)
What's up with the "Launch" button?One of my biggest questions after Dries' keynote was based on a mockup of a drupal.org page that he presented.
What happens when someone clicks "Launch?" I've been a proponent of the Drupal Association engaging/partnering with low-cost hosting providers to provide a way to easily provide hosting for a Drupal site that supports relies on Automatic Updates and Project Browser. The community has invested a lot of time in both of these initiatives, and I feel that neither really has a hosting "home." What would be a better way to officially launch these projects than hosting partners that fully support both, as well as a meaningful site backup plan, all included in a low monthly hosting price. IMHO, this type of thing should definitely be one of the options behind the mysterious "Launch" button. Maybe the DA gets a small referral fee from the hosting providers as well?
Gábor Hojtsy writes in his blog post about Starshot, "Discussions around making simple hosting available for simpler sites was reignited and a WebAssembly-based browser-executed demo solution's feasibility is also explored again." He also mentioned the potential for a WebAssembly-based option in his DrupalCon Portland 2024 session about Drupal 11, as well as options for ephemeral (temporary) hosting solutions (think SimplyTest.me.)
Will the plan and/or timeline change?Absolutely. Dries and other folks already involved in Starshot admit that there's a lot of things to still figure out, decisions to be made and a lot of work to do to make all this a reality. Nothing is set in stone.
If I had a magic wand 🪄As exciting as Experience Builder sounds, I'm worried that this is going to take a long time. In addition, as we've seen with the plethora of Layout Builder related contrib modules, there is often no one-size-fits-all solution for page creation.
From my perspective, I think that Drupal Starshot (or Drupal CMS, or whatever we end up calling it) phase 1 should be Automatic Updates, Project Browser, Recipes, and a set of curated recipes available geared towards page building. Experience Builder should be phase 2.
Being able to install recipes from Project Browser (leveraging Package Manager from Automatic Updates) will be a game-changer.
The way I look at it is with full Recipes support, we don't have to have just one Experience Builder, we can have many. We can have simpler ones (sooner) and more intricate ones (later.) We can have recipes that leverage Layout Builder and any number of the currently existing supporting contrib modules or recipes that focus on Paragraphs. The cream will rise to the top as the various Experience Builder modules are written, tested, and released.
Simon Hobbs agrees that Recipes is the "secret sauce" to Starshot in his optimistic blog post.
Community reactionIn the two-ish weeks since Dries announced Starshot, Drupal agencies from around the world have weighed in with their support, including PreviousNext from Australia (blog post by Kim Pepper,) 1xINTERNET from Europe (announcement,) Specbee (blog post by Malabya Tewari,) and (obviously) Acquia (United States.)
In my conversations with folks while at DrupalCon Portland 2024, reactions were mostly positive, but some folks had some concerns; with the leading issue being that (paraphrasing) the announcement feels like there were some internal (non-public) discussions about doing Starshot following by a "we are doing this" announcement by Dries. While I don't completely agree with this sentiment, I do understand it. The main pieces of Starshot have been open to discussion in the community, while the idea of putting them all together into a new "product" is something that (as far as I could tell) wasn't necessarily widely open for community input.
Additional resources- If you're only going to read one (more) "reaction" blog post about Starshot, I recommend Mike Herchel's, despite the fact that we disagree about the most important part of Starshot (he says Experience Builder, I say Recipes: stay tuned for a future cage match.) Regardless of his incorrect opinion 😜, his blog post is quite comprehensive.
- Blog post from Taylor Paine at Five Jars about Starshot.
- Matt Glaman's reaction to the Starshot announcement (focuses on Recipes.)
- Blog post from Nadiia Nykolaichuk from ImageX
- Press release about Starshot from the Drupal Association
- Paul Johnson't blog post about Starshot
- Electric Citizen blog post by Dan Moriarty
Salsa Digital: Why Use Drupal?
Exploring openness in AI: Insights from the Columbia Convening
Over the past year, a robust debate has emerged regarding the benefits and risks of open sourcing foundation models in AI. This discussion has often been characterized by high-level generalities or narrow focuses on specific technical attributes. One of the key challenges—one that the OSI community is addressing head on—is defining Open Source within the context of foundation models.
A new framework is proposed to help inform practical and nuanced decisions about the openness of AI systems, including foundation models. The recent proceedings from the Columbia Convening on Openness in Artificial Intelligence, made available for the first time this week, are a welcome addition to the process.
The Columbia Convening brought together experts and stakeholders to discuss the complexities and nuances of openness in AI. The goal was not to define Open Source AI but to illuminate the multifaceted nature of the issue. The proceedings reflect the February conversations and are based on the backgrounder text developed collaboratively with the working group.
One of the significant contributions of these proceedings is the framework for understanding openness across the AI stack. The framework summarizes previous work on the topic, analyzes the various reasons for pursuing openness, and outlines how openness varies in different parts of the AI stack, both at the model and system levels. This approach provides a common descriptive framework to deepen a more nuanced and rigorous understanding of openness in AI. It also aims to enable further work around definitions of openness and safety in AI.
The proceedings emphasize the importance of recognizing safety safeguards, licenses, and documents as attributes rather than components of the AI stack. This evolution from a model stack to a system stack underscores the dynamic nature of the AI field and the need for adaptable frameworks.
These proceedings are set to be released in time for the upcoming AI Safety Summit in South Korea. This timely release will help maintain momentum ahead of further discussions on openness at the French summit in 2025.
We’re happy to see collaboration of like-minded individuals in discussing and solving the varied problems associated with openness in AI.
Python Anywhere: New help page: Playwright
We’ve had an increasing number of people asking us how to use Playwright on PythonAnywhere. Playwright is a browser automation framework that was developed by Microsoft; like the more-established Selenium it’s really useful for testing and web-scraping, and it’s getting a reputation for being a robust and fast library for that kind of work.
Getting it set up to run on PythonAnywhere is pretty easy, but you need to do the installation slightly differently to the way it’s documented on Playwright’s own site; user hcaptcha on our forums worked out what the trick was to making it work, so now we have a new help page documenting how to do it.
EuroPython: EuroPython May 2024 Newsletter
Hello, Python people! 🐍
Welcome back to our cosy corner of community & code!
It&aposs absolutely fantastic to have you here again, especially as we countdown the days until our reunion in Prague! 🎉 It’s been months since our last gathering in this magical city, and we couldn’t be more excited to be back.
Fun fact: did you know that Czechia has recently been ranked among the world&aposs top 20 happiest countries? It&aposs the ideal place to spark joy and inspiration as we come together once again.
A lot of things have happened since our last catch-up. Let’s dive right into it!
📣 ProgrammeAs you might know, we reached a record number of submitted proposals this year. After analyzing 627 submissions, we are glad to announce a sneak peek of what you will see at EuroPython this year.
If you are still not convinced to join us, we have another big announcement! Here are the keynote speakers we have lined up. 🌟
- Carol Willing - Three-time Python Steering Council membership, Core Developer status, and PSF Fellow
- Tereza Iofciu - Seasoned data pro with 15 years experience, Python community star, won the PSF community service award in 2021
- Łukasz Langa - CPython Developer in Residence, Python 3.8 & 3.9 release manager, original creator of Black, pianist, dad
- Mai Giménez - Google Deepmind senior engineer specializing in large language and multimodal models, former Spanish Python Association board member 🐍
- Armin Ronacher - Creator of popular Python libraries such as Flask, Jinja, and Click, Armin is currently the VP of Platform at Sentry.
- Anna Přistoupilová - Bioinformatics scientist focused on genome analysis techniques and their applications in understanding rare genetic diseases. She received the Bolzano Award for her doctoral thesis.
The schedule is gonna be packed with all your amazing talks, tutorials and posters. The official schedule with the dates and times will be posted soon! Keep those eyes open on our social media channels and website! 📅✨
All of this wouldn’t be real without the great efforts of the EuroPython programme team. Many volunteers from all teams spared their time to reach out to people and review the proposals. ❤️
🙌 Big cheers to those who helped shape the EuroPython programme making EuroPython 2024 the best one yet! 🚀🐍
Let us better introduce the listed EuroPython 2024 keynote speakers! ⚡️🐍❤️
Keynote speaker #1: Carol WillingCarol WillingDon&apost miss your chance to hear from Carol Willing, who is a three-time Python Steering Council member, Python Core Developer, PSF Fellow, and Project Jupyter core contributor. 🔥
In 2019, she was honoured with the Frank Willison Award for her outstanding technical and community contributions to Python. Carol played a pivotal role in Project Jupyter, recognized with the prestigious 2017 ACM Software System Award for its enduring impact. Being the leading figure in open science and open-source governance herself. Carol serves on the advisory boards of Quansight Labs, CZI Open Science, and pyOpenSci.
She’s committed to democratizing open science through accessible tools and learning resources, and most recently served as Noteable&aposs VP of Engineering.
Get ready to be inspired by Carol&aposs insights at EuroPython 2024!
Keynote speaker #2: Tereza IofciuTereza IofciuGet ready to be inspired by Tereza Iofciu, a seasoned data practitioner and leadership coach with over 15 years of expertise in Data Science, Data Engineering, Product Management, and Team Management. 🔥
Tereza&aposs dedication to the Python Community is unmatched; she has worn numerous hats over the years, serving as the organiser for PyLadies Hamburg, board member of Python Software Verband, steering committee member of NumFocus DISC, and team member of Python Software Foundation Code of Conduct. Not stopping there, Tereza is also actively involved in promoting Diversity & Inclusion as a working group member, while also taking the roles of the organiser for PyConDE & PyData Berlin, Python Pizza Hamburg, and co-leader of PyPodcats (If you haven&apost heard, PyPodcats is a fantastic new podcast dedicated to highlighting the hidden figures of the Python community. Led by the PyPodcats team—Cheuk Ting Ho, Georgi Ker, Mariatta Wijaya, and Tereza Iofciu— aimed to amplify the voices of underrepresented group members within the Python community). 🐈🐱
In recognition of her outstanding contributions, Tereza was honoured with the Python Software Foundation Community Service Award in 2021. Now, if that&aposs not a sign to catch her awesome keynote, I don&apost know what is!
Keynote speaker #3: Łukasz LangaIntroducing Łukasz Langa: a polymath whose impact on the Python ecosystem is as diverse as his array of interests!
As the CPython Developer in Residence and the mastermind behind Python 3.8 & 3.9 releases, Łukasz plays a pivotal role in shaping the future of Python. He&aposs the original creator of Black, revolutionising the way we write Python code.
Beyond his coding prowess, Łukasz is a talented pianist and a devoted father.
When he&aposs not immersed in Python development, you&aposll find him indulging his passions for analogue modular synthesisers 😍, immersing himself in captivating single-player role-playing games like Fallout and Elder Scrolls, or relishing in the complexity of a fine single malt Scotch whisky.
Brace yourself for an enlightening journey through Łukasz&aposs experiences and insights! 🚀🎹🥃
Keynote speaker #4: Mai GiménezMai GiménezAllow us to introduce Mai Giménez, Ph.D., a senior research engineer at Google DeepMind specialising in large language and multimodal models.
Mai&aposs passion lies in crafting technology that benefits everyone, with her primary research focus being on language and the sociotechnical impacts of AI in the real world. The impact of her contributions extends beyond her work at Google DeepMind. She&aposs a former board member of the Spanish Python Association and has played a pivotal role in organising several PyConES conferences.
Additionally, Mai proudly contributes to the Python community as a member of PyLadies. Get ready to be inspired by Mai&aposs expertise and insights as she graces the stage at EP24! 🌟
Keynote speaker #5: Armin RonacherA household name in the open-source world Armin Ronacher is the creator of popular Python libraries such as Flask, Jinja, and Click, Armin has left quite a mark on the Python ecosystem, empowering developers worldwide with efficient tools and frameworks.
Armin RonacherHe is currently the VP of Platform at Sentry and recently he started an experimental Python package and project manager that attempts to bring Rust’s modern developer experience to Python. We are so excited to hear from him at EuroPython 2024!
Keynote speaker #6: Anna PřistoupilováPut your hands together for Anna Přistoupilová!! Anna is a bioinformatics scientist focused on genome analysis techniques and their applications in understanding rare genetic diseases. She received the Bolzano Award for her doctoral thesis!
Anna PřistoupilováAnna holds a PhD in Molecular and Cell Biology, Genetics, and Virology and two MSc degrees: one in Medical Technology and Informatics, and the other in Molecular Biology and Genetics, all from Charles University.
She has co-authored over 25 publications in peer-reviewed journals and has presented her work at various scientific conferences.
Currently, Anna works as a Senior Bioinformatics Scientist at DNAnexus company, where she assists customers with their bioinformatics analysis. She also conducts research at the Research Unit for Rare Diseases at the First Faculty of Medicine, Charles University.
🎟️ Conference RegistrationIt&aposs time to secure your tickets for the conference!
We&aposve heard you loud and clear—you don’t want to miss the opportunity to hear from our incredible keynote speakers and be a part of EuroPython 2024.
Here&aposs the list of tickets available for purchase.👇
- Conference Tickets: access to the main Conference AND Sprints Weekend
- Tutorial Tickets: access to the two days of Workshops AND Sprints Weekend. NO access to the main event.
- Combined Tickets: access to everything for the seven days! Includes workshops, main Conference and Sprints weekend.
Other than the types, there are also payment tiers that are offered to answer each participant’s needs. Such as:
- Business Tickets (for companies and employees funded by their companies)
- Personal Tickets (for individuals)
- Education Tickets (for students and teachers, an educational ID is required at the registration)
For those who cannot physically join us but still want to support the community, we have the remote ticket option.
- Remote ticket: access to the Live streaming of the talks, Q&A with the speakers and Discord server.
Join us and connect with the delightful community of Pythonistas in Prague. Make your summer more fun!
Need more information regarding tickets? Please visit the website or contact us at helpdesk@europython.eu!
⚖️ Visa ApplicationNot sure if you need one? Please check the website and consult your local consular office or embassy. 🏫
If you do need a visa to attend EuroPython 2024, you can lodge a visa application issued for Short Stay (C), up to 90 days, for the purpose of “Business /Conference”. Please, do it ASAP!
Make sure you read all the visa pages carefully and prepare all the required documents before making your application. The EuroPython organizers are not able nor qualified to give visa advice.
However, we’re more than happy to help you with a visa support letter. But before sending your request, please note that you will need to be registered to request the letter. We can only issue visa support letters to confirmed participants.
Hence, We kindly ask you to purchase your ticket before filling in the request form.
For more information, please check https://ep2024.europython.eu/visa or contact us at visa@europython.eu. ✈️
💶 Financial AidThe first round of our Financial Aid Programme received record-high applications this year and we are very proud to be supporting so many Pythonistas to attend the conference.
The second round of applications wrapped up on May 19th and now the team is actively working to individually review the applications! More information at https://ep2024.europython.eu/finaid/.
💰 SponsorshipIf you want to support EuroPython and its efforts to make the event accessible to everyone, please consider sponsoring, or asking your employer to do so. More information at: https://ep2024.europython.eu/sponsor 🫂
Sponsoring EuroPython guarantees you highly targeted visibility and the opportunity to present yourself/your company to one of the largest and most diverse Python communities in Europe and beyond!
There are several sponsor tiers and slots are limited. This year, besides our main packages, we offer add-ons as optional extras where companies can opt to support the community in many other ways:
- By directly sponsoring the PyLadies lunch event
- By supporting participants by funding Financial Aid
- By having their logo on all lanyards of the conference
- Or even by improving the event’s accessibility.
Interested? Email us at sponsoring@europython.eu.
🤝Join us as a Volunteer!To make the conference an amazing experience for everyone, we need enthusiastic on-site volunteers from July 8-14. Whether you&aposre confident at leading people, love chatting with new folks at registration, are interested in chairing a session or just want to help out - we&aposve got a role for you. Volunteering is a fantastic way to gain experience, make new connections, and have lots of fun while doing it.
Interested? Have a look at https://ep2024.europython.eu/volunteers to find out more and how to apply.
We&aposre also considering remote volunteers, so if you&aposre interested in helping out but can&apost make it to Prague, please mention that explicitly in your email.
We can&apost wait to see you in Prague! 🚀
🎟Events @EuroPythonEuroPython 2023 social eventThis year, we want to make our social event bigger and better for everyone. Hence, we are planning to host a bigger party. Tickets will be available for purchase on the website soon! Stay tuned.
🎉 CommunityEuroPython at PyCon Italia 🇮🇹 May 22nd - 25th 2024PyCon Italia 2024 will happen in Florence. The birthplace of Renaissance will receive a wave of Pythonistas looking to geek out this year, including a lot of EuroPython people.
If you are going to PyCon Italia (tickets are sold out) join us to help organise EuroPython 2024!
🎤 First-Time Speaker WorkshopJoin us for the Speaker’s Mentorship Programme - First-Time Speaker Workshop on Monday, June 3rd, at 19:00 CEST! 🎤
This online panel session features experienced speakers sharing advice for first-time (or other) speakers. Following the panel discussion, there will be a dedicated Q&A session to address all participants&apos inquiries. The event is open to the public, and registration is required through this form.
As the event date approaches, registered participants will receive further details via email. Don&apost miss this opportunity to learn and grow as a speaker!
News from the EuroPython Community❣️- Check out our phenomenal co-organizer Mia Bajic on a recent podcast where she shared her experiences volunteering in the Python community! 🎙️ Mia is a true pillar of the Python community, she has shared her expertise and passion at multiple PyCons across the globe. 🌍 Her efforts extend beyond borders as she tirelessly works to bring Pythonic people together in Prague, hosting events such as Pyvo and the first-ever Python Pizza in the city! 🍕 Mia&aposs dedication and contributions make both Czech Python community and EuroPython a better place, and we&aposre beyond grateful to have her on board shaping the EuroPython experience. 🙌 Note: The podcast is in Czech. 🎧
Podcast: https://www.youtube.com/watch?v=-UcHqap89Ac
- Joana is doing a Master&aposs in Medical Imaging and Applications. Originally from Ghana, she joined the Communications team of EuroPython this year bringing her experience and innovative thinking from PyLadies Ghana.
She wrote an article about her Community involvement and the impact it has had on her career. She says:
I met and saw women who had achieved great things in data science and machine learning, which meant that I could also, through their stories, find a plan to at least help me get close to what they had done.Full article: https://blog.europython.eu/community-post-invisible-threads/
- GeoPython 2024 will happen in Basel, Switzerland.
For more information about GeoPython 2024, you can visit their website: https://2024.geopython.net/
Djangocon.eu: June 5-9 2024DjangoCon Europe 2024 will happen in Vigo, Spain. You can check more information about Django Con Europe at their lovely website (https://2024.djangocon.eu/)
PyCon Portugal: 17-19 October 2024Pycon Portugal will happen in Altice Forum, Braga. More information on the official website: https://2024.pycon.pt/
PyCon Poland: August 29th - September 1stThe 16th edition of PyCon PL is happening in Gliwice! For more information, visit their website https://pl.pycon.org/2024
PyCon Taiwan 2024: September 21st - September 22ndPyCon Taiwan will introduce a new activity segment: Poster Session! The deadline to submit your posters is June 15th, through the submission form.
More information on their website: https://tw.pycon.org/2024/en-us
🤭 Py.Jokes~ pyjoke Two threads walk into a bar. The barkeeper looks up and yells, &aposHey, I want don&apost any conditions race like time last!&apos🐣 See You All Next MonthBefore saying goodbye, thank you so much for reading. We can’t wait to reunite with all you amazing people in beautiful Prague again.
It truly is time to make new Python memories together!
With so much joy and excitement,
EuroPython 2024 Team 🤗
Matt Layman: Export Journal Feature - Building SaaS with Python and Django #191
KDE Gear 24.05.0
Dolphin lets you navigate your folders and files, move and copy things from one place to another, connect to file servers and manage everything in your local and remote storage.
It is important to the Dolphin team that you can see what is happening at all times, and we have implemented animations to help you follow every action. For example, dragging a file or folder over another folder triggers a subtle animation if the option to open the folder is enabled. Dolphin's bars also animate when they appear and disappear.
Dolphin also provides more tailored and informative insights into specific folders by default, so when browsing through recently used files and folders, users will find modification times listed by default and have streamlined access to the most recent items. Similarly, the Trash folder now offers detailed information on the time and origin of each deleted file.
During searches, Dolphin has refined its result views to offer more pertinent details. For images, we display dimensions and creation times, while audio files reveal track information such as author, album, and duration. For general searches, results are conveniently accompanied by their respective paths and modification times, so you have all the context you need at your fingertips.
Seamless navigation through interfaces is crucial for users around the world, and our latest update delivers just that. Now, when using right-to-left languages such as Arabic or Hebrew, Dolphin's arrow navigation works flawlessly.
ItineraryItinerary now shows more information about your train and coach facilities (where this information is available). This includes general comfort features such as air conditioning or WiFi, as well as things specifically relevant if you are traveling with young children, a bicycle, or a wheelchair. These can also be qualified by availability (e.g. if they require a special reservation) and marked as disrupted. This information is displayed when viewing a train's car layout and when searching for a connection.
The Itinerary team, in collaboration with other open source projects, has started work on a community-run, vendor-neutral international public transport routing service called Transitous. Transitous aims to focus on users' interests rather than on those of public transport operators). It is free to use, respects users' privacy, and does not stop at borders. We are now at a point where public transport information is available for a large part of Europe, and the data for services outside Europe is growing. The amount of information is now large enough that we have decided to enable support for Transitous by default in Itinerary and KTrip.
As with most updates, we've improved the coverage of travel document extractors, as well as adding support for a number of companies including AMSBus, ANA, Deutsche Bahn, Eckerö Line, Elron, European Sleeper, Eurostar, Eventim, Finnair, Flibco, Leo Express, LTG Link, Moongate, National Express, Pasažieru vilciens, Salzbergwerk, SNCF, Thalys, ti.to, Trenitalia and UK National Railways.
NeoChatNeoChat is a chat app that lets you take full advantage of the Matrix network.
In its newest version, we moved the search to a popup allowing you to search for a conversation independently of the space you are in.
NeoChat will also now scan PDFs and other files sent to the chat for travel documents, and displaying all the relevant information directly in your conversation. All the processing is done on your device and no private information is sent to any third parties servers. Similarly your text documents will be directly displayed in the timeline.
TokodonTokodon brings the Mastodon federated social media platform to your fingertips. With Tokodon you can read, post, and message easily. Now when writing a new post, it is possible to do that in a separate window, allowing you to continue using Tokodon while writing your post.
In this release, we also added a badge counter for follow requests in the sidebar.
KdenliveKdenlive is KDE's full-featured video editor that gives you everything you need to build advertisements, documentaries, TV shows, and full-fledged movies.
Version 24.05 adds Group Effects, effects that can be added to clips grouped together all at the same time. You can also reach wider audiences by using an offline AI that can translate your subtitles with the Automatic Subtitle Translations feature.
The feature that allows you to capture audio from your desktop or microphone from directly within Kdenlive is back, and the performance of moving clips with the spacer tool has been hugely improved. The multiple resource bins management feature (bins being the areas where you keep your clips, images, titles and animations) has also been reworked and improved.
ElisaElisa is KDE's elegant and feature-rich music player. Yet another improvement to its already sleek design is that this new version lets you switch between list and grid views.
And all this too...Ark helps you manage compressed files and archives. Ark can now open and un-archive self-extracting .exe archive files
The date and time picker in Merkuro has been updated and is now significantly faster.
The reading experience on Akregator, KDE's RSS news reader, is more pleasant in this version thanks to a new layout and the support of dark themes.
Full changelog here Where to get KDE Apps
Although we fully support distributions that ship our software, KDE Gear 24.05 apps will also be available on these Linux app stores shortly:
Flathub SnapcraftIf you'd like to help us get more KDE applications into the app stores, support more app stores and get the apps better integrated into our development process, come say hi in our All About the Apps chat room.
Ned Batchelder: Echos of the People API user guide
PyCon 2024 just happened, and as always it was a whirlwind of re-connecting with old friends, meeting new friends, talking about anything and everything, juggling, and getting simultaneously energized and exhausted. I won’t write about everything that happened, but one thread sticks with me: the continuing echos of my talk from last year.
If you haven’t seen it yet, I spoke at PyCon 2023 about the ways engineers can use their engineering skills to interact better with people, something engineers stereotypically need help with. I called it People: The API User’s Guide.
A number of people mentioned the talk to me this year, which was very gratifying. It’s good to hear that it stuck with people. A few said they had passed it on to others, which is a real sign that it landed well with them.
On the other hand, at lunch one day, someone asked me if I had done a talk last year, and I sheepishly answered, “um, yeah, I did the opening keynote...” It’s hard to answer that question without it becoming a humble brag!
The most unexpected echo of the talk was at the coverage.py sprint table. Ludovico Bianchi was working away when he turned to me and said, “oh, I forgot to send you this last year!” He showed me this picture he drew during the talk a year ago:
I’ve only ever stayed for one day of sprints. It can be hard to get people started on meaty issues in that short time. We have a good time anyway, and merge a few pull requests. This year, three people came back who sprinted with me in 2023, another sign that something is going right.
Once the sprint was over, Ludovico also sketched Sleepy into the group photo of the sprint gang:
Half the fun of preparing last year’s talk was art-directing the illustrations by my son Ben, similar to how we had worked to make Sleepy Snake. As much as I like hearing that people like my words, as a dad it’s just as good to hear that people like Ben’s art. Seeing other people play with Sleepy in clever ways is extra fun.
FSF Events: Free Software Directory meeting on IRC: Friday, May 24, starting at 12:00 EDT (16:00 UTC)
Release GCompris 4.1
Today we are releasing GCompris version 4.1.
It contains bug fixes and graphics improvements on multiple activities.
It is fully translated in the following languages:
- Arabic
- Bulgarian
- Breton
- Catalan
- Catalan (Valencian)
- Greek
- Spanish
- Basque
- French
- Galician
- Croatian
- Hungarian
- Italian
- Lithuanian
- Malayalam
- Dutch
- Norwegian Nynorsk
- Polish
- Brazilian Portuguese
- Romanian
- Russian
- Slovenian
- Swedish
- Turkish
- Ukrainian
It is also partially translated in the following languages:
- Azerbaijani (97%)
- Belarusian (86%)
- Czech (95%)
- German (95%)
- UK English (95%)
- Esperanto (99%)
- Estonian (95%)
- Finnish (94%)
- Hebrew (95%)
- Indonesian (99%)
- Macedonian (90%)
- Portuguese (95%)
- Slovak (83%)
- Albanian (99%)
- Swahili (99%)
- Chinese Traditional (95%)
You can find packages of this new version for GNU/Linux, Windows, Android, Raspberry Pi and macOS on the download page. This update will also be available soon in the Android Play store, the F-Droid repository and the Windows store.
Thank you all,
Timothée & Johnny