09 Jan 2026
Fedora People
Rénich Bon Ćirić: La Neta sobre GEMINI.md y AGENTS.md: Poniéndole reglas al juego
No mames, ¿sabías que la IA puede ser tu mejor chalán o tu peor pesadilla?
Si le estás pegando duro al código asistido por IA, seguro te ha pasado que la IA se pone necia o "alucina" bien gacho. Le pides un script y te lo da para Ubuntu (¡wákala!) cuando tú eres puro Fedora, o te mete librerías bien pesadas cuando tú quieres algo KISS y DRY.
Ahí es donde entran al quite los archivos de configuración de "memoria" o reglas: ~/.gemini/GEMINI.md y ~/.config/opencode/AGENTS.md. La neta, son un paro.
¿Qué son estos archivos?
Básicamente, son el manual de estilo y las reglas del juego que tú le dictas a la IA. Es la forma de decirle: "A ver, carnal, aquí se hacen las cosas así". En lugar de estarle repitiendo en cada prompt las mismas instrucciones, lo escribes una sola vez y la IA lo toma como ley.
Es como poner al tiro a un chalán nuevo, pero este sí tiene memoria fotográfica y no se le va la onda si se lo configuras bien.
La carnita: ¿Qué le pongo al archivo?
No se trata de escribir la Biblia, pero sí de dejar claras tus "líneas rojas". Aquí te van unos ejemplos de lo que yo tengo en mi GEMINI.md para que te sirva de ejemplo:
- Preferencias del sistema:
-
Para que no me salga con cosas de Debian.
- The host system is Fedora 43 x86_64 with SELinux enabled. - OS Tool Preference: Use tools available in the OS (latest Fedora) via `dnf`. - Distro Preference: The user despises Debian/Ubuntu; never considers them.
- Filosofía de código:
-
Para que no se pase de listo con soluciones complejas.
- KISS (Keep It Simple, Stupid): Always prefer simple, readable code. - DRY (Don't Repeat Yourself): Extract repeated code. - Avoid Premature Optimization: Write clean code first.
- Ops y contenedores:
-
Porque aquí usamos Podman, mi compa. Nada de andar con cosas raras.
- Containers: Prefer Podman over Docker (Docker is sub-optimal). - Containerfile: Use `Containerfile` instead of `Dockerfile`. - Quadlets: Use systemd quadlets (`*.container`) when practical.
El truquencio: Un solo archivo
Para no andar manteniendo dos archivos diferentes y que luego se te desincronicen, la movida maestra es crear uno "maestro" y hacer un enlace simbólico (symlink). ¡Bien práctico!
Creas tu ~/.gemini/GEMINI.md bien tuneado y luego tiras el symlink para OpenCode:
ln -sf ~/.gemini/GEMINI.md ~/.config/opencode/AGENTS.md
Tip
Así, cambias una regla en un lado y se actualiza en todos lados. Te ahorras un chingo de chamba y mantienes la consistencia.
¿Cómo se refleja esto en la talacha diaria?
La diferencia es garrafal, carnal; te ahorra un chingo de tiempo:
- Git Limpiecito: Si le pones reglas de Git Management, la IA solita te va a sugerir commits con formato Conventional Commits y hasta te va a recordar firmarlos con GPG. Nada de mensajes tipo "fix bug".
- Infraestructura al Tiro: Si le pides un despliegue, ya no te va a dar un docker-compose.yml genérico. Te va a dar un archivo Quadlet listo para tu Fedorita.
- Seguridad Primero: La IA te va a avisar si estás a punto de regarla subiendo una API key. Es como tener un senior dev cuidándote la espalda.
Note
El código que generas se siente tuyo, adaptado a tu flujo de trabajo (EVALinux, en mi caso), y no un copy/paste genérico de Stack Overflow. ¿No crees que así conectas mejor con la gente?
Conclusión
Dedicarle unos 15 minutos a optimizar tu GEMINI.md no es pérdida de tiempo, es una inversión. Es la diferencia entre pelearte con la IA para que te entienda y tener un copiloto que ya se sabe el camino de memoria.
Así que ya se la saben, configuren sus reglas, no sean desidiosos y ¡a darle al ether!
09 Jan 2026 2:33pm GMT
Christof Damian: Friday Links 26-01
Leadership
Team's "Wrapped 2025" to Increase Velocity - nice idea I clearly didn't implement
The Product Operating Model at Google - A Critical View - possibly a bit outdated.
Why Federated Design Systems Keep Failing - design systems need leadership, not democracy, as so many decisions
You Can't Debug a System by Blaming a Person - people need to feel safe to make good decisions and do good work
Visibility is Velocity - this is so true, on every level of organisations
Engineering
The cardinal sin of software architecture - "The worst kind of accidental complexity in software is the unnecessary distribution, replication, or restructuring of state, both in space and time."
On Friday Deploys: Sometimes that Puppy Needs Murdering (xpost) - I like this: "Deploy freezes are a hack, not a virtue"
LLM-powered coding mass-produces technical debt - especially if you go anywhere near vibe-coding
Tackling tech debt | Meri Williams | LeadDev New York 2025 [YouTube] - another perspective on tech debt, going into the problems and some nice metrics to track them.
What is a PC compatible? - apparently nothing
How AI is transforming work at Anthropic - some interesting data
Environment
Wind power slashed 4.6 billion euros off electricity bills in Spain last year claim - good for the environment, good for the wallet
Urbanism
Geometry, Empire &Control - the massive influence of military engineers on the history of urbanism [YouTube] - long video about how history influences how we live
Why Europe's night-train renaissance derailed - it's expensive and will take time, nobody has the patience
Car Brain - opening roads in San Francisco
Random Cassettes
*PREMIERE*: Tanith Tape Archiv 01: Cybertape II (1989) [German, YouTube] - Tanith is releasing some of his old mixes on cassette tapes.
Why I Quit Streaming And Got Back Into Cassettes [$$$] - "tapes remind us what we're missing when we stop taking risks."
Streaming Music To Cassette - because we love the sound … apparently.
Stuttgart 21: In der Bahnsteighalle werden die Gleise gefräst [German YouTube] - I love specialised train machines!
The Amiga's filesystem is now on Linux and Mac, thanks to an emulated driver - good old Amiga.
The Unbearable Joy of Sitting Alone in A Café - bonus points for not using your phone or a laptop.
Why Didn't AI "Join the Workforce" in 2025? - because nobody wants it and it isn't ready
ill-advised by Bill Nighy [Podcast] - When I grow up, I want to be as cool and well-dressed as Bill.
09 Jan 2026 12:25pm GMT
Fedora Community Blog: Community Update – Week 02 2026

This is a report created by CLE Team, which is a team containing community members working in various Fedora groups for example Infrastructure, Release Engineering, Quality etc. This team is also moving forward some initiatives inside Fedora project.
Week: 05 Jan - 09 Jan 2026
Fedora Infrastructure
This team is taking care of day to day business regarding Fedora Infrastructure.
It's responsible for services running in Fedora infrastructure.
Ticket tracker
- [FESCo] Five badges for F43-F47 changes have been pushed [A] [B] [C] [D] [E]
- Cannot send emails via smtp-auth server for orphaned packages process
- error 500 on cgit hosted on fedorapeople.org
- new group for Universal Blue
CentOS Infra including CentOS CI
This team is taking care of day to day business regarding CentOS Infrastructure and CentOS Stream Infrastructure.
It's responsible for services running in CentOS Infratrusture and CentOS Stream.
CentOS ticket tracker
CentOS Stream ticket tracker
- Create internal nginx cache for stream infra
- EL 9 / 10 oVirt Tags
- One sponsored server (hosting services like website) is flapping
- [virt-sig collab] : rebase qemu-kvm pkg for ppc4le
Release Engineering
This team is taking care of day to day business regarding Fedora releases.
It's responsible for releases, retirement process of packages and package builds.
Ticket tracker
- Preparatory steps for the next Mass Rebuild which is currently scheduled for next week, Wednesday January 14th.
If you have any questions or feedback, please respond to this report or contact us on #admin:fedoraproject.org channel on matrix.
The post Community Update - Week 02 2026 appeared first on Fedora Community Blog.
09 Jan 2026 10:00am GMT
Kushal Das: Introducing EktuPy
09 Jan 2026 6:49am GMT
Rénich Bon Ćirić: The OpenCode "Dual-Pipeline" Architecture
Let's be honest: most AI coding setups are a mess. One day you are using a cheap model that can't even close a bracket, and the next you're using a premium orchestrator that burns $10 in tokens just to fix a "hello world" typo. It's frustrating as hell, right?
I got tired of the "Context Fatigue" and the bill at the end of the month, so I came up with what I call the Dual-Pipeline Architecture. It's basically a way to turn yourself into a one-man agency without going broke.
Note
This setup is production-grade. It's meant for people who actually build stuff, not just prompt-jockeys.
Why This Setup Rocks
The core idea is a Hierarchical Mixture of Experts. Instead of asking one "smart" model to do everything, we load-balance the work.
-
Dual Orchestrators (The "Manager" Layer):
- manager-opencode (COO):
-
The workhorse. Runs on cheap, fast models (like GLM). It handles 80% of the routine coding and operations.
- manager-gemini (CTO):
-
The big brain. Only called for high-stakes architecture or when things get really weird. It plans, then delegates the typing to the "juniors."
-
Specialized Departments:
We don't use a generic assistant. We split the brains:
- The Dev Team:
-
- @architect-core: Designs the systems.
- @builder-fast: Types code at light speed.
- @qa-hawk: Audits everything with a nasty personality to find bugs.
- The Business Team:
-
- @biz-strategist: Decides if what you're building actually makes money.
- @creative-lead: Handles the copy so it doesn't sound like a robot wrote it.
Manual Setup Instructions
If you're like me and prefer to do things by hand instead of running a magic script, here's how you get this running.
- Prerequisites:
-
- Node.js & NPM (obviously).
- uv installed (it makes ast-grep way faster).
- The OpenCode CLI (npm i -g opencode-ai).
-
Configuration:
First, create your config folder:
mkdir -p ~/.config/opencode
Then, set up your base config.json to handle authentication:
{ "$schema": "https://opencode.ai/config.json", "plugin": ["opencode-gemini-auth@latest"] }
-
Shell Alias:
Don't waste time typing long commands. Add this to your .bashrc or .zshrc:
alias opencode='npx opencode-ai@latest'
Tip
Keep your context clean! I explicitly disable heavy tools like Puppeteer or SQLite globally and only enable them for the specific agents that need them. Your wallet will thank you.
Usage Examples
- Routine Work:
- $ opencode > @manager-opencode create a simple landing page.
- Complex Architecture:
- $ opencode > @manager-gemini I need to refactor the auth system. Ask @architect-core for a plan first.
What do you think? This setup changed the game for me. It's fast, it's organized, and it's significantly cheaper than just throwing GPT-4 at every problem.
09 Jan 2026 5:51am GMT
08 Jan 2026
Fedora People
Fedora Community Blog: Improve traceability with the tmt web app

The tmt web app is a simple web application that makes it easy to explore and share test and plan metadata without needing to clone repositories or run tmt commands locally.
At the beginning, there was the following user story:
As a tester, I need to be able to link the test case(s) verifying the issue so that anyone can easily find the tests for the verification.
Traceability is an important aspect of the testing process. It is essential to have a bi-directional link between test coverage and issues covered by those tests so that we can easily:
- identify issues covered by the given test
- locate tests covering given issues
Link issue from test
Implementing the first direction in tmt was relatively easy: We just defined a standard way to store links with their relations. This is covered by the core link key which holds a list of relation:link pairs. Here's an example test metadata:
summary: Verify correct escaping of special characters test: ./test.sh link: - verifies: https://issues.redhat.com/browse/TT-206
Link test from issue
The solution for the second direction was not that straightforward. Thanks to its distributed nature, tmt does not have any central place where a Jira issue could point to. There is no server which keeps information about all tests and stores a unique id number for each which could be used in the link.
Instead of integers, we're using the fmf id as the unique identifier. It contains url of the git repository and name of the test. Optionally, it can also define ref instead of using the default branch and path to the fmf tree if it's not in the git root.
The tmt web app accepts an fmf id of the test or plan or both, clones the git repository, extracts the metadata, and returns the data in your preferred format:
- HTML for human-readable viewing
- JSON or YAML for programmatic access
The service is currently available at the following location:
Here's an example of what the parameters would look like when requesting information about a test in the default branch of a git repository:
By default, a human-readable HTML version of the output is provided to the user. Include the format parameter in order to choose your preferred format:
It is possible to link a test, a plan, or both test and plan. The last option can be useful when a single test is executed under several plans. Here's how the human readable version looks like:

Create new tests
In order to make the linking as smooth as possible, the tmt test create command was extended to allow automated linking to Jira issues.
First make sure you have the .config/tmt/link.fmf config prepared. Check the Link Issues section for more details about the configuration.
issue-tracker:
- type: jira
url: https://issues.redhat.com
tmt-web-url: https://tmt.testing-farm.io/
token: ***
When creating a new test, use the --link option to provide the issue which is covered by the test:
tmt test create /tests/area/feature --template shell --link verifies:https://issues.redhat.com/browse/TT-206
The link will be added to both test metadata and the Jira issue. Just note that the Jira link will be working once you push the changes to the remote repository.
Link existing objects
It's also possible to use the tmt link command to link issue with already existing tests or plans:
tmt link --link verifies:https://issues.redhat.com/browse/TT-206 /tests/core/escaping
If both test and plan should be linked to the issue, provide both test and plan as the names:
tmt link --link verifies:https://issues.redhat.com/browse/TT-206 /tests/core/escaping /plans/features/core
This is how the created links would look like in Jira:

Closing notes
As a proof of concept, for now there is only a single public instance of the tmt web app deployed, so be aware that it can only explore git repositories that are publicly available. For the future we consider creating an internal instance in order to be able to access internal repositories as well.
We are looking for early feedback. If you run into any problems or any missing features, please let us know by filing a new issue. Thanks!
The post Improve traceability with the tmt web app appeared first on Fedora Community Blog.
08 Jan 2026 12:00pm GMT
Remi Collet: 🪦 PHP 8.1 is retired
Two year afters PHP 8.0, and as announced, PHP version 8.1.34 was the last official release of PHP 8.1
To keep a secure installation, the upgrade to a maintained version is strongly recommended:
- PHP 8.2 has security only support and will be maintained until December 2026.
- PHP 8.3 has security only support and will be maintained until December 2027.
- PHP 8.4 has active support and will be maintained until December 2026 (2028 for security).
- PHP 8.5 has active support and will be maintained until November 2027 (2029 for security).
Read :
- PHP Supported versions
- Migration guide from PHP 8.1.x to PHP 8.2.x
- Migration guide from PHP 8.2.x to PHP 8.3.x
- Migration guide from PHP 8.3.x to PHP 8.4.x
- Migration guide from PHP 8.4.x to PHP 8.5.x
ℹ️ However, given the very important number of downloads by the users of my repository the version is still available in remi repository for Enterprise Linux (RHEL, CentOS, Alma, Rocky...) and Fedora and will include the latest security fixes.
⚠️ This is a best effort action, depending on my spare time, without any warranty, only to give users more time to migrate. This can only be temporary, and upgrade must be the priority.
You can also watch the sources repository on github.
08 Jan 2026 9:06am GMT
Fedora Community Blog: Fedora Linux 43 (F43) election results

The Fedora Linux 43 (F43) election cycle has concluded. In this election round, there was only one election, for the Fedora Engineering Steering Committee (FESCo). Congratulations to the winning candidates. Thank you to all candidates for running in this election.
Results
FESCo
Five FESCo seats were open this election. A total of 214 ballots were cast, meaning a candidate could accumulate a maximum of 1,498 votes. More detailed information on the voting breakdown is available from the Fedora Elections app in the Results tab.
| # votes | Candidate |
| 1013 | Kevin Fenzi |
| 842 | Zbigniew Jędrzejewski-Szmek |
| 784 | Timothée Ravier |
| 756 | Dave Cantrell |
| 706 | Máirín Duffy |
| 685 | Fabio Alessandro Locati |
| 603 | Daniel Mellado |
The post Fedora Linux 43 (F43) election results appeared first on Fedora Community Blog.
08 Jan 2026 8:00am GMT
07 Jan 2026
Fedora People
Christof Damian: 2025 in books
Another year, another bunch of books.
I spend most of the year binging through thriller series that I had already had started in 2024.
The books I really liked were the newest book from the Slough House series, the spy novel The Persian, and Fundamentals of Software Architecture (even if I didn't finish it).
I am still using Goodreads to track these, so you can find the pretty Year in Books there.
Currently, I am reading The John Varley Reader: Thirty Years of Short Fiction, which is great. Apparently, I have to wait until someone passes until people tell me about them.
Non-Fiction
This year was very light on non-fiction. I just didn't have the patience for it.
Never Search Alone: The Job Seeker's Playbook Never Search Alone: The Job Seeker's Playbook - while searching for a new job, I used this book and the associated community to help. Some of it worked, a lot of it doesn't make sense for my roles in the current market.
Life After Cars: Freeing Ourselves from the Tyranny of the Automobile - I love the podcast, but this was mostly about cars and not the life after them.
Fundamentals of Software Architecture: An Engineering Approach - I quite liked this one, but I didn't finish it. I will continue at some point.
Future Boy: Back to the Future and My Journey Through the Space-Time Continuum - Michael J. Fox autobiography from the Back to the Future days. Many cool titbits.
Fiction
Comics
07 Jan 2026 5:21pm GMT
Ben Cotton: GitHub Discussions versus Discourse
Some projects get by just fine with only communicating in the issue tracker and commits (or pull requests). Most projects need to talk more. They need to discuss governance issues, get community feedback on feature ideas, address user questions, plan events, and more. There's no end to the number of venues to have these conversations, but for many projects, it comes down to one choice: GitHub Discussions versus Discourse.
Both of these platforms have their advantages and disadvantages. As I wrote in the appendix to Program Management for Open Source Projects, there's no right tool, just the right tool for your community. I have used both of these tools, and can recommend both for different needs.
GitHub Discussions
GitHub Discussions is a relatively simple forum add-on available to GitHub repositories. Project administrators can add it with a simple checkbox. As a result, it requires no additional infrastructure and participants can use their existing GitHub account. You can easily convert issues to discussion threads or discussion threads into issues - some projects even require a discussion thread as a prerequisite for issue creation.
GitHub Discussions is tightly integrated into the rest of GitHub, as you might expect. This means it's easy to tag users, cross-reference issues/commits, watch for new activity, and so on. On the other hand, this tight integration isn't helpful if your project isn't tightly integrated into GitHub. Depending on the nature of your project, users who come to ask questions may not even have a GitHub account.
Discourse
Discourse (not to be confused with the chat platform Discord) is an open source discussion platform. You can self-host it or pay for hosting from Discourse or their partners. Because it's designed to be a community communication tool, it offers a lot more flexibility. This includes both themes as well as plugins and other configuration options.
Discourse includes a concept of "trust levels" that can automatically move users up through greater privileges based on a history of prosocial behavior. Moderators and access control can be adjusted on a per-category basis, which is particularly helpful for the largest of communities.
Discourse has a mailing list mode so that users who prefer can treat it like a mailing list. It also supports private conversations so that moderators and administrators can discuss concerns candidly.
GitHub Discussions versus Discourse: pick your winner
How you decide which tool to use will depend on several factors:
- Other tooling. If your project's infrastructure is entirely contained on GitHub, then GitHub Discussions is probably the best choice for you. If you don't use GitHub at all, then Discourse makes more sense. In general, the more non-GitHub tooling you have (CI systems, for example), the more Discourse makes sense on this axis.
- Infrastructure resources and budget. GitHub Discussions has zero (financial) cost to your community, so that's a good fit for the vast majority of open source projects. Discourse requires you to have a budget to pay for hosting or the resources and skills to self-host. In my experience, self-hosting is fairly easy - if you have people in the community who can do it.
- Project purpose. Communities that primarily build software - and mostly have development-oriented contributors - benefit from the tight integration that GitHub Discussions offers. If the community is not software-focused (e.g. if it's an affinity group, advocacy organization, etc), then Discourse may be a better choice.
- Target audience. If the people who will be participating in the conversation are primarily contributors or developer-like people, then GitHub Discussions can be a good fit. If you're expecting general computer users - who may or may not even know what GitHub is - then Discourse is probably more approachable.
- Community size. Discourse has a lot of flexibility and power to handle thousands of users. When you have ones or dozens of users, the simplicity of GitHub Discussions can be more appealing.
Ultimately, there's no simple answer. You have to compare the tools across the axes above (plus any other technical or philosophical requirements you have).
This post's featured photo by Volodymyr Hryshchenko on Unsplash.
The post GitHub Discussions versus Discourse appeared first on Duck Alignment Academy.
07 Jan 2026 12:00pm GMT
Avi Alkalay: O problema não é a Venezuela
Gente que diz que Maduro era péssimo e já vai tarde. Gente que diz que ninguém falou nada quando Maduro quis tomar parte da Guiana em 2023. E assim justifica Donal fazer o que fez na Venezuela, país que realmente está em frangalhos e agora seu povo foi libertado. Até celebra, até bate palmas.
Gente que diz essas coisas, acorde. Tente ver mais longe e para o futuro.
O problema maior não é bem a Venezuela.
O problema é a nova ordem mundial que se abre para o futuro agora.
Qual o próximo país que Donald vai querer invadir? Dinamarca? Colombia? Sim, porque abriu-se um precedente. E se Donald invade, porque Putin não invadiria em sua região também? E China? E Taiwan? Quando será a vez do Brasil ser invadido, com nossas infindáveis riquezas naturais, fontes de água potável, sol, população enorme? Invadir países pelas suas riquezas é coisa de século 15. Não de século 21, era da ONU.
Preparamos nossos filhos e nossas aposentadorias para uma certa ordem mundial que pode estar se desmanchando. O futuro fica tremendamente mais incerto agora para todo mundo. Esse é o risco. Isso é que é ruim.
Quanto a Venezuela, não há muitas evidências na História de país que foi invadido por suas riquezas naturais e que a situação melhorou muito para o povo lá. Invasão assim é para pilhar, usurpar, não para fazer caridade.
Bater palma para a abertura deste precedente é passar vergonha. Muita vergonha, gente. Em caso de dúvida, é melhor aproveitar a chance de ficar quieto.
Também no meu LinkedIn e Facebook.
07 Jan 2026 10:48am GMT
06 Jan 2026
Fedora People
Tomasz Torcz: I Voted, F43 edition
06 Jan 2026 4:44pm GMT
Kushal Das: 2025 blog review
06 Jan 2026 8:34am GMT
Fedora Badges: New badge: Fedora 47 Change Accepted !
06 Jan 2026 6:19am GMT
Fedora Badges: New badge: Fedora 46 Change Accepted !
06 Jan 2026 6:15am GMT
Fedora Badges: New badge: Fedora 45 Change Accepted !
06 Jan 2026 6:14am GMT

