# Maintainability

Maintainability is the degree to which a software product or system can be effectively and efficiently modified by its intended maintainers.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## OpenTelemetry Demo 3.0 introduces breaking changes to attributes, dashboards, and local deployment

DevFeed: [OpenTelemetry Demo 3.0 introduces breaking changes to attributes, dashboards, and local deployment](<https://devfeed.tech/articles/we-broke-the-otel-demo-32585.md>)

Original publisher: [Read original article](<https://opentelemetry.io/blog/2026/we-broke-the-demo/>)

Author: OpenTelemetry Authors; Docs CC BY

Published: 2026-07-28T10:15:19Z

Content type: opinion

Language: en

Sources: [Blog on OpenTelemetry](<https://devfeed.tech/sources/blog-on-opentelemetry.md>)

Topics: [Demo](<https://devfeed.tech/topics/demo.md>), [OpenTelemetry](<https://devfeed.tech/topics/opentelemetry.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>)

Tags: [changes](<https://devfeed.tech/tags/changes.md>), [dashboards](<https://devfeed.tech/tags/dashboards.md>), [demo](<https://devfeed.tech/tags/demo.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [opentelemetry](<https://devfeed.tech/tags/opentelemetry.md>), [services](<https://devfeed.tech/tags/services.md>)

### AI overview

This article explains intentional breaking changes in OpenTelemetry Demo 3.0, including renamed custom telemetry attributes, broken dashboards and queries, and a revised local-run configuration split across multiple files. The changes aim to improve maintainability and make forks easier to manage.

### Source excerpt

If you've been running the Demo for some time, you may have seen a couple of structural changes lately, and you may even have gotten mad about things not working as expected. We feel your pain and we totally understand it. Unfortunately there was no better way to change things without breaking the existing flow. Some of what you knew is gone. New services were added. Attribute names have changed. If you had dashboards with custom metrics, everything is broken now.

## Why Decision-Makers Adopt Kotlin Multiplatform

DevFeed: [Why Decision-Makers Adopt Kotlin Multiplatform](<https://devfeed.tech/articles/helping-decision-makers-say-yes-to-kmp-justin-mancinelli-38216.md>)

Original publisher: [Read original article](<https://touchlab.co/help-decision-makers-say-yes>)

Published: 2026-04-29T18:00:00Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [Developer experience](<https://devfeed.tech/topics/developer-experience.md>), [jetbrains](<https://devfeed.tech/topics/jetbrains.md>)

Tags: [adoption](<https://devfeed.tech/tags/adoption.md>), [business-value](<https://devfeed.tech/tags/business-value.md>), [developer](<https://devfeed.tech/tags/developer.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>)

### AI overview

The article explains that Kotlin Multiplatform adoption depends on decision-makers seeing measurable business value, not only on developer enthusiasm. It highlights reduced duplicated work across iOS and Android, native UI and workflows, potentially less code, faster release cycles, and improved maintainability.

### Source excerpt

KMP adoption is not driven by developer enthusiasm alone. It moves forward when leaders see a clear case for measurable business value.

## System Design: Principles for Maintainability, Scalability, and Reliability

DevFeed: [System Design: Principles for Maintainability, Scalability, and Reliability](<https://devfeed.tech/articles/system-design-principles-for-maintainability-scalability-and-reliability-39554.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/02-system-design-principles/>)

Author: hello@ankit-rana.com

Published: 2026-03-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [reliability](<https://devfeed.tech/topics/reliability.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [data](<https://devfeed.tech/topics/data.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [observability](<https://devfeed.tech/topics/observability.md>), [CRUD](<https://devfeed.tech/topics/crud.md>), [Latency](<https://devfeed.tech/topics/latency.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [crud](<https://devfeed.tech/tags/crud.md>), [data-systems](<https://devfeed.tech/tags/data-systems.md>), [debug](<https://devfeed.tech/tags/debug.md>), [latency](<https://devfeed.tech/tags/latency.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [observability](<https://devfeed.tech/tags/observability.md>), [reliability](<https://devfeed.tech/tags/reliability.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [system-design](<https://devfeed.tech/tags/system-design.md>)

### AI overview

This article presents production system design around reliability, scalability, and maintainability. It discusses data building blocks beyond CRUD, fault containment, isolation, testing, recovery, observability, latency versus response time, and vertical versus horizontal scaling.

### Source excerpt

Reliability, scalability, and maintainability rest on one distinction: a fault is a component-level anomaly, a failure is the system no longer delivering its service. Design to contain faults so they never become failures, and stay precise that latency is waiting time while response time is the full client-visible number.

## AI Coding Best Practices for Today

DevFeed: [AI Coding Best Practices for Today](<https://devfeed.tech/articles/ai-coding-best-practices-for-today-37551.md>)

Original publisher: [Read original article](<https://colintheshots.com/writing/ai-coding-best-practices-for-today/>)

Published: 2026-02-25T21:59:05Z

Content type: tutorial

Language: en

Sources: [Colin The Shots](<https://devfeed.tech/sources/colin-the-shots.md>)

Topics: [ai-coding](<https://devfeed.tech/topics/ai-coding.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [coding](<https://devfeed.tech/topics/coding.md>), [GitHub Copilot](<https://devfeed.tech/topics/github-copilot.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [cursor](<https://devfeed.tech/topics/cursor.md>), [Development](<https://devfeed.tech/topics/development.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Code](<https://devfeed.tech/topics/code.md>), [Security](<https://devfeed.tech/topics/security.md>), [pair\_programming](<https://devfeed.tech/topics/pair-programming.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [ai-coding-assistants](<https://devfeed.tech/tags/ai-coding-assistants.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [claude](<https://devfeed.tech/tags/claude.md>), [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [copilot](<https://devfeed.tech/tags/copilot.md>), [cursor](<https://devfeed.tech/tags/cursor.md>), [developers](<https://devfeed.tech/tags/developers.md>), [github-copilot](<https://devfeed.tech/tags/github-copilot.md>), [llms](<https://devfeed.tech/tags/llms.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [pair-programming](<https://devfeed.tech/tags/pair-programming.md>), [research](<https://devfeed.tech/tags/research.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

A practical guide to using AI coding assistants such as GitHub Copilot, Claude, and Cursor while managing risks in code quality, deprecated APIs, security, performance, and maintainability. It emphasizes human responsibility, reviewing all generated code, and verifying it with tests, linters, and personal judgment.

### Source excerpt

Why This Document Exists AI coding assistants like GitHub Copilot, Claude, Cursor, and others can significantly accelerate development. However, research shows they also introduce systematic risks:

## Blog: Introducing Falco 0.43.0

DevFeed: [Blog: Introducing Falco 0.43.0](<https://devfeed.tech/articles/blog-introducing-falco-0-43-0-32493.md>)

Original publisher: [Read original article](<https://falco.org/blog/falco-0-43-0/>)

Published: 2026-01-26T00:00:00Z

Content type: release

Language: en

Sources: [Falco - Falco](<https://devfeed.tech/sources/falco-falco.md>), [Falco - The Falco blog](<https://devfeed.tech/sources/falco-the-falco-blog.md>)

Topics: [Falco](<https://devfeed.tech/topics/falco.md>), [eBPF](<https://devfeed.tech/topics/ebpf.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>)

Tags: [ebpf](<https://devfeed.tech/tags/ebpf.md>), [falco](<https://devfeed.tech/tags/falco.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [race-condition](<https://devfeed.tech/tags/race-condition.md>), [release](<https://devfeed.tech/tags/release.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

Falco 0.43.0 is a stabilization release that consolidates changes from 0.42.0, adds deprecations, and fixes issues across Falcoctl, plugins, and libraries. It includes updates to Falco libraries and drivers, signature verification fixes, plugin fixes, and the reintroduction of the evt.arg.filename field. The release deprecates the legacy eBPF probe and gVisor engine while directing users toward modern alternatives.

### Source excerpt

Dear Falco Community, we are happy to announce the release of Falco 0.43.0 today! This is a stabilization release that consolidates the changes introduced in 0.42.0, including the drop-enter initiative and the capture recording feature. It also introduces several deprecations to improve maintainability and fixes minor issues across falcoctl, plugins, and libs. During this release cycle, we merged: 31 PRs on Falco, including 11 release note-worthy changes 48 PRs on Falco libs, including 17 release note-worthy changes 8 PRs on Falco drivers, including 3 release note-worthy changes We upgraded libs to version 0.23.1 and drivers to 9.1.0+driver. Thank you to our maintainers and contributors. This would not have been possible without your support and dedication! To learn everything about the changes, read on! What's new? TL;DR Deprecations GPG key rotation Container plugin improvements Falcoctl tweaks and improvements Key fixes: evt.arg.filename field reintroduction Falcoctl signature verification fixes overflow and NULL pointer dereferences fixes for the container plugin, shipped with plugins/container/0.6.1 race condition fix for the k8smeta plugin, shipped with plugins/k8smeta/0.4.1 This release also comes with breaking changes that you should be aware of before upgrading. Latest updates Deprecations In Falco 0.43.0, we are announcing the deprecation of three significant components to streamline the project, reduce maintenance burden, and focus on modern, more efficient alternatives. All these components are stable, and considering that the deprecation is first enforced in this version, they could be removed at any future version starting from 0.44.0. Legacy eBPF probe deprecation The "legacy" eBPF probe (configured via engine.kind=ebpf) was the original eBPF implementation in Falco. It required compiling a specific probe for each kernel version, often necessitating the dynamic usage of the falco-driver-loader or pre-built drivers. The Modern eBPF probe (engine.kind=m

## Make regular expressions easier to read

DevFeed: [Make regular expressions easier to read](<https://devfeed.tech/articles/make-regular-expressions-easier-to-read-37309.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/make-regular-expressions-easier-to-read/>)

Author: Stanko

Published: 2025-03-31T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [formatting](<https://devfeed.tech/topics/formatting.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>)

Tags: [example](<https://devfeed.tech/tags/example.md>), [extra](<https://devfeed.tech/tags/extra.md>), [join](<https://devfeed.tech/tags/join.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [readability](<https://devfeed.tech/tags/readability.md>), [regular-expressions](<https://devfeed.tech/tags/regular-expressions.md>), [value](<https://devfeed.tech/tags/value.md>)

### AI overview

The article presents a formatting technique for making complex regular expressions easier to read: split the expression into multiple string components, join them, and construct the final regex. The approach adds code and requires escaping backslashes, but enables scanning and comments that can improve readability and maintainability.

### Source excerpt

This is a simple formatting trick I use to make regular expressions more readable. The secret? Break them into multiple lines. To achieve this, format the regex as an array of strings and then concatenate the array into a single regex string. Example # Compare this example, written in a single line: const FILTER_REGEXP = /(?<name>blur|brightness|contrast|grayscale|hue-rotate|invert|opacity|saturate|sepia)\((?<value>-?\d*(?:\.\d*)?)(?<unit>\w*?)\)/g; with the multi-line version: const SUPPORTED_FILTERS = [ 'blur', 'brightness', 'contrast', 'grayscale', 'hue-rotate', 'invert', 'opacity', 'saturate', 'sepia', ].join('|'); const FILTER_REGEXP = new RegExp( [ `(?<name>${SUPPORTED_FILTERS})`, // filter name `\\(`, `(?<value>\-?\\d*(?:\\.\\d*)?)`, // value `(?<unit>\\w*?)`, // unit if any `\\)`, ].join(''), 'g' ); The multi-line version has a bit more code, but it's easier to scan and read. It also allows us to write comments for each section, clarifying the purpose of each part of the regex. I've found that complex expressions are much easier to write this way. I believe it greatly reduces the cognitive load for both the writer and the reader. Caveats # You'll need to escape the backslashes in regex strings. While this is a minor inconvenience, the readability benefits easily outweigh it. Conclusion # It boils down to personal preference, but I believe the extra code is worth it, as it improves readability and maintainability. This is especially true when dealing with notoriously difficult-to-parse complex regular expressions.

## Ekapkgs, a poly-repo fork of Nixpkgs

DevFeed: [Ekapkgs, a poly-repo fork of Nixpkgs](<https://devfeed.tech/articles/ekapkgs-a-poly-repo-fork-of-nixpkgs-32433.md>)

Original publisher: [Read original article](<https://nixcademy.com/posts/ekala-project/>)

Author: Jon Ringer

Published: 2025-03-31T00:00:00Z

Content type: opinion

Language: en

Sources: [Nixcademy Blog](<https://devfeed.tech/sources/nixcademy-blog.md>)

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [repo](<https://devfeed.tech/topics/repo.md>), [Development](<https://devfeed.tech/topics/development.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>)

Tags: [development](<https://devfeed.tech/tags/development.md>), [fork](<https://devfeed.tech/tags/fork.md>), [glibc](<https://devfeed.tech/tags/glibc.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [openssl](<https://devfeed.tech/tags/openssl.md>), [repo](<https://devfeed.tech/tags/repo.md>)

### AI overview

The article presents Ekapkgs as a poly-repository fork of Nixpkgs. It argues that Nixpkgs' monolithic scale, lengthy RFC process, and staging workflow make maintenance, convention changes, and package updates difficult, while separate repositories could enable faster iteration and more focused curation.

### Source excerpt

Ekapkgs forks Nixpkgs, splitting it into repos for faster updates & easier curation. Ditch monolithic development flows & slow RFCs. Innovate freely!

## Programming Priorities

DevFeed: [Programming Priorities](<https://devfeed.tech/articles/programming-priorities-38390.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2025/03/11/programming-priorities/>)

Author: Dan Lew

Published: 2025-03-11T14:00:44Z

Content type: opinion

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Development](<https://devfeed.tech/topics/development.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [code](<https://devfeed.tech/tags/code.md>), [code-design](<https://devfeed.tech/tags/code-design.md>), [coupling](<https://devfeed.tech/tags/coupling.md>), [decoupling](<https://devfeed.tech/tags/decoupling.md>), [development](<https://devfeed.tech/tags/development.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [programming](<https://devfeed.tech/tags/programming.md>), [readability](<https://devfeed.tech/tags/readability.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This article presents a priority order for code design: functionality first, maintainability second, and other concerns afterward. It argues that maintainable code reduces the time and risk involved in future changes, allowing later refactoring and optimization. Suggested practices include automated tests, good architecture, decoupling, encapsulation, readable code, and useful comments.

### Source excerpt

Software development (or, you know, life in general) is all about juggling priorities. For this post, I'm thinking specifically about code design priorities. You only have a limited amount of time to implement a feature, so you have to pick and choose which aspects of it to spend

## Keycloak JS 26.2.0 released

DevFeed: [Keycloak JS 26.2.0 released](<https://devfeed.tech/articles/keycloak-js-26-2-0-released-31688.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2025/02/keycloak-js-2620-released>)

Author: Keycloak Team

Published: 2025-02-20T00:00:00Z

Content type: release

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [releases](<https://devfeed.tech/topics/releases.md>), [version](<https://devfeed.tech/topics/version.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [npm](<https://devfeed.tech/topics/npm.md>)

Tags: [idm](<https://devfeed.tech/tags/idm.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [keycloak-js-release](<https://devfeed.tech/tags/keycloak-js-release.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [npm](<https://devfeed.tech/tags/npm.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [saml](<https://devfeed.tech/tags/saml.md>), [sso](<https://devfeed.tech/tags/sso.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

Keycloak JS 26.2.0 was released with no functional adapter changes. The JavaScript adapter now follows an independent release cycle, remains backward compatible with actively supported Keycloak server releases, and has moved to a dedicated repository to improve maintainability and community contribution workflows.

### Source excerpt

Highlights Today marks a significant milestone in the evolution of Keycloak JS with the release of version 26.2.0. This new version represents a shift in how the JavaScript adapter develops and evolves alongside the Keycloak ecosystem. Although this new version introduces no functional changes to the adapter, it does include several organizational changes. The most notable change is that Keycloak JS now breaks free from the main Keycloak project's release cycle. As announced earlier this year, the JavaScript adapter will follow its own independent development path. The separation from the main project allows for more frequent releases of features, bug fixes, and improved responsiveness to community feedback. The JavaScript adapter will continue to be backwards compatible with all actively supported releases of the Keycloak server, and deviation from this will be considered a breaking change. The choice to use a higher version than the main project itself was made intentionally in order to signal to users the departure from Keycloak's release cycle. We will however continue to commit to using Semantic Versioning, only bumping major versions if backwards incompatible changes are made, as is customary in the NPM ecosystem. Maintenance updates will continue to land in the 26.1.x series, as it is tied to the current stable release of the Keycloak server, but we encourage users to upgrade to new versions as needed. Another significant change is the relocation of the codebase to its own dedicated repository. This structural adjustment is not just administrative--it represents a strategic move toward better maintainability. By separating the JavaScript adapter from the main Keycloak repository, the development team gains greater flexibility in managing the codebase and processing community contributions. If you are looking to provide contributions, or are reporting issues, please redirect your efforts here. Looking ahead, we will be focussing on what is next for Keycloak JS.

## KMMBridge 1.1.0 Released - Kevin Galligan

DevFeed: [KMMBridge 1.1.0 Released - Kevin Galligan](<https://devfeed.tech/articles/kmmbridge-1-1-0-released-kevin-galligan-38240.md>)

Original publisher: [Read original article](<https://touchlab.co/kmmbridge-1.1>)

Published: 2024-12-05T00:00:00Z

Content type: release

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [gradle-plugin](<https://devfeed.tech/topics/gradle-plugin.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [.NET 11](<https://devfeed.tech/topics/net-11.md>)

Tags: [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [gradle-plugin](<https://devfeed.tech/tags/gradle-plugin.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmmbridge](<https://devfeed.tech/tags/kmmbridge.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [releases](<https://devfeed.tech/tags/releases.md>), [spm](<https://devfeed.tech/tags/spm.md>), [swift-package](<https://devfeed.tech/tags/swift-package.md>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

KMMBridge 1.1.0 is a significant internal refactoring of the Gradle plugin used to publish Kotlin Multiplatform Xcode Framework binaries through Swift Package Manager and CocoaPods. The release improves maintainability and adds Gradle configuration cache support where possible, while introducing separate modules for GitHub features and potentially requiring plugin ID changes for GitHub publishing.

### Source excerpt

KMMBridge is a Gradle plugin that publishes Kotlin Multiplatform Xcode Framework dependencies for Swift Package Manager and CocoaPods. The 1.1.0 release is a significant internal refactoring to support ongoing improvements and maintainability.

## How To Ensure Exceptional Software Quality On Mobile

DevFeed: [How To Ensure Exceptional Software Quality On Mobile](<https://devfeed.tech/articles/how-to-ensure-exceptional-software-quality-on-mobile-35083.md>)

Original publisher: [Read original article](<https://novoda.com/blog/2023/09/26/how-to-ensure-exceptional-software-quality-on-mobile/>)

Author: Ben

Published: 2023-09-26T08:49:48Z

Content type: tutorial

Language: en

Sources: [Novoda](<https://devfeed.tech/sources/novoda.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [ui-testing](<https://devfeed.tech/topics/ui-testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [mobile-devops](<https://devfeed.tech/tags/mobile-devops.md>), [mobile-engineering](<https://devfeed.tech/tags/mobile-engineering.md>), [quality](<https://devfeed.tech/tags/quality.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui-testing](<https://devfeed.tech/tags/ui-testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

This tutorial explains software quality for mobile products through the testing pyramid, performance and stability metrics, scalability, and maintainability. It emphasizes unit tests as a foundation, followed by integration and UI tests to validate component interactions and user flows.

### Source excerpt

Explore the key ways to ensure exceptional software quality on mobile including the pyramid of testing, performance and stability metrics, scalability and maintainability. The post How To Ensure Exceptional Software Quality On Mobile appeared first on Novoda.

## Maximizing Shared Code in Kotlin Multiplatform Apps

DevFeed: [Maximizing Shared Code in Kotlin Multiplatform Apps](<https://devfeed.tech/articles/the-art-of-multiplatform-programming-the-secret-to-maximizing-shared-code-34121.md>)

Original publisher: [Read original article](<https://artandscienceofcoding.com/science/kmm-maximizing-shared-code/>)

Author: Derek Lee

Published: 2022-10-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [art and science of coding](<https://devfeed.tech/sources/art-and-science-of-coding.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Dependency Inversion](<https://devfeed.tech/topics/dependency-inversion.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [dependency-inversion](<https://devfeed.tech/tags/dependency-inversion.md>), [dependency-inversion-principle](<https://devfeed.tech/tags/dependency-inversion-principle.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [programming](<https://devfeed.tech/tags/programming.md>), [science](<https://devfeed.tech/tags/science.md>)

### AI overview

This tutorial explains how to maximize shared code in Kotlin Multiplatform applications for iOS and Android. It recommends isolating platform dependencies behind a platform-independent interface and using Dependency Injection and the Dependency Inversion Principle to improve maintainability and reusability.

### Source excerpt

TL/DR; - Writing your platform-dependent code for iOS or Android requires first understanding the platform API dependencies to help you craft a shared platform-independent interface. - Isolate platform dependencies to the smallest surface area possible to increase maintainability and reusability. - Leveraging Dependency Injection (DI) and the Dependency Inversion Principle (DIP) is key to effective multiplatform programming.

## Code: science and production

DevFeed: [Code: science and production](<https://devfeed.tech/articles/code-science-and-production-36730.md>)

Original publisher: [Read original article](<https://shostack.org/blog/code-science-and-production/>)

Author: Adam

Published: 2020-05-26T00:00:00Z

Content type: opinion

Language: en

Sources: [Shostack & Friends Blog](<https://devfeed.tech/sources/shostack-friends-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Software](<https://devfeed.tech/topics/software.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [developers](<https://devfeed.tech/tags/developers.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [security](<https://devfeed.tech/tags/security.md>), [software](<https://devfeed.tech/tags/software.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

The article discusses the differences between exploratory and production code, especially in scientific and machine-learning work. It argues that converting exploratory code into production-quality software is costly and considers tradeoffs involving testing, documentation, maintainability, error checking, and security.

### Source excerpt

Phil Bull presents an interesting, generally convincing, argument in 'Why you can ignore reviews of scientific code by commercial software developers', with a couple of exceptions.

## Unit Testing Best Practices

DevFeed: [Unit Testing Best Practices](<https://devfeed.tech/articles/unit-testing-best-practices-38633.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2020_03_19_unit_testing_best_practices/>)

Published: 2020-03-19T00:00:00Z

Content type: opinion

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Development](<https://devfeed.tech/topics/development.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Code review](<https://devfeed.tech/topics/code-review.md>), [ci](<https://devfeed.tech/topics/ci.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [code-review](<https://devfeed.tech/tags/code-review.md>), [development](<https://devfeed.tech/tags/development.md>), [quality](<https://devfeed.tech/tags/quality.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

An opinionated set of best practices for writing unit tests that are trustworthy, readable, maintainable, isolated, and focused on a single use case. The article also explains how tests support requirements validation, defect detection, safer refactoring, architecture, code review, and automated execution on CI.

### Source excerpt

Source Disclaimer: This is a set of things I consider very useful when writing unit tests. I call them best practices because they allow me to write good, quality tests that are easier to read, more maintainable, and better describe business needs. These points might be subjective, you might have other opinions or have more items. That's fine. Do not hesitate to put your opinions in the comments. Tests in the Development Process Tests are very important in the development process. They give you a lot of benefits:

## Dynamic mobile client development. Problem and concept.

DevFeed: [Dynamic mobile client development. Problem and concept.](<https://devfeed.tech/articles/dynamic-mobile-client-development-problem-and-concept-38607.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2018_07_21_dynamic_mobile_client_development_problem_and_concept/>)

Published: 2018-07-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [interface](<https://devfeed.tech/topics/interface.md>), [Development](<https://devfeed.tech/topics/development.md>), [client](<https://devfeed.tech/topics/client.md>), [servers](<https://devfeed.tech/topics/servers.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>)

Tags: [boilerplate](<https://devfeed.tech/tags/boilerplate.md>), [development](<https://devfeed.tech/tags/development.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [server](<https://devfeed.tech/tags/server.md>)

### AI overview

This article examines a mobile client development problem: server data and interfaces can change faster than published mobile applications, creating compatibility challenges across application and server versions. It focuses on making interfaces between the presentation layer and views more flexible and extensible, using a profile screen and view model as an example.

### Source excerpt

Data and interfaces -- are two of the most important things in development. Data usually comes from/to server and tells application what should be used (and therefore shown to the user on UI) One of the main challenges in mobile development is to be in sync with server. Server is updated immediately (often along with web). Publishing to Play Store takes some time (even not talking about AppStore and their app review). Also users might try to use older versions of app with newer versions of web/server (not updating application when newer version was published). Even more difficult to handle compatibility issues when there might be multiple servers with different versions on them, and application has to be flexible to work with all of them.

## RAPPS Enchancements: GSoC 2017 Edition Volume 2.1

DevFeed: [RAPPS Enchancements: GSoC 2017 Edition Volume 2.1](<https://devfeed.tech/articles/rapps-enchancements-gsoc-2017-edition-volume-2-1-33003.md>)

Original publisher: [Read original article](<https://reactos.org/blogs/rapps-enchancements-gsoc-2017-edition-volume-21/>)

Published: 2017-07-06T00:00:00Z

Content type: article

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Code review](<https://devfeed.tech/topics/code-review.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>)

Tags: [2017](<https://devfeed.tech/tags/2017.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [code-review](<https://devfeed.tech/tags/code-review.md>), [free](<https://devfeed.tech/tags/free.md>), [gsoc](<https://devfeed.tech/tags/gsoc.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>)

### AI overview

A GSoC 2017 progress update on RAPPS describes refactoring code from C to C++ to improve consistency and maintainability. The author also reports feedback from a code review and postpones feature work while simplifying the code.

### Source excerpt

You may wonder why this post is not labeled "Volume 3". Well, thanks to the training week of the military dept. of our university this week wasn't very productive in terms of features. Nevertheless, this short post is here to keep you updated. This week I was working on refactoring the code and improving code. This will help me progress faster and addd new feature more easily. It is not the only reason: RAPPS was initially written in C and had been converted to C++.

## Maintainability and Expect Literals

DevFeed: [Maintainability and Expect Literals](<https://devfeed.tech/articles/maintainability-and-expect-literals-31920.md>)

Original publisher: [Read original article](<http://blog.jayfields.com/2016/06/maintainability-and-expect-literals.html>)

Author: Jay (noreply@blogger.com)

Published: 2016-06-16T11:21:00Z

Content type: opinion

Language: en

Sources: [Jay Fields](<https://devfeed.tech/sources/jay-fields.md>)

Topics: [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [unit test](<https://devfeed.tech/topics/unit-test.md>), [test](<https://devfeed.tech/topics/test.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [formatting](<https://devfeed.tech/topics/formatting.md>)

Tags: [advice](<https://devfeed.tech/tags/advice.md>), [alternatives](<https://devfeed.tech/tags/alternatives.md>), [code](<https://devfeed.tech/tags/code.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [function](<https://devfeed.tech/tags/function.md>), [literals](<https://devfeed.tech/tags/literals.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [readability](<https://devfeed.tech/tags/readability.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>), [wewut](<https://devfeed.tech/tags/wewut.md>), [xunit](<https://devfeed.tech/tags/xunit.md>)

### AI overview

The author argues that literal expected values in unit tests improve readability and keep failures focused, while helper functions can broaden the scope of maintenance and couple tests. For changing or inconsistent strings, the article suggests duplication with bulk edits or testing variable-dependent behavior separately from formatting.

### Source excerpt

Recently, Stephen Schaub asked the following on the wewut group: Several of the unit test examples in the book verify the construction of both HTML and plain text strings. Jay recommends using literal strings in the assertions. However, this strikes me as not a particularly maintainable approach. If the requirements regarding the formatting of these strings changes (a very likely scenario), every single test that verifies one of these strings using a literal must be updated. Combined with the advice that each test should check only one thing, this leads to a large number of extremely brittle tests. Am I missing something here? I can appreciate the reasons Jay recommends using literals in the tests. However, it seems that we pay a high maintainability price in exchange for the improved readability. I responded to Stephen; however, I've seen similar questions asked a few times. Below are my extended thoughts regarding literals as expected values. In general, given the option of having many similar strings (or any literal) vs a helper function, I would always prefer the literal. When a test is failing I only care about that single failing test. If I have to look at the helper function I no longer have the luxury of staying focused on the single test; now I need to consider what the helper function is giving me and what it's giving all other callers. Suddenly the scope of my work has shifted from one test to all of the tests coupled by this helper function. If this helper function wasn't written by me, this expansion in scope wasn't even my decision, it was forced upon me by the helper function creator. In the best case the helper function could return a single, constant string. The scope expansion becomes even worse when the helper function contains code branches. As for alternatives, my solution would depend on the problem. If the strings were fairly consistent, I would likely simply duplicate everything knowing that any formatting changes can likely be addressed usin

## Microsoft's changing platform support and the challenges for managed developers

DevFeed: [Microsoft's changing platform support and the challenges for managed developers](<https://devfeed.tech/articles/a-perspective-managed-developers-beyond-microsoft-32986.md>)

Original publisher: [Read original article](<https://reactos.org/blogs/perspective-managed-developers-beyond-microsoft/>)

Published: 2013-05-12T00:00:00Z

Content type: opinion

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [Microsoft](<https://devfeed.tech/topics/microsoft.md>), [deprecated](<https://devfeed.tech/topics/deprecated.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [Visual Basic](<https://devfeed.tech/topics/visual-basic.md>)

Tags: [deprecated](<https://devfeed.tech/tags/deprecated.md>), [developers](<https://devfeed.tech/tags/developers.md>), [free](<https://devfeed.tech/tags/free.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>)

### AI overview

The article discusses how Microsoft's platform changes and deprecations affected managed developers. It considers the continued operation of Silverlight applications, the persistence of Visual Basic 6 and MFC applications, and the long-term maintainability problems created by outdated systems and limited tooling updates.

### Source excerpt

In my last post, I talked a bit about how Microsoft's fixation on Metro/Modern and the appstore had resulted in it basically ignoring large swathes of its developer community. So that post got a lot more attention than I was expecting, with some agreeing and others disagreeing. Some discussions however took a turn where people began debating how much trouble, if any, developers were in with Microsoft's move. This was something that I had decided not to explore further because the previous post had already reached a fairly ridiculous length.

## My experience with django-mptt

DevFeed: [My experience with django-mptt](<https://devfeed.tech/articles/my-experience-with-django-mptt-35435.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/my-experience-with-django-mptt/>)

Author: Graham King

Published: 2011-04-29T23:57:41Z

Content type: opinion

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Django](<https://devfeed.tech/topics/django.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>)

Tags: [concurrently](<https://devfeed.tech/tags/concurrently.md>), [database](<https://devfeed.tech/tags/database.md>), [django](<https://devfeed.tech/tags/django.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [processes](<https://devfeed.tech/tags/processes.md>), [python](<https://devfeed.tech/tags/python.md>), [software](<https://devfeed.tech/tags/software.md>), [speed](<https://devfeed.tech/tags/speed.md>)

### AI overview

The author shares experience maintaining two Django projects that used django-mptt, a toolkit for adding tree structures to Django models. The article argues that django-mptt's automation can obscure behavior and increase complexity, and recommends starting with a self-referential foreign key and adding mptt only when its performance benefits justify the maintainability cost. It also discusses using raw SQL for bulk imports, avoiding concurrent object creation that can cause deadlocks, and rebuilding trees afterward.

### Source excerpt

"Navigating the forest of django-mptt: A cautionary tale"

## Newsletter 69

DevFeed: [Newsletter 69](<https://devfeed.tech/articles/newsletter-69-32935.md>)

Original publisher: [Read original article](<https://reactos.org/blogs/newsletter-69/>)

Published: 2010-03-03T00:00:00Z

Content type: article

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [ReactOS](<https://devfeed.tech/topics/reactos.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [C](<https://devfeed.tech/topics/c.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [gcc](<https://devfeed.tech/topics/gcc.md>), [MSVC](<https://devfeed.tech/topics/msvc.md>), [Maintainability](<https://devfeed.tech/topics/maintainability.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [c](<https://devfeed.tech/tags/c.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [free](<https://devfeed.tech/tags/free.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [msvc](<https://devfeed.tech/tags/msvc.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [readability](<https://devfeed.tech/tags/readability.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>)

### AI overview

A ReactOS newsletter discusses rewriting trap-handler code for the ARM port. The work introduced a C abstraction layer while retaining architecture-specific assembly, improving maintainability and readability, but GCC assembly intrinsics prevented MSVC compilation and were replaced with raw assembly.

### Source excerpt

Trap Handling One of the ways low level communication with hardware is handled is with interrupts and exceptions. Code still has to be written to deal with these and that code is in the trap handler. The original trap handler code in ReactOS was pure assembly, which to an extent is inevitable due to the very needing to carry out operations that the C language does not specify a method for.