Feeds

KDE Apps Initiative

Planet KDE - Fri, 2024-05-31 11:10

A bit like Nate’s “5 minutes bugs” initiative, I’m announcing a new initiative to improve our applications ecosystem. The goal is to improve the quality and quantity of KDE applications and the number of application contributors. For anybody who knows me, it is not that surprising. Inside KDE, I have been mainly involved in apps for many years. I worked on all areas, from development (maintaining or co-maintaining many apps like NeoChat, Kontrast, MarkNote, Tokodon, and Arianna, and contributing to numerous other apps, but also design, promotion, websites (e.g., apps.kde.org) and even a bit of packaging (Flatpak and to a lesser extent Windows). Hopefully, making this a bit more public and making this an initiative with a bit more coordination will encourage more people to help :)

The good thing is that we don’t start from zero. In almost 30 years, KDE developers have developed over 200 applications, covering many use cases, from high-quality applications for artists (Krita, Kdenlive, Glaxnimate) to educational and office apps. We also have:

  • tons of shared libraries that make developing new apps more straightforward and consistent
  • an increasing amount of technical documentation on develop.kde.org/docs (Thanks to Thiago, Claudio, and everyone else who contributed to it)
  • a nice auto-generated website that lists all of these apps (apps.kde.org)
  • a whole CI/CD system that makes it easy to test and deploy our apps to Flatpak, Windows, macOS, Android and FreeBSD
  • tooling for the user documentation and the translations of apps
  • an opt-in service to ensure that apps are regularly released (KDE Gear)
  • tools like Clazy and Heaptrack to improve the code quality and performance of KDE apps
  • and a lot more

However there are prominent areas where we should improve our story; otherwise, we would already have a desktop and mobile market share of 90% and archived world domination.

More concrete here is a non-exclusive list of high-level tasks to achieve this goal.

Closing the Feature Gap

We need to identify missing apps compared to other app ecosystems (Windows, macOS, Android, iOS, and GNOME) and see where we could, with little effort, improve our app offering. While creating a KDE 3D editor like Blender is unrealistic, we could already go quite far by creating small apps that wrap up existing CLI tools or KDE libraries. To give some examples, I saw a few days ago that GNOME has a new document converter app called Morphosis. It’s a simple wrapper around Pandoc, and we could either do the same and wrap Pandoc or use Calligra’s rich collection of filters. Another example is a translation application; we already have a library in KTextAddons that does translations with many backends (offline and online), and the library even provides a ready-to-use widget. We could create a simple wrapper around KTextAddons, and boom; we get a new high-quality application with minimal maintenance effort.

Improving our Existing Applications

Aside from creating new applications, improving and reviving some of our applications is also highly valued. A lot of work has already been put into these applications, and by cleaning up their UI and bringing them up to our latest standard, we could go quite far. Some examples: Calligra (a complete office suite including presentation tool, spreadsheet, presentation, and vector editor), KTechLab (an IDE for microcontrollers and electronics), KWave (a sound editor), Parley (a vocabulary trainer).

Usually for every release, I try to have one or two apps, where I focus some time on it. In the past, I worked for example on KWordQuiz, KAlgebra, Koko. I recently ported Calligra to Qt6, so now one of my side quests is to figure out a way to have a modern QtQuick UI while using the current QPainter-based renderer using the new Window embedding in Qt 6.7

Better Marketting for our Applications

We need not only more apps but also better promotion. The apps.kde.org website has already helped a lot by listing all KDE apps, and more recently, we also created a lot of kde.org/for websites that list some KDE apps for some niches that might be interested in some of our apps. Further ideas on improving the marketing effort would be to promote new and lesser-known applications on social media regularly. But also publish a “This week in KDE apps” blog post that would cover all the news relating to first and third-party apps (e.g., new apps, updates, new app relevant APIs), and this would be community maintained with a process similar to this week in Matrix/GNOME/… where people write in a Matrix channel and a bot compile the relevant posts togethers. We need to make the progress on our apps more visible.

In addition to promoting first-party apps, we must figure out how to better promote third-party apps and extensions that use KDE Frameworks and integrate well with Plasma. Here, we could get some inspiration from the GNOME Circle initiative.

Make it More Accessible to Start a New Project

Documentation is essential in making it easy for newcomers to start projects. In the past few years, we have invested a lot of effort into that. I started develop.kde.org/docs, moved and updated a lot of old documentation from techbase.kde.org, and mentored a Season of KDE project to write a Kirigami tutorial. Nowadays, Thiago is fabulously leading the documentation effort. It is going in the right direction.

Aside from pure documentation, I’m impressed by the quality of the GNOME Workbench app and the number of examples it contains. I started a simple prototype of the same idea with Kirigami a while ago, which I need to finish (help is welcome đŸ€—). In the same vein, KAppTemplate and our default templates need some love.

Aside from documentation, we should create a support channel where people can ask for help with their applications. We could also make it more evident that developers are encouraged to ask on kde-devel and the VDG channel for help with their apps, even if their apps are not first-party KDE applications.

Making it More Attractive to Write KDE Applications

Writing applications using KDE Frameworks is already quite attractive, but we should communicate more on the advantage of starting an application using the KDE Frameworks more.

Firstly, by leveraging an almost 30-year-old ecosystem, app developers can reuse many libraries for their apps and find examples of how to implement the most common workflow in existing code. KDE Frameworks are also extremely cross-platform, and creating a KDE application doesn’t restrict you to only Plasma. Krita and Kleopatra have famously had millions of Windows installations. We also have Craft, which helps develop and deploy Qt applications on Windows, macOS and Android.

For first-party applications, our self-hosted Gitlab allows app developers to have full CI/CD pipelines for many platforms and even automatically publish them to the Windows Store. We also have infrastructure for translations, user documentation, wikis, code search, file sharing (Nextcloud), chat (Matrix), OSM hosting, and more. There is also a human factor; by making an app a first-party KDE app, the app received a lot of help from experimented KDE developers as part of the KDE review process and also during the entire life of the app. And we have a promo team that helps promote your app as much as possible.

For third-party applications, by being LGPL, we give users of KDE Frameworks a lot of freedom in licensing and monetizing their applications as long as they contribute their changes back to the library they use.

Not Limiting Us to C++

In terms of cross-language support, there are also two independent efforts to make KDE Frameworks accessible to more programming languages: one for Python by alcarazzam, which is part of a GSoC project I am mentoring, and another one for Rust by mystchonky. These efforts should make it easier for app developers to write KDE applications even if they are unfamiliar with C++ or prefer not to use it.

Streamline the Publishing of our Apps for Other Platforms

We now reached a state where most of our applications are automatically published on Flathub. This is not the case yet for Windows, Apple and Android. Recently we gained the ability to publish directly from the gitlab CI to the Microsoft Store, but we don’t make use of that yet in most of our apps. So let’s change that!

Getting Involved

I started creating a board of issues on gitlab and filled it with various applications ideas from a discourse thread. Feel free to take one of the open task or suggests a new app.

Additionally I also created a Matrix room to have a room for conversation.

Categories: FLOSS Project Planets

poke @ Savannah: GNU poke 4.1 released

GNU Planet! - Fri, 2024-05-31 10:32

I am happy to announce a new release of GNU poke, version 4.1.

This is a bugfix release in the 4.x series.

See the file NEWS in the distribution tarball for a list of issues
fixed in this release.

The tarball poke-4.1.tar.gz is now available at
https://ftp.gnu.org/gnu/poke/poke-4.1.tar.gz.

> GNU poke (http://www.jemarch.net/poke) is an interactive, extensible
> editor for binary data.  Not limited to editing basic entities such
> as bits and bytes, it provides a full-fledged procedural,
> interactive programming language designed to describe data
> structures and to operate on them.


Thanks to the people who contributed with code and/or documentation to
this release.

Happy poking!

Mohammad-Reza Nabipoor

Categories: FLOSS Project Planets

The Drop Times: DrupalJam 2024: Exclusive Insights from Organizers Driving Community Growth

Planet Drupal - Fri, 2024-05-31 10:08
Prepare for DrupalJam 2024! Set to take place on June 12th at the Fabrique in Utrecht, this event marks its 20th edition, promising a day of exploration and learning. Attendees will have the opportunity to gain valuable insights from keynote speaker Dries Buytaert, the program lead of Drupal. Organized by a dedicated team of volunteers, including Bart Vreugdenhil, Carole Grootenboer, Mario Gerssen, Rolf van de Krol, and Jean-Paul Vosmeer, DrupalJam embodies the collaborative spirit of the Drupal community. Kazima Abbas, sub-editor at The Drop Times, brings you exclusive insights from the organizers into the event's schedule, speakers, and engagement opportunities.
Categories: FLOSS Project Planets

Joachim Breitner: Blogging on Lean

Planet Debian - Fri, 2024-05-31 08:47

This blog has become a bit quiet since I joined the Lean FRO. One reasons is of course that I can now improve things about Lean, rather than blog about what I think should be done (which, by contraposition, means I shouldn’t blog about what can be improved
). A better reason is that some of the things I’d otherwise write here are now published on the official Lean blog, in particular two lengthy technical posts explaining aspects of Lean that I worked on:

It would not be useful to re-publish them here because the technology verso behind the Lean blog, created by my colleage David Thrane Christansen, enables such fancy features like type-checked code snippets, including output and lots of information on hover. So I’ll be content with just cross-linking my posts from here.

Categories: FLOSS Project Planets

GNU Guix: Source code archiving in Guix: new publication

GNU Planet! - Fri, 2024-05-31 08:00

We are glad to announce the publication of a new research paper entitled Source Code Archiving to the Rescue of Reproducible Deployment for the ACM Conference on Reproducibility and Replicability. The paper presents work that has been done since we started connecting Guix with the Software Heritage (SWH) archive five years ago:

The ability to verify research results and to experiment with methodologies are core tenets of science. As research results are increasingly the outcome of computational processes, software plays a central role. GNU Guix is a software deployment tool that supports reproducible software deployment, making it a foundation for computational research workflows. To achieve reproducibility, we must first ensure the source code of software packages Guix deploys remains available.

We describe our work connecting Guix with Software Heritage, the universal source code archive, making Guix the first free software distribution and tool backed by a stable archive. Our contribution is twofold: we explain the rationale and present the design and implementation we came up with; second, we report on the archival coverage for package source code with data collected over five years and discuss remaining challenges.

The ability to retrieve package source code is important for researchers who need to be able to replay scientific workflows, but it’s just as important for engineers and developers alike, who may also have good reasons to redeploy or to audit past package sets.

Support for source code archiving and recovery in Guix has improved a lot over the past five years, in particular with:

  • Support for recovering source code tarballs (tar.gz and similar files): this is made possible by Disarchive, written by Timothy Sample.

  • The ability to look up data by nar hash in the SWH archive (“nar” is the normalized archive format used by Nix and Guix), thanks to fellow SWH hackers. This, in turn, allows Guix to look up any version control checkout by content hash—Git, Subversion, Mercurial, you name it!
  • The monitoring of archival coverage with Timothy’s Preservation of Guix reports has allowed us to identify discrepancies in Guix, Disarchive, and/or SWH and to increase archival coverage.

94% of the packages in a January 2024 snapshot of Guix are known to have their source code archived!

Check out the paper to learn more about the machinery at play and the current status.

Categories: FLOSS Project Planets

Real Python: The Real Python Podcast – Episode #206: Building Python Unit Tests & Exploring a Data Visualization Gallery

Planet Python - Fri, 2024-05-31 08:00

How do you start adding unit tests to your Python code? Can the built-in unittest framework cover most or all of your needs? Christopher Trudeau is back on the show this week, bringing another batch of PyCoder's Weekly articles and projects.

[ 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

LN Webworks: How To Migrate From Drupal 7 to Drupal 10

Planet Drupal - Fri, 2024-05-31 07:18

We know that Drupal 7 reaching the end of life on January 5, 2023. It means it will no longer receive security updates or support from the Drupal community. So organizations or individuals that use Drupal 7 should upgrade to the latest version of Drupal 10.

What are Drupal migrations?

In Drupal migrations content, data, and configurations are transferred from one Drupal site to another. Migrations are commonly used when we upgrade from Older versions of Drupal to newer versions of Drupal.

Steps Taken Before Starting The Migration

Here's a concise list of steps to take before starting a migration

Step 1: Drupal 7 Database

First, back up the database of the Drupal 7 site. This ensures that if any issues are encountered during the migration, you can restore the site and re-run the process.

Using below command

Export: mysqldump -u root -p database name > filename.sql

Categories: FLOSS Project Planets

Web Review, Week 2024-22

Planet KDE - Fri, 2024-05-31 06:06

Let’s go for my web review for the week 2024-22.

The next decade of the web | James’ Coffee Blog

Tags: tech, web, social-media, democracy

Very nice piece. Hopefully it’ll push people to remember that the big social media enclosures are not really the Web. We can have more democracy on the Web again if we collectively want to.

https://jamesg.blog/2024/05/19/next-web-decade/


How does AI impact my job as a programmer? – Chelsea Troy

Tags: tech, programming, debugging, teaching, gpt, copilot

Definitely this. In a world where LLM would actually be accurate and would never spit outright crappy code, programmers would still be needed. It’d mean spending less time writing but more time investigating and debugging the produced code.

https://chelseatroy.com/2024/05/26/how-does-ai-impact-my-job-as-a-programmer/


When privacy expires: how I got access to tons of sensitive citizen data after buying cheap domains

Tags: tech, dns, privacy, security

Or why you should let domain simply expire, there’s plenty of work to do before that.

https://inti.io/p/when-privacy-expires-how-i-got-access


Instead of “auth”, we should say “permissions” and “login” | nicole@web

Tags: tech, security, communication

The words we use indeed matter. This is definitely a domain where we should avoid ambiguities…

https://ntietz.com/blog/lets-say-instead-of-auth/


arighi’s blog: Extend your battery life with scx_rustland

Tags: tech, linux, system, processes

Interesting results. It’s especially nice to see how sched-ext allows to easily iterate and experiment with process scheduling strategies.

https://arighi.blogspot.com/2024/05/extend-your-battery-life-with.html?m=1


Evolution of the ELF object file format | MaskRay

Tags: tech, system, unix, elf, history

Definitely a complicated history… this doesn’t make the evolution or documentation of it easy.

https://maskray.me/blog/2024-05-26-evolution-of-elf-object-file-format


Never reason from the results of a sampling profiler – Daniel Lemire’s blog

Tags: tech, performance, optimization, profiling

Definitely to keep in mind when using sampling profilers indeed. They’re useful, they help to get a starting point in the analysis but they’re far from enough to find the root cause of a performance issue.

https://lemire.me/blog/2024/05/30/never-reason-from-the-results-of-a-sampling-profiler/


PyPy has been quietly working for me for several years now

Tags: tech, python

This definitely shows PyPy as a successful runtime.

https://utcc.utoronto.ca/~cks/space/blog/python/PyPyQuietlyWorking


Let’s optimize! Running 15× faster with a situation-specific algorithm

Tags: tech, python, performance, optimization

Another good example of how to speed up some Python code with nice gains.

https://pythonspeed.com/articles/lets-optimize-median-local-threshold/


What is a collision? — On Error Resume Next

Tags: tech, 2d, collision, physics, simulation

Good introduction to collision resolution inside of physics engines.

https://www.sassnow.ski/rigid-body-collisions/1


matcha.css | Drop-in semantic styling library in pure CSS

Tags: tech, web, frontend, css

Looks like a nice CSS library for the semantic styling of web content.

https://matcha.mizu.sh/


Why, after 6 years, I’m over GraphQL

Tags: tech, graphql, complexity

Shows well why you likely don’t want to use GraphQL. The chances you need the extra complexity and caveats are very slim.

https://bessey.dev/blog/2024/05/24/why-im-over-graphql/


Don’t Microservice, Do Module

Tags: tech, architecture, microservices, complexity

Since this particular fad apparently doesn’t want to die… this is a good reminder about why you want to do something simpler.

https://yekta.dev/posts/dont-microservice-do-module/


My BDFL guiding principles | daniel.haxx.se

Tags: tech, foss, governance

Not necessarily my favorite governance model, but if you’re on that scheme… those are good guiding principles.

https://daniel.haxx.se/blog/2024/05/27/my-bdfl-guiding-principles/


To the brain, reading computer code is not the same as reading language | MIT News

Tags: tech, programming, cognition, neuroscience

Interesting research! Is reading code a math and logic task? Is it a language task? Well… it might be its own thing.

https://news.mit.edu/2020/brain-reading-computer-code-1215


Bye for now!

Categories: FLOSS Project Planets

Zero to Mastery: Python Monthly Newsletter đŸ’»đŸ

Planet Python - Fri, 2024-05-31 06:00
54th issue of Andrei Neagoie's must-read monthly Python Newsletter: Python Security Best Practices, State of Python 2024, Prompt Engineering, and much more. Read the full newsletter to get up-to-date with everything you need to know from last month.
Categories: FLOSS Project Planets

Snapcraft: Adopting appstream metadata

Planet KDE - Fri, 2024-05-31 05:33
Introduction Whatever takes time takes for good. Yeah, so, about on March I created a PR on snapcraft by canonical. It was about adopting more metadata from the parsed appstrean metadata file. The new fields that were made to parse were License Contact Issues Source Code (VCS Browser) Website Donation Link What does this change means? For publishers/snapcrafters Publishers and snapcrafters who also maintains an appstrean metadata for their app, you don’t need to maintain the metadata in your snap package separately.
Categories: FLOSS Project Planets

Golems GABB: The leading SEO principles for Drupal in 2024: Tips for Marketers

Planet Drupal - Fri, 2024-05-31 05:08
The leading SEO principles for Drupal in 2024: Tips for Marketers Editor Fri, 05/31/2024 - 12:08

Drupal SEO tips come in whenever you need to build a firm foundation amidst the never-ending digital marketing and search engine optimization tricks. The overall industrial volatility can't help but demand more well-thought-out and user-engaging domains.
Take a closer look at modern SEO principles for Drupal 2024 — from content sustainability to the overall website architecture's adaptability and scalability. They demonstrate the international craving for turning solutions for customers' pain points, AI-based technologies, and human authorship into the best buddies. What Drupal modules will align with your business's vertical and horizontal success channels? Check it out!

Categories: FLOSS Project Planets

Wim Leers: XB week 2: outlines emerging

Planet Drupal - Fri, 2024-05-31 04:04

Experience Builder (XB) must be able to render single directory components (SDC) 
 but really any component. Furthermore, to achieve the compromiseless UX we want, we’ll need both client-side and server-side rendering (to avoid network latency): isomorphic rendering. So on Monday May 20, Ben “bnjmnm”, Mateu “e0ipso”, Lee “larowlan”, ThĂ©odore “nod_”, Pierre “pdureau” and Tim met in a truly global meeting (from Lee’s Australia to Kris’ U.S. West Coast), with very interesting conclusions.
These are not current concerns for XB, but they will eventually be — this was early alignment to avoid wasting time.

Missed a prior week? See all posts tagged Experience Builder.

Goal: make it possible to follow high-level progress by reading ~5 minutes/week. I hope this empowers more people to contribute when their unique skills can best be put to use!

For more detail, join the #experience-builder Slack channel. Check out the pinned items at the top!

On the code front, Alex Pott (who initially proposed a different repository structure in #3446374, see last week’s post) nudged XB in a better direction: over the weekend, he provided an MR to reuse core’s PHPCS rules and +1’d the structure we settled on. I finished & merged what he started and am grateful for the result :)

On Tuesday, front-end lead Jesse’s MR to carve rough outlines of the UI (no premature detail while awaiting more detailed wireframes and interaction design) was merged, and introduced the Radix UI component library that Lauri recommended.

Try it yourself locally if you like, but there’s not much you can do yet. See Jesse’s Slack message with more nuance.
Install the 0.x branch — the “Experience Builder PoC” toolbar item takes you there!

SDC is a foundation of XB, and while SDC recently left the experimental phase in Drupal core, it is itself still evolving. An example is #3390712, where work is happening to introduce the concept of component variants. On Wednesday, e0ipso, Christian “penyaskito” and pdureau started pushing that forward.

That same day, I pushed the commit that introduced a new FieldType plugin that actually implements Alex “effulgentsia” Bronstein’s proposed data model in #3440578.
An interesting suggestion on the proposal came from Matt “mglaman” Glaman: to implement this as a single field with 2 properties plus 1 computed property for the combined result 
 which matched my thinking exactly! I implemented it on Friday. More work to be done next week to get it to a mergeable state, and much more beyond that (nested component trees, (a)symmetric translations, easy querying and hence easy updates â€Š)

From the flurry of activity above, a few outlines start to merge:

  • with squinting eyes: the silhouette of a UI
  • similarly: the data model as envisioned months ago by effulgentsia
  • things happening outside XB that are relevant to it, with people not just from Acquia, Lullabot and PreviousNext, but the beginning of far wider involvement 1 — globe-spanning even!

Which seamlessly brings us to the next highlight of the week: the very first asynchronous XB meeting in Drupal Slack, organized by Griffyn “griffynh” Heels on Thursday. After 24 hours 2, the discussion gets archived in a d.o issue (#3449517).
This first meeting had 24 participants (with <150 people in the #experience-builder channel: 1 in 6!), I’d say this was a success :)
One pattern stood out: people are eager to contribute, but don’t know how yet. The honest answer is: we’re figuring that out — there is a list of product requirements, a codebase of <1 week old targeting those requirements and Lauri’s concept wireframes from September 2023. Contributors are welcome already, and can have a huge influence on the direction and shape of XB, but at this time need to be comfortable with helping to make things more concrete.

At the end of the week, I met with pdureau 3, talking about the UI Suite Initiative he’s been pushing for years now. Deeply integrated design system support in XB is crucial per Lauri’s research, and that’s exactly where the people behind the UI Suite initiative have gained a lot of expertise — and a working codebase that has ~20 frequent contributors and ~80 contributors over the past year! UI Suite explicitly supports for the various artifact types that design systems consists of, and XB will need to support these too. As the tech lead for XB but somebody who has never used design systems, it’s important for me to listen & learn. So I mostly listened.
The UI Suite ecosystem is currently transitioning to build on top of SDC. e0ipso and pdureau have been enthusiastically collaborating on this, and their enthusiasm is now positively visible in the XB Slack channel too! How exactly UI Suite will influence XB is not yet clear, but it likely will.

Goal for next week: connect conceptual dots that today exist only in the heads of people who’ve been in sufficient meetings with Lauri.

  1. Hence why I stopped stating the employer of each individual — I’m still linking each individual so it’s easy to find out the organization name. And actually, quite a few of the names in this week’s update are independent/freelancers! In the end, any collaboration is between individuals, not organizations, so going forward I will only mention individuals’ names. When a new organization gets involved, I’ll state that too, but individuals deserve their own recognition. Each first mention of an individual in a post will always be linked to their drupal.org profile. ↩︎

  2. To enable equal participation from any timezone. Which will be crucial, since Dries invited the entire community to help build XB and Starshot! ↩︎

  3. He lives ~1000 km from me, but he happened to be in Brussels that week, so we made the best of that opportunity :) ↩︎

Categories: FLOSS Project Planets

Petter Reinholdtsen: The 2024 LinuxCNC Norwegian developer gathering

Planet Debian - Fri, 2024-05-31 01:45

The LinuxCNC project is still going strong. And I believe this great software system for numerical control of machines such as milling machines, lathes, plasma cutters, routers, cutting machines, robots and hexapods, would do even better with more in-person developer gatherings, so we plan to organise such gathering this summer too.

The Norwegian LinuxCNC developer gathering take place the weekend Friday July 5th to 7th this year, and is open for everyone interested in contributing to LinuxCNC and free software manufacturing. Up to date information about the gathering can be found in the developer mailing list thread where the gathering was announced. Thanks to the good people at Debian as well as leftover money from last years gathering from Redpill-Linpro and NUUG Foundation, we have enough sponsor funds to pay for food, and probably also shelter for the people traveling from afar to join us. If you would like to join the gathering, get in touch and add your details on the pad.

As usual, if you use Bitcoin and want to show your support of my activities, please send Bitcoin donations to my address 15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b.

Categories: FLOSS Project Planets

Spinning Code: Writing for Developers and Consultants: Know your Documents Types

Planet Drupal - Thu, 2024-05-30 20:50

When I started this series on writing for developers and consultants, I thought of this piece first, but I couldn’t get the ideas to come together. Sometimes it takes a few tries.

Anytime you write something, you should be aware of what kind of document you’re writing and who is it for. The definition of “document” in this context is very broad it could be: an email, letter, solution design, chat messages, blog post, test script, work of fiction, book, poem, presentation, marketing slide deck, scope of work, and so on: anything that involves writing words.

For example, this is a blog post, about writing, meant for people who are developers or technology consultants who may have been told good writing isn’t important.

Common Work Documents

I’m going to put aside poems, novels, and other personal writing forms to focus here on work related writing. Developers need to be able to describe their work to other people. We also need to communicate about what is happening on a project, support one another, and ask for help. We do all these things with words, and often in writing.

In my career I’ve written a wide variety of documents as part of my work. A partial list (because I doubt I can think of everything to create a complete list) includes:

  • Emails
    • to my boss
    • to colleagues or friends
    • to direct reports
    • to clients
    • to large mailing lists
  • Solution Design Documents
  • Scopes of Work
  • Contracts
  • Invoices
  • Test Scripts
  • Conference Talks
  • Research Reports
  • Chat Messages

Some require more detail and longer prose than others. Some are expected to be polished where others can tolerate typos and mistakes. But each has its own style, structure, audience, and expectations that the writer must meet.

A Document’s Purpose

When you start to wring something, know your purpose in writing.

Not all documents are created equal and so understanding your purpose is critical. Are you writing an Solution Design that needs to outline how you plan to solve all the hard problems in a project? Or are your writing an email to your boss asking for a few days off? Is this a research report meant to support an advocacy project or a cover letter for a resume? All of those are important things, but none should be written in the same tone or with the same style.

A Scope of Work (SOW) is a lasting artifact during a projects that sets the bounds of the work you’re going to complete. A sloppy SOW can cost you, or your employer, vast sums of money. A SOW writing purely to defended against those concerns may not express the client’s needs and interests, and result in them refusing to sign.

An email to a client might be a friendly reminder about pending deadlines, or a carefully crafted notes from a contentious meeting. Written well, both could leave you in a better place with your client. Written poor, both may cause your client to become frustrated with your sloppiness.

If you don’t know why you’re writing something, you are likely to write the wrong thing. At work, if you aren’t sure, ask for guidance.

A Document’s Audience

There is no such thing as a “general audience” you should always have a mental image of who you are writing to, and why.

We all know that it’s important to think about your audience, but we don’t always do this well. In part because determining the audience is sometimes a little complicated.

When your audience is the person or people you are writing to, you need to leverage your understanding of their knowledge, skill set, and project engagement. You want your text to meet them where they are.

Sometimes the audience you care about most, isn’t the direct subject of the message, but a 3rd party we know, or suspect, will read the document later. I find this is true particularly in contentious situations.

FOIA Warning

If you work in, for, or with government agencies in the US (and for similar reasons elsewhere as well) – including as a subcontractor – you should understand if your content is subject to a Freedom of Information Act requests. Sometimes your audience isn’t the person you are writing to at all, but the reporter who could read the message 2 years from now after they get copies of everything related to your project. In those settings, don’t put anything in writing you don’t want on the front page of a major newspaper.

But FOIA can also be a blessing for a developer who knows a bad decision is being made. Carefully worded expressions of concern, and requests for written confirmation of next steps, can trigger FIOA-cautious readers to recognize they need to follow your advice.

Finding the Right Level of Technical Detail

One of the hardest things for developers, and other people with lots of technical knowledge, to do well is communicate clearly about technical minutia. There is a balance to be struck between providing transparency and overwhelming readers with details. Developers have to think about details in our work. We also use field specific jargon that can be confusing to people whose work is in other areas.

Too often we confuse that specialized knowledge of our field, with intelligence. I have watched developers lose their audience in the nuances of small details, and come away announcing their audience was a bunch of idiots. Early in my career I was guilty of this as well. Assume you’re audience is as smart as you; they just know different stuff.

When you make that assumption you can avoid talking down to people, and start to work on finding their level.

The right level of technical detail will also vary by document type. When I’m exchanging emails with a client’s in-house developer we go deep into the weeds often. When I’m writing a SOW, the technical detail is nearly absent as we are defining functionality and purpose, not the exacting detail of how that functionality will be delivered.

The more you can be in conversation with the people you’re working with about their background, the easier it will be to find the right level of detail to explain yourself clearly.

Summation

Hopefully by now it’s clear, this is an overview of approach, not detailed guidance. In a future post I plan to write about some of these specific documents types, and how to write them. Hopefully this overview gives you ideas and things to think about as you work on your next document.

As I said in my first post on this topic, communications skills for developers and consultants is an enormous topic. The plan for this series is evolving as I go. If you have suggestions or requests feel free to leave me a message.

The post Writing for Developers and Consultants: Know your Documents Types appeared first on Spinning Code.

Categories: FLOSS Project Planets

25 Years of Krita!

Planet KDE - Thu, 2024-05-30 20:00
  • Halla Rempt

Twenty-five years. A quarter century. That's how long we've been working on Krita. Well, what would become Krita. It started out as KImageShop, but that name was nuked by a now long-dead German lawyer. Then it was renamed to Krayon, and that name was also nuked. Then it was renamed to Krita, and that name stuck.

I only became part of Krita in 2003, when Krita was still part of KDE's suite of productivity applications, KOffice, later renamed to Calligra... And I became maintainer of Krita in 2004, when Patrick Julien handed over the baton. That means that I've been around Krita for about twenty of those twenty-five years, so I'll hope you, dear reader, will forgive me for making this a really personal post; a very large part of my life has been tied up with Krita, and it's going to show.

But let’s first go back to before when I needed a digital painting application; the first seeds for Krita were laid in 1998, even earlier than the first bits of code. There was this excitement around Linux back then, and there were lots of projects that attempted to create great applications for Linux. One of those projects was GIMP, and another project was Qt. The first was a digital image manipulation application, the other was a toolkit to create user-friendly applications in C++. But GIMP didn't use Qt, it used its home-grown user interface toolkit (although it originally used Motif, which wasn't open source). A Qt fan, Matthias Ettrich, did an experimental port of GIMP to Qt, and gave a presentation about it at the 1998 Linux Kongress. That wasn't received well, and resulted in the kind of spat that is typical of the open source community. People were young and tempers were hot.

Well, in cases like this, the only solution is to go at it yourself, and that's what happened. It took several false starts, but on the last day of May 1999, Matthias Elter and Michael Koch started KImageShop: read the mail, because it's quite funny how we did and didn't follow the original vision (KOM was a Corba-like thing, and if you have never heard of Corba, that's probably because Corba was a terrible idea.).

Development started, and believe it or not, there's still some actual code dating back to then in Krita's codebase, though most of the remaining code is opening and closing brackets.

And then development stopped, because, well, doing a proper image manipulation application isn't easy or quick work. And then it started again, and stopped again, and started again. There were several maintainers before I was looking for a nice, performant codebase for a painting application in 2003. I didn't know C++; but I had written the first book on using Python and Qt together.

Krita had been rewritten to the point where it didn't even have a paint tool, so that was the first thing I wanted to have. That was not easy!

But... Being open about it not being easy meant people got interested, and we started gaining contributors. And so, in 2004, we had a small team of enthusiastic people. A lot happened in that year; Camilla Boemann rewrote the core of Krita so we had autosizing layers, Adrian Page wrote an OpenGL based backend, Cyrille Berger added the first inklings of plugins and scripting. Our approach was still pretty technical, though, and we didn't manage to make a release.

It was only in 2005 that we released Krita as part of KOffice 1.4. Still very immature, but everyone agreed that it was promising, and we got nice reviews in some Linux magazines -- that was still a thing in 2005.

Then came 2006. And Krita 1.5 was released with support for color managed CMYK. Krita 1.5 also had the short-lived real color mixing watercolor layer feature, but that was too complex to maintain. And in the same year, we released Krita 1.6: Linux Journal called it State of the Art. We thought it was a pretty mature release, but artists who gave us feedback still found it lacking a lot.

And then disaster struck. Qt3 reached end-of-life, and Qt4 was released. The porting effort was huge and took ages, also because we, foolishly, decided to rewrite a lot of the 1.x code to make it possible to share components between KOffice applications. The rewrite took all of 2007, 2008 and half of 2009.

In the meantime, when we were desperately trying to fix all the bugs the porting and rewrite were introducing, we held our first fundraiser: that was to get Wacom tablets for testing Krita with, complete with art pens. I am still using the Wacom Intuos 3 we got way back then!

In 2009, we then released Krita 2.0. It was not really usable, but it was important for us to have something out that we could get people to test. Krita 2.1 was also released in 2009. We also got our first sponsored developer, LukĂĄĆĄ TvrdĂœ, whose task specifically was to fix all bugs. Later on, he also improved the performance of Krita's brushes.

As Krita gained recognition, we got more and more feedback, and in 2010, we decided to have a big sprint in Deventer where we were going to determine what we wanted Krita to be for our users. A Photoshop clone? A GIMP clone? A Corel Painter Clone? Or something that was itself. Who were we making Krita for?

The answer is true to today: we are making Krita for digital artists who are making art, mostly from scratch. Painting with Krita should be fun for artists of all kinds, all over the world.

But it would be some time before we'd reach that goal. 2010 saw Krita 2.2 and Krita 2.3: we thought that Krita 2.3 was ready for artists, but it was only with Krita 2.4 and 2.5 in 2012 that Krita really became pretty good! In fact, we had a laser-precise focus: for some years our rallying call was “Make Krita usable for David Revoy!” – partly silly, but also partly serious. We spent time during dev sprints observing artists and allowing them to live comment on what they liked and didn’t like, without the observing developers being allowed to open their mouths, wether in rebuttal or to help the artist out.

In the meantime, I had created the Krita Foundation so we could do fund-raisers to sponsor full-time developers. The first developer we sponsored was Dmitry Kazakov, who is still the lead developer for Krita.

Back then, Krita was still part of KDE's office suite, but it was called Calligra now, because of an interminable conflict with just one KOffice developer, the KWord maintainer. All that energy spent on that conflict could have gone into development, it was a huge waste. From the Calligra days onwards, development went much smoother. Nokia was now involved with Calligra's development, and the resulting improvement in the central libraries all applications used also helped improve Krita, though, conversely, the complexity needed to support a very diverse set of applications is still burdening us today.

Years went by. 2013 was completely uneventful. We made our releases (2.6, 2.7), did our fund-raisers, added features (like animation support), created a version of Krita with a special user interface for touch/tablet users (sponsored by Intel: we still have a great relationship with Intel, our main development fund sponsor). It was great to see the art people were creating, great to get feedback from users and just plain fun to tackle development.

In 2014 we ported Krita to Windows, also because of the touch/tablet version of Krita. And we released eleven versions of Krita 2.9, which was really a very fine release.

Also in 2014, we had our first Kickstarter campaign. Kickstarter was new and fresh back then, and it was really exciting. We got nearly 700 people to sponsor Krita! And we ported Krita to MacOS. For some time we would do a Kickstarter campaign every year, and they were fun both for us and for our developers, we'd set stretch goals and let people vote on what they wanted us to work on.

I still had a day job back then, so it was all work done in the evenings and weekends, and on the train during my commute.

We also started porting Krita, again, this time to Qt5. That wasn't as hard as the port from Qt3 to Qt4, but we lost support for the tablet version of Krita because Qt5 made it impossible to properly integrate our OpenGL based canvas in the touch version of Qt5's libraries. We spent months and quite a bit of money on that, but it was no-go.

Then I broke my shoulder and lost my day job, with Blue Systems, and suddenly the Krita Foundation needed to pay me, too. Fortunately, we found a sponsor for the port to Qt5, and that was my first sponsored project.

In 2016, we released Krita 3.0 -- it wasn't as good as Krita 2.9, but thankfully we still remembered the pain we had when doing a rewrite combined with a port, so we simply did the port first, and didn't combine it with a huge rewrite. This had animation!

We also released our first and last paper artbook. A huge amount of work for me, which already started in 2015 and in the end, a huge money sink, too.

We worked on improved versions of Krita 3.0 all through 2016 and 2017. 2018 rolled by, and we released Krita 4.0, with the results of Kickstarter-sponsored work. Though not all of it, because in 2017, I was preoccupied with the Great Tax Disaster. The Dutch tax office wanted us to pay tens of thousands of euros in VAT for the work Dmitry had done; that's when we hired a proper accountant instead of a small business administration office in a local town.

When we went public with the problems, donations streamed in and PIA made a huge donation: they basically covered the bill.

To avoid having this happen again, I brought all commercial activities into a separate one-person company. That became even more important, because in 2017, we put Krita in the Windows Store. That was the second store, after we put Krita on the Steam Store in 2014. Since then, we have released Krita on Epic Store, the Google Play Store and now even on the Apple MacOS Store.

Time went on, and in 2018, we released Krita 4.1, in 2019 4.2, in 2020 Krita 4.3 and 4.4. Reasonably quiet years of active development, growing user base and popularity. More and more sponsored developers joined in, and Krita made a lot of progress.

Although the Krita YouTube channel already existed, in 2019, we asked Ramon Miranda to work on regular videos for our channel:

By now we've built up quite a list of impressive tutorials of all kinds, teaching everything from digital painting itself to creating brush presets!

And then development slowed down. In 2020, the effects of Covid19 became more and more clear. We couldn't have sprints anymore, so no hyper-productive in-person development sessions anymore. Team members got sick, for some, really sick. Long Covid has crashed my own productivity: there are many days when I can do nothing but lie down in a darkened room.

By 2021, even though we hadn't had to port Krita to a new version of Krita, we still decided to change vector layers from ODG to SVG, which made Krita files incompatible between versions 4 and 5. A major change in file format, in other words. We're still working on new versions of Krita 5: 5.1 in 2022, 5.2 in 2023.

The future promises a very nice Krita 5.3!

And also, groan, a Krita 6.0 because we have started porting Krita to Qt6. And that's no fun, because Qt6 is again a huge change in what Qt offers and allows.

And that was 25 years of working on something I started dabbling in because I wanted to draw a map for a fantasy novel on my laptop!

Join the Development Fund with a monthly donation. Or make a one-time donation here.

Categories: FLOSS Project Planets

Reproducible Builds (diffoscope): diffoscope 269 released

Planet Debian - Thu, 2024-05-30 20:00

The diffoscope maintainers are pleased to announce the release of diffoscope version 269. This version includes the following changes:

[ Chris Lamb ] * Allow Debian testing continuous integration builds to fail right now. [ Sergei Trofimovich ] * Amend 7zip version test for older versions that include the "[64]" string. (Closes: reproducible-builds/diffoscope#376)

You find out more by visiting the project homepage.

Categories: FLOSS Project Planets

Four Kitchens: Managing configuration in Drupal upstreams

Planet Drupal - Thu, 2024-05-30 16:18

Mike Goulding

Senior Drupal Engineer

Mike has been part of the Four Kitchens crew since 2018, where he works as a senior engineer and tech lead for a variety of Drupal and WordPress projects.

January 1, 1970

A common time-saver for organizations managing multiple Drupal sites is reducing to shared code in a concept called an upstream. This can be done through a hosting provider, continuous integration tooling, or old-fashioned copy-and-paste. (But don’t do that!)

This saves time by having most of the code shared by these sites stored in a single repository while allowing the sites to be somewhat unique from each other. It also avoids some of the overhead and pitfalls of a traditional Drupal multisite installation — something that several hosting providers haven’t been keen on recently.

A struggle that occurs when using the upstream technique is deploying a global configuration that should apply to all or some of the sites without removing what is uniquely theirs. In previous versions of Drupal, this was done using the Features module, and that is something that can still be done with some success. However, Features does come with some downsides regarding managing different configurations across sites.

In the setup described above, this becomes especially troublesome when configurations between sites need to be overridden. One site has a different field added to the blog content type, and the features import process can become painfully complex to deal with by itself.

So, what option do I suggest for upstreams and organizations managing multiple sites? Configuration Split. In particular, the latest iteration of this module, 2.x, which allows for easier conditional splitting and importing of configuration.

What is Configuration Split?

Configuration Split, or Config Split, as it is better known, has been around for a while, enabling many excellent uses. A quick example of how this module has been used would be enabling various modules and configuration between different environments for a site. It allows for importing different configuration files into a Drupal site based on certain set conditions.

Specifically, it allows for splitting up configuration into different groups that can be set to inactive or active programmatically. This is an improvement from both using the Features module and using other custom code to enable and disable things manually on different sites or environments.

Using Config Split simplifies configuration management by keeping development-specific modules and settings separate from the main site configuration. This helps maintain a cleaner environment on production and allows for automatic installation and removal of development-only features.

Additionally, Config Split can also be used for version control purposes. By splitting configuration into different groups, it becomes easier to track changes and roll back to previous configurations, if needed. This is especially useful for larger sites with multiple developers working on different features or environments.

Config Split 1.x

The initial release of Config Split opened up opportunities to do something different with Drupal configuration that wasn’t possible before with the default configuration management system. By allowing different groups of configuration that can be activated and deactivated, it empowers teams to easily bring different configurations to different situations.

Some common uses that we saw early on were enabling specific development modules and settings for use only in local development environments. This was previously something that would have to be built into tooling locally to script out. Now it just happens because of a condition placed into settings. It took some guesswork out of what would be enabled on which environment, and that was a big help.

The ecosystem for Config Split includes more than just enabling and disabling certain configuration. Another big part is Config Ignore, which makes it possible to have configuration that isn’t changed on import. The earliest version of this module was more conceptual than it is now, but it still provided a way to avoid exporting and importing changing configuration (like blocks), that was meant to exist only on live environments. When paired with Config Split, this offered great control over which configuration would be active and in-use in specific environments.

Stacking, patching, and more

Though it may seem in conflict with the glowing review above, Config Split didn’t always mean that managing configuration was easier or simpler. In fact, it often meant that there were even more configuration files to manage, and parsing changes to a file in a code review would make even the most senior engineer groan. It solved bigger problems than it caused, but there were still downsides that gave teams pause and sparked discussion of whether there was a better way.

Thankfully, there is a better way! The newest version of Config Split, 2.x, brought many big changes that make this easier to manage, along with a few useful bonuses. One improvement was the concept of patches for partial configuration splits. Partial changes from the default configuration can now be represented with much smaller yaml files that only show what was added and/or removed instead of repeating the entire file. This makes code reviews of the changes much, much easier to deal with!

Along with additional improvements to how configuration imports and exports when splits are involved, another addition in the newer version of the module is stackable configuration. This means that splits that would previously have been in conflict, like adding a field and changing a label to a content type from different split groups, can now work together. This also means that test environments can better represent live environments while still enabling development modules and logging output without the configuration import complaining during the build.

This isn’t always the silver bullet for all of your problems. As we’ve discussed recently, there can be some steps that need documentation and considerations for maintenance to fully make use of Config Split on a build. This is especially something to consider when updates to other modules in use have updates that affect multiple configuration files.

Using Config Split to manage multiple sites

Recently, we have taken these improvements from Config Split and applied them to managing multiple sites and upstreams. Using set conditions like environmental variables or site names, we can use splits for features or configurations that are unique to individual sites in the project. In some ways this can feel like a stretch on the intended use case for the module, but it solves the problem well in the cases we have used it. I’ll illustrate more in a specific example where this has been used.

Let’s take a project where an organization is going to have multiple similar but unique websites. They have a small team, and want to manage these sites from a single repository to make deployments quick, but don’t want to prevent the sites from being somewhat different. In some ways, a Drupal multisite can resolve part of this issue, but there are hosting limitations for that. Additionally, the multisite doesn’t completely avoid the issue of configuration differences, as those sites would still be using different databases.

In this situation, we use a single repository and use a continuous integration tool like CircleCI to push the code from that repository to the different sites where they are hosted. In this repository, we set up Config Split for each site in the project and the global configuration based on an example or default site. This way, configuration and features that should be available for the whole project can be developed in one place and deployed to each site. We can also make small changes to sites that make them different without incurring a lot of extra weight.

In a single repository configuration, we have different settings.php files that are loaded based on environmental variables so that each site always imports the correct information. This allows for differences in settings, content types, fields, and other aspects of the site. All of this with just one repository to manage and deployed to different instances without the duplication of effort and review between them. Sites can share similar architecture and have some differences without requiring a lot of overhead. The changed files are easy to review at a glance, knowing that only what is or should be different will be present.

We’ll talk about this more as time goes on and the module continues to grow. Adding this module to the toolbox for a Drupal site really can make managing one or more sites easier and more consistent. Should existing sites using features or something similar move to Config Split? I strongly feel that it is simpler to manage and that the workflow is more enjoyable.

The post Managing configuration in Drupal upstreams appeared first on Four Kitchens.

Categories: FLOSS Project Planets

Kdenlive 24.05.0 released

Planet KDE - Thu, 2024-05-30 14:31

The team is happy to announce Kdenlive 24.05, this update reimplements the Audio Capture feature and focuses on enhancing stability while introducing a few exciting new features like Group Effects and Automatic Subtitle Translations. This version comes with a huge performance boost and the usual batch of quality of life, user interface and usability improvements.

This release comes with several performance enhancements, significantly boosting efficiency and responsiveness. Highlights include a massive speed improvement when moving clips with the spacer tool, faster sequence switching, improved AV1 NVENC support, and quicker timeline operations. These optimizations are part of the ongoing performance improvement efforts funded by our recent fundraiser.

Group Effects

In the last release, we introduced the ability to add an effect to a group of clips. This release now lets you control the parameters affecting all effects within the group.

Multi Format Rendering

Video editors for social media can now rejoice: Kdenlive offers the ability to render videos in multiple aspect ratios, including horizontal, vertical, and square, all from a single project.

Simply set the desired format in the render widget. This feature was developed by Ajay Chauhan as part of the Season of KDE (SoK) and was mentored by the Kdenlive team. The mentoring process was funded by our recent fundraiser.

Automatic Subtitle Translations

Continuing the subtitle improvements, we have added the ability to automatically translate subtitles using SeamlessM4T. This process happens locally without requiring an internet connection.

Please note that you need to download the models from the settings first.

Proxy

In this release, we’ve introduced a user-friendly interface for creating and editing external camera proxy profiles. Additionally, we’ve added a new proxy profile for the Insta 360 AcePro.

Improvements

This release brings several improvements to Kdenlive. Track selection is now more intuitive, with double-clicking allowing you to select a track in the timeline. FFmpeg TIMEBASE chapter export has been fixed (thanks to Jonathan GrotelĂŒschen). Nested sequences are now more stable than ever. We’ve implemented a more robust copy-and-paste and sequence clip duplication system, fixed numerous crashes, and improved sequence compositing. Project archiving has been improved. More filtering options have been added to the file picker when importing clips, including categories like Video files, Audio files, Image files, Other files and User files rather than the current All supported files and All files (thanks to Pedro Rodrigues). A new search field has been added to the Settings window. Additionally, integration with OpenTimelineIO has been enhanced.

Other highlights include:

Multiple Bins
Implemented several fixes for handling multiple bins, ensuring stability and usability.

 

Audio Capture
The audio capture feature has been reimplemented in Qt6 (thanks to Lev Maslov). There is also now the ability to set the Default capture folder in the project bin as well as setting to allow captures to the stored in a subdirectory of the project folder on disk, rather than only in the root (Thanks to Christopher Vollick).

 

Monitors
You may now configure play/pause on monitor click, added the option to Play Zone From Cursor and improved panning and zooming with the middle mouse button.

 

Subtitles
We’ve enhanced subtitle font styles by adding bold and italic attributes. Whisper now offers an option to set a maximum character count per subtitle and provides better user feedback by showing the output in the speech recognition dialog. In the Speech-to-Text settings, we’ve included links to the model folders and display their sizes.

 

Full Changelog
  • Double click to select a track in timeline. Commit. See bug #486208.
  • Fix sequence clip inserted in another one is not updated if track is locked. Commit. Fixes bug #487065.
  • Fix duplicating sequence clips. Commit. Fixes bug #486855.
  • Fix autosave on Windows (and maybe other platforms). Commit.
  • Fix crash on undo sequence close. Commit.
  • Fix wrong FFmpeg chapter export TIMEBASE. Commit. Fixes bug #487019.
  • Don’t invalidate sequence clip thumbnail on save, fix manually setting thumb on sequence clip. Commit.
  • Fixes for OpenTimelineIO integration. Commit.
  • Don’t add normalizers to timeline sequence thumb producer. Commit.
  • Fix crash undoing an effect change in another timeline sequence. Commit.
  • WHen dragging a new clip in timeline, don’t move existing selection. Commit.
  • Faster sequence switching. Commit.
  • Create sequence thumbs directly from bin clip producer. Commit.
  • Better icon for proxy settings page. Commit.
  • Fix mouse wheel does not scroll effect stack. Commit.
  • Open new bin: only allow opening a folder. Commit.
  • Fix monitor play/pause on click. Commit.
  • Ensure Qtblend is the prefered track compositing option. Commit.
  • Fix thumnbails and task manager crashes. Commit.
  • Various fixes for multiple bin projects. Commit.
  • Fix monitor pan with middle mouse button, allow zoomin until we have 60 pixels in the monitor view. Commit. See bug #486211.
  • Fix monitor middle mouse pan. Commit.
  • Track compositing is a per sequence setting, correctly handle it. Commit.
  • Fix archive widget showing incorrect required size for project archival. Commit.
  • FIx crash dragging from effect stack to another sequence. Commit. See bug #467219.
  • Fix typo. Commit.
  • Fix consumer crash on project opening. Commit.
  • Fix copying effect by dragging in project monitor. Commit.
  • Fix crash dropping effect on a track. Commit.
  • Fix duplicating Bin clip does not suplicate effects. Commit. Fixes bug #463399.
  • Workaround KIO Flatpak crash. Commit. See bug #486494.
  • Fix effect index broken in effectstack. Commit.
  • Fix double click in timeline clip to add a rotoscoping keyframe breaks effect. Commit.
  • Fix copy/paste rotoscoping effect. Commit.
  • Allow enforcing the Breeze icon theme (disabled by default on all platforms). Commit.
  • Fix effect param flicker on drag. Commit.
  • Fix tests warnings. Commit.
  • Test if we can remove our dark breeze icon theme hack on all platforms with the latest KF changes. Commit.
  • Dont lose image duration when changing project’s framerate. Commit. See bug #486394.
  • Fix composition move broken in overwrite mode. Commit.
  • Fix opening Windows project files on Linux creates unwanted folders. Commit. See bug #486270.
  • Audio record: allow playing timeline when monitoring, clicking track rec… Commit. See bug #486198. See bug #485660.
  • Fix compile warnings. Commit.
  • Fix Ctrl+Wheel not working on some effect parameters. Commit. Fixes bug #486233.
  • On sequence change: correctly stop audio monitoring, fix crash when recording. Commit.
  • Fix Esc key not correctly stopping audio record. Commit.
  • Fix audio rec device selection on Qt5. Commit.
  • Fix Qt5 compilation. Commit.
  • Fix audio capture source not correctly saved / used when changed. Commit.
  • Fix audio mixer initialization. Commit.
  • Fix crash disabling sequence clip in timeline. Commit. Fixes bug #486117.
  • Minor fixes and rephrasing for render widget duration info. Commit.
  • Adjust timeline clip offset label position and tooltip. Commit.
  • Feat: Implement effect groups. Commit.
  • Windows: disable force breeze icon and enforce breeze theme by default. Commit.
  • Edit clip duration: process in ripple mode if ripple tool is active. Commit.
  • Delay document notes widget initialisation. Commit.
  • Limit the threads to a maximum of 16 for libx265 encoding. Commit.
  • Another round of warning fixes. Commit.
  • Fix Qt6 deprecation warning. Commit.
  • Restore audio monitor state when connecting a timeline. Commit.
  • Work/audio rec fixes. Commit.
  • Cleanup and fix crash dragging a bin clip effect to a timeline clip. Commit.
  • Add close bin icon in toolbar, reword open new bin. Commit.
  • Correctly ensure all Bin Docks have a unique name, add menu entry in Bin to create new bin. Commit.
  • Fix a few Project Bin regressions. Commit.
  • Remove unused parameter. Commit.
  • Add multi-format rendering. Commit.
  • Fix crash opening a file on startup. Commit.
  • New camera proxy profile for Insta 360 AcePro. Commit.
  • Fix slip tool. Commit.
  • Qt6 Audio recording fixes. Commit.
  • MLT XML concurrency issue: use ReadWriteLock instead of Mutex for smoother operation. Commit.
  • Rename View menu “Bins” to “Project Bins” to avoid confusion, don’t set same name for multiple bins. Commit.
  • Add tooltip to channelcopy effect. Commit.
  • Fix crash after save in sequence thumbnails. Commit. See bug #485452.
  • Remove last use of dropped icon. Commit.
  • Use default breeze icon for audio (fixes mixer widget using all space). Commit.
  • Additional filters for file pickers / better way of handling file filters. Commit.
  • [nightly flatpak] Fix build. Commit.
  • Use default breeze icon for audio. Commit.
  • Fix possible crash on closing app just after opening. Commit.
  • Fix startup crash when pressing Esc. Commit.
  • Fix effects cannot be enabled after saving with disable bin/timeline effects. Commit. Fixes bug #438970.
  • Audio recording implementation for Qt6. Commit.
  • Fix tests. Commit.
  • Fix guides list widget not properly initialized on startup. Commit.
  • Fix Bin initialized twice on project opening causing various crashes. Commit. See bug #485452.
  • Fix crashes on insert/overwrite clips move. Commit.
  • Fix clips and compositions not aligned to track after spacer operation. Commit.
  • Fix spacer crash with compositions. Commit.
  • Fix spacer crash with guides, small optimization for group move under timeline cursor. Commit.
  • Correctly delete pluggable actions. Commit.
  • Fix dock action duplication and small mem leak. Commit.
  • View menu: move bins and scopes in submenus. Commit.
  • Ensure autosave is not triggered while saving. Commit.
  • Store multiple bins in Kdenlive Settings, remember each bin type (tree or icon view). Commit.
  • Code cleanup: move subtitle related members from timelinemodel to subtitlemodel. Commit.
  • Faster spacer tool. Commit.
  • Fix tab order of edit profile dialog. Commit.
  • Fix blurry folder icon with some project profiles. Commit.
  • Fix spacer tool with compositions and subtitles (broken by last commit). Commit.
  • Make spacer tool faster. Commit.
  • Monitor: add play zone from cursor. Commit. Fixes bug #484103.
  • Improve AV1 NVENC export profile. Commit.
  • Translate shortcut too. Commit.
  • Require at least MLT 7.22.0. Commit.
  • Use proper method to remove ampersand accel. Commit.
  • Drop code duplicating what KAboutData::setApplicationData() & KAboutData::setupCommandLine() do. Commit.
  • Fix possible crash when quit just after starting. Commit.
  • Fix crash in sequence clip thumbnails. Commit. See bug #483836.
  • Fix recent commit not allowing to open project file. Commit.
  • Go back to previous hack around ECM issue. Commit.
  • Restore monitor in full screen if they were when closing Kdenlive. Commit. See bug #484081.
  • When opening an unrecoverable file, don’t crash but propose to open a backup. Commit.
  • Ensure we never reset the locale while an MLT XML Consumer is running (it caused data corruption). Commit. See bug #483777.
  • Fix: favorite effects menu not refreshed when a new effect is set as favorite. Commit.
  • Rotoscoping: add info about return key. Commit.
  • Fix: Rotoscoping not allowing to add points close to bottom of the screen. Commit.
  • Fix: Rotoscoping – allow closing shape with Return key, don’t discard initial shape when drawing it and seeking in timeline. Commit. See bug #484009.
  • Srt_equalizer: drop method that is only available in most recent version. Commit.
  • Fix: Speech to text, allow optional dependencies (srt_equalizer), fix venv not correctly enabled on first install and some packages not installing if optional dep is unavailable. Commit.
  • Update and improve build documentation for Qt6. Commit.
  • Add test for latest cut crash. Commit.
  • Update Readme to GitLab CD destination. Commit.
  • Check if KDE_INSTALL_DIRS_NO_CMAKE_VARIABLES can be disabled (we still have wrong paths in Windows install). Commit.
  • Fix: cannot revert letter spacing to 0 in title clips. Commit. Fixes bug #483710.
  • Audio Capture Subdir. Commit.
  • Feat: filter avfilter.fillborders add new methods for filling border. Commit.
  • [nightly flatpak] Use the offical Qt6 runtime. Commit.
  • Update file org.kde.kdenlive.appdata.xml. Commit.
  • Update file org.kde.kdenlive.appdata.xml. Commit.
  • Add .desktop file. Commit.
  • Updated icons and appdata info for Flathub. Commit.
  • Fix whisper model size unit. Commit.
  • Don’t seek timeline when hover timeline ruler and doing a spacer operation. Commit.
  • Improve install steps for SeamlessM4t, warn user of huge downloads. Commit.
  • Initial implementation of subtitles translation using SeamlessM4T engine. Commit.
  • Make whisper to srt script more robust, use kwargs. Commit.
  • Block Qt5 MLT plugins in thumbnailer when building with Qt6. Commit. Fixes bug #482335.
  • [CD] Restore use of normal Appimage template after testing. Commit.
  • Fix CI/CD. Commit.
  • [CD] Disable Qt5 jobs. Commit.
  • Speech to text: add a link to models folder and display their size in settings. Commit.
  • Whisper: allow setting a maximum character count per subtitle (enabled by default). Commit.
  • Enforce proper styling for Qml dialogs. Commit.
  • Add missing license info. Commit.
  • Allow customizing camcorder proxy profiles. Commit. Fixes bug #481836.
  • Don’t move dropped files in the audio capture folder. Commit.
  • Don’t Highlight Newly Recorded Audio in the Bin. Commit.
  • Show whisper output in speech recognition dialog. Commit.
  • Ensure translated keyframe names are initialized after qApp. Commit.
  • Don’t call MinGW ExcHndlInit twice. Commit.
  • Fix extern variable triggering translation before the QApplication was created, breaking translations. Commit.
  • Fix bin thumbnails for missing clips have an incorrect aspect ratio. Commit.
  • Add Bold and Italic attributes to subtitle fonts style. Commit.
  • Warn on opening a project with a non standard fps. Commit. See bug #476754.
  • Refactor keyframe type related code. Commit.
  • Set Default Audio Capture Bin. Commit.
  • Fix python package detection, install in venv. Commit.
  • Try to fix Mac app not finding its resources. Commit.
  • Another attempt to fix appimage venv. Commit.
  • Add test for nested sequences corruption. Commit. See bug #480776.
  • Show blue audio/video usage icons in project Bin for all clip types. Commit.
  • Org.kde.kdenlive.appdata: Add developer_name. Commit.
  • Fix compilation warnings. Commit.
  • Better feedback message on failed cut. Commit.
  • Set default empty seek duration to 5 minutes instead of 16 minutes on startup to have a more usable scroll bar. Commit.
  • [Craft macOS] Try to fix signing. Commit.
  • [Craft macOS] Remove config for signing test. Commit.
  • Add some debug output for Mac effect drag crash. Commit.
  • Effect stack: don’t show drop marker if drop doesn’t change effect order. Commit.
  • Try to fix crash dragging effect on Mac. Commit.
  • Another try to fix monitor offset on Mac. Commit.
  • Don’t display useless link when effect category is selected. Commit.
  • Add comment on MLT’s manual build. Commit.
  • Add basic steps to compile MLT. Commit.
  • Blacklist MLT Qt5 module when building against Qt6. Commit.
  • Org.kde.kdenlive.appdata.xml use https://bugs.kde.org/enter_bug.cgi?product=kdenlive. Commit.
  • Fix Qt5 startup crash. Commit.
  • Refactor project loading message. Commit.
  • More rebust fix for copy&paste between sequences. Commit.

The post Kdenlive 24.05.0 released appeared first on Kdenlive.

Categories: FLOSS Project Planets

The Drop Times: Brian Perry Discusses Latest Updates and Future Vision for the API Client Initiative

Planet Drupal - Thu, 2024-05-30 11:33
Dive into an in-depth conversation with Brian Perry as he unveils the latest updates and future trajectory of the API Client initiative. Discover how the Drupal API Client is revolutionizing the interaction with Drupal APIs, and explore the exciting opportunities it presents for web development enthusiasts. Join us as we unravel the journey of innovation and collaboration within the Drupal ecosystem.
Categories: FLOSS Project Planets

Pages