<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Peter Wurbs</title>
    <description>The latest articles on DEV Community by Peter Wurbs (@pwurbs).</description>
    <link>https://dev.to/pwurbs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3734610%2F20c5283c-6515-481d-b7b7-43829c02a468.png</url>
      <title>DEV Community: Peter Wurbs</title>
      <link>https://dev.to/pwurbs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pwurbs"/>
    <language>en</language>
    <item>
      <title>Beyond Jira: Reclaiming Agile Sovereignty with Open Source</title>
      <dc:creator>Peter Wurbs</dc:creator>
      <pubDate>Mon, 13 Apr 2026 11:10:01 +0000</pubDate>
      <link>https://dev.to/pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14j2</link>
      <guid>https://dev.to/pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14j2</guid>
      <description>&lt;p&gt;A pragmatic review of self-hosted alternatives for modern teams and why I’ve started building a leaner solution for our own needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;For me, Jira was the gateway to Agile methodology and the Kanban principle. Since discovering it, I haven’t wanted to miss the methodology for a single day. I use Kanban in my professional life, but also privately, and even within my family.&lt;/p&gt;

&lt;p&gt;Unfortunately, years ago, Atlassian discontinued our server licenses. Now, they are forcing us into the cloud — whether we like it or not. Aside from that, Jira has always been too expensive. My team actually only used about 30% of the features; in exchange, the software has developed into a “Moloch” over the years: vulnerable, complex to configure, plagued by frequent security updates, and burdened by long startup times.&lt;/p&gt;

&lt;p&gt;Because we don’t want to lose the methodology, but we absolutely have to move away from Jira, I set out on a journey.&lt;/p&gt;

&lt;p&gt;In Europe, everyone talks about IT Sovereignty. An “Exit Jira/Atlassian” strategy would be sovereignty in action. But which company actually follows through?&lt;/p&gt;

&lt;p&gt;Since I no longer had access to Jira myself but refused to give up the Agile way of working, I spent some months attentively collecting information and testing tools. This article is the result of that journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Criteria for a Well-Founded Analysis
&lt;/h2&gt;

&lt;p&gt;To do this properly, we need a checklist. At the very top stands Open Source. As a lesson learned from the Atlassian disaster (Vendor Lock-in) and the resulting loss of our own agency, any alternative must provide its software as Open Source on GitHub or similar platforms. Even if this is only guaranteed for a “Community Edition,” it ensures that in an emergency, we could take the source code and develop it further ourselves. This only counts, of course, if that edition includes the essential functions and a permissive license.&lt;/p&gt;

&lt;p&gt;I am not trying to cover the functional scope of Jira 1:1. I am limiting myself to core functions and a pragmatic, sensible implementation. My target audience is Agile (DevOps) teams with lean regulations and a free way of working. I’d gladly trade a few barely used features for software that is slim, stable, and secure.&lt;/p&gt;

&lt;p&gt;To keep this analysis focused, I have defined the following “KO Criteria” (Exclusions):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No Classic Project Management&lt;/strong&gt;: I am leaving out traditional PM software. I want a tool for Agile methodology, not a replacement for Microsoft Project. ;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Legacy Bloat&lt;/strong&gt;: This comparison is not for companies that need Jira for complex legacy processes, rigid quality gates, or endless checklists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Simple Task Lists&lt;/strong&gt;: I am not looking at simple To-Do apps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Cloud-Only&lt;/strong&gt;: True sovereignty requires Self-Hosting. If we can’t control the installation and the data, it doesn’t make the list. Even EU-hosted, GDPR-compliant clouds don’t protect us from a provider’s future forced migrations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, the tool should feel good. Nothing is worse than having to work daily with software you don’t enjoy using. Therefore, the UI plays a major role.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR: The Quick Summary
&lt;/h2&gt;

&lt;p&gt;For those short on time, here is the summary of results, recommendations, and my personal conclusion. See “The Long Story” for a detailed presentation of the checklist and the technical results of the individual tool assessments.&lt;/p&gt;

&lt;p&gt;The assessment was done along the following categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Self-Hosting / Open Source / License / Costs&lt;/li&gt;
&lt;li&gt;Features&lt;/li&gt;
&lt;li&gt;Architecture&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;li&gt;Security / Privacy&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tool Assessments by Recommendation Status
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;❌ ❌ &lt;strong&gt;Asana, Blossom, Backlog&lt;/strong&gt;: Enterprise software trying to fully replace Jira. Closed source, requires registration, and can be very expensive.&lt;/li&gt;
&lt;li&gt;❌ &lt;strong&gt;Open Project, Plane&lt;/strong&gt;: Open Source, but uses an “Open-Core” model. Overloaded with features, but essential features are often missing in the community/free editions.&lt;/li&gt;
&lt;li&gt;❌ &lt;strong&gt;Kanboard, WeKan, Kanba&lt;/strong&gt;: 100% Open Source, but the tools are either no longer maintained or the UI feels significantly outdated. I would not like to work with it.&lt;/li&gt;
&lt;li&gt;✅❓ &lt;strong&gt;Kan.bn, Kaneo, Vikunja&lt;/strong&gt;: 100% Open Source with strong communities. Slim, attractive Kanban-focused applications. However, they lack core features familiar to Jira users and are positioned more as Trello substitutes. Limited recommendation.&lt;/li&gt;
&lt;li&gt;✅❓ &lt;strong&gt;Planka&lt;/strong&gt;: Features are comparable to the category above. Strong community and public source code, but the license (not Open Source) imposes restricted usage terms. Limited recommendation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is only my personal opinion. So, there is no “you must use this tool” statement. Instead, everyone must assess and decide for themselves, based on their specific team methods and priorities. So, use this information but decide for yourself… 😉&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion: Why I started building my own tool?
&lt;/h3&gt;

&lt;p&gt;But if I were asked which tool I would actually choose, I would say “none of them”. Unfortunately, no tool fulfilled all my requirements. If a tool looks good, it lacks features. If the features are there, the UI is clunky. If the function is okay, the license is not.&lt;/p&gt;

&lt;p&gt;Even the tools with a partly recommended rating have these issues:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Missing Core Features&lt;/strong&gt;: Release management (aka versions or milestones) is not there at all, not to mention the support for SCRUM. Backlog management is mostly not there or poorly implemented. Tools are rather positioned as a substitute for Trello and not for Jira.&lt;/li&gt;
&lt;li&gt;Signs of accumulated &lt;strong&gt;technical debt&lt;/strong&gt; and &lt;strong&gt;too many dependencies&lt;/strong&gt; used. This unnecessarily increases the supply chain surface and results in an increased effort for maintenance and updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security issues&lt;/strong&gt;: Too many useless, redundant, deprecated, or not-maintained dependencies used, no HTTP security headers to protect clients against XSS, partly weak access/session token management.&lt;/li&gt;
&lt;li&gt;No tool &lt;strong&gt;combines a classic Kanban board view with flexible daily planning&lt;/strong&gt; to easily organize the workflow and time side-by-side.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I realized that the ‘perfect’ balance between the complexity of Jira and the simplicity of a basic board doesn’t really exist. That’s why I started my own project “&lt;strong&gt;wuflow”&lt;/strong&gt; to see if I could bridge that gap.&lt;/p&gt;

&lt;p&gt;It’s an attempt to marry a nice, modern UI with the ‘Sovereign’ requirements of a self-hosted agile engine, combined with a security-first approach. It is currently in its early stages — focused on being lean, secure, and open-source. It’s not a ‘Jira-killer’ for everyone, but it’s a step toward true IT sovereignty.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;As a side note:&lt;/strong&gt; I also wanted to see how far I could get with AI-assisted development anyway, building a new tool from scratch while keeping the supply chain surface as small as possible.&lt;/p&gt;

&lt;p&gt;And I like to make good things, which simply work and provide added value. There is a deep satisfaction to have full control over concepts, code, features, implementation, prioritization…&lt;/p&gt;

&lt;p&gt;If you share this vision, I’d love for you to check it out on GitHub, give it a star, deploy and test yourself, and raise issues for bugs or new features:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pwurbs" rel="noopener noreferrer"&gt;
        pwurbs
      &lt;/a&gt; / &lt;a href="https://github.com/pwurbs/wuflow" rel="noopener noreferrer"&gt;
        wuflow
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      wuFlow is a simple, modern, and lightweight issue tracking and planning application.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;wuFlow&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://opensource.org/licenses/Apache-2.0" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5b60841bea9e11d9d0b0950d690c9bc554e06385634056a7d5d62a15d1a4eabe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4170616368655f322e302d626c75652e737667" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://github.com/pwurbs/wuflow/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c333c261d1f031251d6c149cb1ab9b80d7aa5ea8e95d1bad7c7fcd59d7b034d9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f7077757262732f7775666c6f77" alt="GitHub Release"&gt;&lt;/a&gt;
&lt;a href="https://github.com/pwurbs/wuflow/issues" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bbdfd317a9ade9036751b673e31f34844c9267e983763f9d6837ab3af15b015c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f7077757262732f7775666c6f77" alt="GitHub issues"&gt;&lt;/a&gt;  &lt;br&gt;
&lt;a href="https://github.com/pwurbs/wuflow" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d1d55d4f9b234d680a14d660e3c683137b2460c699b856cd992d21f2e4376bee/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f676f2d6d6f642f676f2d76657273696f6e2f7077757262732f7775666c6f77" alt="Go Version"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/github.com/pwurbs/wuflow" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/77fd99c2837e1b2c899089280cc6715d0bd527348582bc80da1a78259d195efa/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f7077757262732f7775666c6f77" alt="Go Report Card"&gt;&lt;/a&gt; &lt;br&gt;
&lt;a href="https://github.com/pwurbs/wuflow/pkgs/container/wuflow" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/06dfcd3b74fb6e2be758430b646dbd7297bcc67197e5576fcd95725d7234b871/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f676863722e696f2d696d6167652d626c75653f6c6f676f3d646f636b6572" alt="Container Image"&gt;&lt;/a&gt; &lt;br&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/5214517ace7e8188791950b576c2d9f3ab756da14fbdd999ff76601df0bdac98/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7775666c6f772d6f7373266d65747269633d616c6572745f737461747573"&gt;&lt;img src="https://camo.githubusercontent.com/5214517ace7e8188791950b576c2d9f3ab756da14fbdd999ff76601df0bdac98/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7775666c6f772d6f7373266d65747269633d616c6572745f737461747573" alt="Quality Gate Status"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d6ab45b829ef935627ed8d4cf6f73ecd95b3ff07f1baaee33a5c2ee5ebc8a0d3/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7775666c6f772d6f7373266d65747269633d636f766572616765"&gt;&lt;img src="https://camo.githubusercontent.com/d6ab45b829ef935627ed8d4cf6f73ecd95b3ff07f1baaee33a5c2ee5ebc8a0d3/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7775666c6f772d6f7373266d65747269633d636f766572616765" alt="Coverage"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/76a1511b20dfcaf86e11efac3714fd7994a66e9dec3b1b488300599bc92570ad/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7775666c6f772d6f7373266d65747269633d76756c6e65726162696c6974696573"&gt;&lt;img src="https://camo.githubusercontent.com/76a1511b20dfcaf86e11efac3714fd7994a66e9dec3b1b488300599bc92570ad/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7775666c6f772d6f7373266d65747269633d76756c6e65726162696c6974696573" alt="Vulnerabilities"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/f34a040a691edf233cfd7c2fb27abecf1d866fa6054a0b7f51e0a4cc5fef3875/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7775666c6f772d6f7373266d65747269633d62756773"&gt;&lt;img src="https://camo.githubusercontent.com/f34a040a691edf233cfd7c2fb27abecf1d866fa6054a0b7f51e0a4cc5fef3875/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7775666c6f772d6f7373266d65747269633d62756773" alt="Bugs"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/pwurbs/wuflow/static/logo.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fpwurbs%2Fwuflow%2FHEAD%2Fstatic%2Flogo.png" alt="wuFlow Logo" width="100"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;General&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;wuFlow is a simple, modern, and lightweight issue tracking and planning application. It is designed to combine the immediate visual overview of a classic Kanban board with structural planning capabilities to help you organize tasks effectively without unnecessary complexity
This tool wants to help you to organize, balance and track the work in a team to achieve a better &lt;strong&gt;flow&lt;/strong&gt; of work by a transparent visualization. This is one of the main intentions of a &lt;a href="https://en.wikipedia.org/wiki/Kanban_board" rel="nofollow noopener noreferrer"&gt;Kanban board&lt;/a&gt;.
The usage is not limited to software development teams, it can be used by any person, group or even families that wants to organize and track their work.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/pwurbs/wuflow/docs/screenshots/board.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fpwurbs%2Fwuflow%2FHEAD%2Fdocs%2Fscreenshots%2Fboard.png" alt="wuFlow Board"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We developed this app having the following goals in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a &lt;strong&gt;modern and lightweight&lt;/strong&gt; issue tracking solution focused on the mostly used core functions to ensure a good &lt;strong&gt;flow&lt;/strong&gt; of work.&lt;/li&gt;
&lt;li&gt;Can be used &lt;strong&gt;without expensive subscriptions&lt;/strong&gt; or being forced into…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pwurbs/wuflow" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvdlcsvksqe0bdd2x85hy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvdlcsvksqe0bdd2x85hy.png" alt="wuflow" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Long Story
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Checklist Details
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Self-Hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosting:&lt;/strong&gt; Must be possible and well-documented.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Availability:&lt;/strong&gt; Source code must be public (e.g., on GitHub).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Licensing:&lt;/strong&gt; A permissive Open Source license for unrestricted usage (AGPL is the absolute baseline).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Integrity:&lt;/strong&gt; Any feature restrictions in a “Community Edition” must not violate the core feature requirements below. We are evaluating self-hosted versions, not Cloud SaaS offerings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance:&lt;/strong&gt; Active development, regular official releases (with notes), and a transparent security process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; The tool must be free, at least for individuals or small teams.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lean Agility:&lt;/strong&gt; Focused on core features. No bloated “feature monsters” that are difficult to manage. &lt;em&gt;Keep it simple, stupid!&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UX/UI:&lt;/strong&gt; A clean, modern interface with Drag-and-Drop functionality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kanban:&lt;/strong&gt; Configurable columns to match the team’s flow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backlog Management:&lt;/strong&gt; A dedicated area to prepare and refine issues before they move to the board.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Archiving:&lt;/strong&gt; Ability to move issues to a read-only area for future reference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release Support:&lt;/strong&gt; Management of versions or milestones for tracking specific deliveries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Project:&lt;/strong&gt; Separation of work into different project domains.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Granularity:&lt;/strong&gt; Support for subtasks or checklists, labels, and prioritization per issue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discovery:&lt;/strong&gt; Robust filter and search capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content:&lt;/strong&gt; Rich text descriptions (Markdown preferred), issue comments, and attachments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context:&lt;/strong&gt; Support for issue dependencies and internal links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time Management:&lt;/strong&gt; Deadlines for both issues and subtasks, plus a daily planning/calendar function.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Management:&lt;/strong&gt; Role-based access control (RBAC) and project assignment. Authentication via local user and optionally via OIDC.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration:&lt;/strong&gt; Straightforward in-app configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Architecture&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Modern Stack:&lt;/strong&gt; Lightweight software with minimal legacy burden.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pragmatic Frameworks:&lt;/strong&gt; Avoidance of unnecessary “framework bloat.” We only want dependencies that provide real value, thereby maximizing independence and reducing maintenance overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supply Chain Security:&lt;/strong&gt; Minimizing the dependency surface to reduce security risks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Deployment&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Configuration as Code:&lt;/strong&gt; Simple, flexible system bootstrap configuration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Containerization:&lt;/strong&gt; Deployable via a publicly available, well-maintained container image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy Evaluation:&lt;/strong&gt; The ability to test the tool without complex external dependencies (e.g., internal SQLite support for dev/testing).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed:&lt;/strong&gt; The tool must start and stop quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Native:&lt;/strong&gt; Kubernetes-ready with health check endpoints, Prometheus metrics, and Helm charts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistence:&lt;/strong&gt; Support for external databases (PostgreSQL preferred) and S3 storage for file uploads.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Security / Privacy&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Identity:&lt;/strong&gt; Secure authentication, session, and token management. Transfer in cookies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cookie Security:&lt;/strong&gt; Tokens and session IDs must use secure attributes (httpOnly, Secure, SameSite, MaxAge).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardened Headers:&lt;/strong&gt; Essential HTTP security headers must be set (especially a strong Content Security Policy) to protect the client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-Containment:&lt;/strong&gt; No external libraries or dependencies should be loaded at runtime; all code must be packaged into the binary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimal Supply Chain Surface:&lt;/strong&gt; Only essential, actively maintained dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-First:&lt;/strong&gt; Zero tracking, zero telemetry, and no “calling home.”&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My Assessment Methodology
&lt;/h2&gt;

&lt;p&gt;In my experience, it doesn’t make sense to assign weights to these criteria and calculate a numeric score. Often, a metric will tell you a tool is “mathematically” 90% perfect, yet it still &lt;em&gt;feels&lt;/em&gt; wrong or clunky in daily use. I prefer to view the tool as a holistic entity.&lt;/p&gt;

&lt;p&gt;To save you from reading massive, unmanageable comparison tables, I have applied a &lt;strong&gt;“Fail-Fast” audit approach&lt;/strong&gt;. I assess each tool category by category, starting with its Open Source status. &lt;strong&gt;The moment I encounter a “hard violation” of a core criterion, I stop the assessment.&lt;/strong&gt; Because of this, e.g. you won’t find a deployment analysis for every tool — if it failed on licensing or core features.&lt;/p&gt;

&lt;p&gt;To keep this guide concise, I will focus on the relevant negative findings; I will only highlight positive points if they are truly exceptional.&lt;/p&gt;

&lt;p&gt;Let’s dive in…&lt;/p&gt;

&lt;h3&gt;
  
  
  Legend
&lt;/h3&gt;

&lt;p&gt;❌ No recommendation or KO criteria reached.&lt;/p&gt;

&lt;p&gt;⚠️ Some issues to be considered but no hard stop.&lt;/p&gt;

&lt;p&gt;✅ Requirements met or (limited) recommendation.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Tool List&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65#e8b1" rel="noopener noreferrer"&gt;Asana, Blossom, Backlog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65#1f8b" rel="noopener noreferrer"&gt;Open Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65#8703" rel="noopener noreferrer"&gt;Plane&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65#fedf" rel="noopener noreferrer"&gt;Kanboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65#24bc" rel="noopener noreferrer"&gt;WeKan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65#4573" rel="noopener noreferrer"&gt;Kanba&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65#0212" rel="noopener noreferrer"&gt;kan.bn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65#c1e4" rel="noopener noreferrer"&gt;Kaneo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65#c6ee" rel="noopener noreferrer"&gt;Vikunja&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65#7be7" rel="noopener noreferrer"&gt;Planka&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Asana, Blossom, Backlog
&lt;/h2&gt;

&lt;p&gt;I mention these tools only because they frequently appear at the top of “Best Jira Alternatives” search results. However, for a team seeking IT sovereignty, they are non-starters.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Self-hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Proprietary / Closed Source:&lt;/strong&gt; No access to the underlying code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud-Only / Account-Locked:&lt;/strong&gt; Requires third-party registration and hosting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restrictive Pricing:&lt;/strong&gt; Free tiers are often limited to 1–2 users; professional use requires expensive monthly subscriptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;No Recommendation.&lt;/strong&gt; These tools are simply a move from one “Black Box” (Atlassian) to another. They offer no path toward true independence or code-level control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Project
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://www.openproject.org/" rel="noopener noreferrer"&gt;https://www.openproject.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt;: &lt;a href="https://github.com/opf/openproject" rel="noopener noreferrer"&gt;https://github.com/opf/openproject&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Self-hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-Core Model:&lt;/strong&gt; While the base is GPL licensed, the “Enterprise Add-ons” are contained in the same repository but require a paid license key to unlock.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Paywalled Essentials:&lt;/strong&gt; Paradoxically, for a tool often marketed for Agile, the Agile Boards (Kanban and Team-Boards) are missing from the Community Edition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Community SSO:&lt;/strong&gt; Essential security features like OpenID Connect (OIDC) or SAML are also restricted to paid versions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complexity Overload:&lt;/strong&gt; It attempts to be an all-in-one suite (Gantt charts, time tracking, cost modeling), leading to a cluttered and overcomplicated UI that violates the “Keep it Simple” principle.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Architecture / Security&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A high volume of critical security patches suggests systemic flaws in the process or architecture, demanding a relentless cycle of constant patching.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;No Recommendation.&lt;/strong&gt; OpenProject is a legacy “feature monster.” It is bloated, difficult to manage, and hides the most crucial agile features behind a paywall. It fails the “IT Sovereignty” test because your team’s agency is still restricted by a vendor’s license key.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Plane&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://plane.so/" rel="noopener noreferrer"&gt;https://plane.so/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt;: &lt;a href="https://github.com/makeplane/plane" rel="noopener noreferrer"&gt;https://github.com/makeplane/plane&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Self-Hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-Core Model:&lt;/strong&gt; Uses the AGPL license, but the repository primarily contains only the free/community features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paywall Strategy:&lt;/strong&gt; Essential features for scaling are intentionally kept out of the open-source version.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The “Power” Trap:&lt;/strong&gt; While extremely powerful and feature-rich, it suffers from the same bloat we are trying to escape. It feels like it’s trying to do everything for everyone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restricted Essentials:&lt;/strong&gt; Crucial features for professional agile teams are missing from the Free Edition:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Cap:&lt;/strong&gt; Limited to only 12 users in the free version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Release Management:&lt;/strong&gt; Milestones and Cycles (their version of Sprints/Releases) are severely restricted or locked behind tiers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No OIDC:&lt;/strong&gt; Single Sign-On (SSO) is a paid enterprise feature.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Architecture&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Technical Debt &amp;amp; Complexity:&lt;/strong&gt; The software has grown massive over the years. It is a large codebase with a high number of dependencies, making it a heavy lift to maintain and secure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;No Recommendation.&lt;/strong&gt; Plane is too big, too complex, and too restricted. Like OpenProject, the most valuable agile functions are only available in paid, closed-source editions. It is essentially “Jira in a prettier dress,” carrying over the same issues of feature bloat and vendor dependency. For a team seeking a lean, truly sovereign tool, Plane is simply “too much.”&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Kanboard&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://kanboard.org/" rel="noopener noreferrer"&gt;https://kanboard.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/blog/newsletter?source=promotion_paragraph---post_body_banner_beneficial_intelligence_nl--14556d709c65---------------------------------------" rel="noopener noreferrer"&gt;https://medium.com/blog/newsletter?source=promotion_paragraph---post_body_banner_beneficial_intelligence_nl--14556d709c65---------------------------------------&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt;: &lt;a href="https://github.com/kanboard/kanboard" rel="noopener noreferrer"&gt;https://github.com/kanboard/kanboard&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Self-Hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pure Open Source:&lt;/strong&gt; 100% open source without “Community Edition” limitations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MIT License:&lt;/strong&gt; Very permissive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance Warning:&lt;/strong&gt; The Github repository is officially marked as being in Maintenance Mode.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fragmented Functionality:&lt;/strong&gt; Most advanced features require third-party plugins. However, there is no official approval process or code review for these plugins, creating a massive security and stability risk.&lt;/li&gt;
&lt;li&gt;Missing Core Agile Features:&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Backlog Management:&lt;/strong&gt; It only offers a single board column, lacking a true staging area for refinement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Archiving:&lt;/strong&gt; Issues can only be “closed,” losing visibility and context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Release Management:&lt;/strong&gt; Standard agile hierarchy and delivery tracking are absent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OIDC&lt;/strong&gt; only via plugin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UX&lt;/strong&gt;: The interface feels like a relic from the early 2000s — it looks pretty old-fashioned.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;No Recommendation.&lt;/strong&gt; While it fulfills many checklist items regarding licensing, open source, and simplicity, it lacks required modern polish and active development. Relying on unvetted plugins to achieve basic functionality (like OIDC) contradicts the “Security-First” approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;WeKan&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://wekan.fi/" rel="noopener noreferrer"&gt;https://wekan.fi/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://github.com/wekan/wekan" rel="noopener noreferrer"&gt;https://github.com/wekan/wekan&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Self-Hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;100% Open Source:&lt;/strong&gt; No “Premium” tiers or gated features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MIT License:&lt;/strong&gt; Very permissive.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dated Interface&lt;/strong&gt;: The UI feels cluttered and stuck in the past. It lacks the “snappiness” and clean aesthetics of modern web applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Architecture / Deployment&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB&lt;/strong&gt;: WeKan relies on MongoDB. While technically functional, this is an “unusual” choice for a modern, lean tool. Furthermore, MongoDB’s SSPL license can create complex legal hurdles for certain production environments and enterprise compliance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;No recommendation.&lt;/strong&gt; Even though WeKan is widely used and respects the user’s freedom, it fails the “Feel Good” test. In a world of modern, high-performance web apps, its UI is a significant barrier to adoption. Additionally, the dependency on MongoDB adds unnecessary architectural and licensing weight.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Kanba&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://www.kanba.co/" rel="noopener noreferrer"&gt;https://www.kanba.co&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;strong&gt;&lt;a href="https://github.com/Kanba-co/kanba" rel="noopener noreferrer"&gt;https://github.com/Kanba-co/kanba&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Self-Hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open Source Status:&lt;/strong&gt; 100% open source under the MIT license.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance Concerns:&lt;/strong&gt; The last release on GitHub was in August 2025. Is it maintained anymore?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vague Capabilities:&lt;/strong&gt; The documentation is remarkably thin. Both the website and GitHub offer only generic buzzwords like “Kanban boards” and “Team collaboration,” without detailing the actual depth of the features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High Barrier to Entry:&lt;/strong&gt; It is currently impossible to easily “test-drive” the self-hosted option without a significant manual setup effort.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Deployment&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Poor Developer Experience:&lt;/strong&gt; Documentation for self-hosting is lacking. Most notably, there is no public container image available, forcing users to build from source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Security&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vulnerable Core:&lt;/strong&gt; A quick audit reveals outdated dependencies containing Critical and High-severity security vulnerabilities (e.g. next, flatted, glob, and lodash).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;No Recommendation.&lt;/strong&gt; I fail to see the logic in offering a self-hosted version without providing a ready-to-use container image. The combination of stagnant development, critical security vulnerabilities, poor documentation, and the lack of an easy evaluation path makes Kanba a risky choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;kan.bn&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://kan.bn/" rel="noopener noreferrer"&gt;https://kan.bn/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt;: &lt;a href="https://github.com/kanbn/kan" rel="noopener noreferrer"&gt;https://github.com/kanbn/kan&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Self-Hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;100% Open Source:&lt;/strong&gt; No feature limitations or “paywalled” tiers for the self-hosted version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: AGPL.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The UI is sleek, responsive, and covering many items from the checklist. However, there are significant gaps for professional Agile teams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Missing Core Logic:&lt;/strong&gt; No native release management (versions) and no archive management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disconnected Backlog:&lt;/strong&gt; While you can create a dedicated backlog board, it isn’t integrated with the active working boards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing Productivity Tools:&lt;/strong&gt; No full-text search, no issue dependencies/links, and no daily planning functionality.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Architecture / Deployment&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;While the project is “fresh” and free of legacy code, its modern stack comes with a &lt;strong&gt;dependency bloat.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The choice of dependencies is questionable for a lean tool. It uses a heavy stack (Next.js, tRPC, Drizzle, Stripe SDK, Novu, i18n). In my opinion, some of these are unnecessary for a self-hosted engine and increase the maintenance burden and attack surface.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Deployment&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Self-hosting via container images is well-documented, but there are some issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Database Rigidness:&lt;/strong&gt; The app requires an external Postgres container. I was unable to get it running with the internal PGlite database for easy testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unusual Setup:&lt;/strong&gt; It uses a migration script to initialize the database on the first run, which is non-standard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing Orchestration:&lt;/strong&gt; No Helm chart is available for Kubernetes deployments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release Status:&lt;/strong&gt; GitHub only lists “prereleases,” which may decrease trust for teams requiring a stable production environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Security / Privacy&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The supply chain surface&lt;/strong&gt; is a concern here. There are too many direct and transitive dependencies. This amongst others results in:&lt;/li&gt;
&lt;li&gt;Trivy found 1 critical and 12 high-severity issues in the container image&lt;/li&gt;
&lt;li&gt;Some used packages or not maintained anymore (react-beautiful-dnd, tiptap-markdown) or didn’t get any updates during the last 2 years.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing security headers&lt;/strong&gt;: No X-Frame-Options, X-Content-Type-Options, Strict-Transport-Security, or Content-Security-Policy headers are configured.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✅❓ &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Limited Recommendation.&lt;/strong&gt; This is a potential project with a nice UI. If your team is moving from Trello, this is a recommended “Sovereign” choice. However, if you are moving from Jira, the missing release/backlog features and the security “noise” from the dependency bloat are hard to ignore. It’s a great board, but not yet a complete “Agile engine.”&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Kaneo&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://kaneo.app/" rel="noopener noreferrer"&gt;https://kaneo.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt;: &lt;a href="https://github.com/usekaneo/kaneo" rel="noopener noreferrer"&gt;https://github.com/usekaneo/kaneo&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Self-Hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;True Open Source:&lt;/strong&gt; MIT License with a clear “free forever” commitment.&lt;/li&gt;
&lt;li&gt;Permissive MIT license.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Kaneo covers significantly more ground than kan.bn and feels more like a professional platform. However, the “Agile” depth is still shallow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Good:&lt;/strong&gt; Strong integration ecosystem (GitHub, Gitea, Slack), S3 support for attachments, and a surprisingly functional &lt;strong&gt;Gantt view&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agile Hierarchy:&lt;/strong&gt; It includes a backlog and archive management, though the archive lacks a “Read-Only” mode to prevent accidental edits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Gaps:&lt;/strong&gt; It lacks &lt;strong&gt;daily planning&lt;/strong&gt;, &lt;strong&gt;subtasks,&lt;/strong&gt; and &lt;strong&gt;release management&lt;/strong&gt;(versions).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; A major drawback for many teams is that &lt;strong&gt;Kanban columns are not yet configurable&lt;/strong&gt; — you are stuck with the predefined workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI/UX:&lt;/strong&gt; The interface is clean but follows a very “dark/gloomy” aesthetic that may not appeal to everyone.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ Architecture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Modern Stack:&lt;/strong&gt; Built on a clean, modern foundation (Next.js, Postgres).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Too many overlapping frontend dependencies:&lt;/strong&gt; For example, the project bundles multiple markdown renderers and a rich-text editor, which feels redundant and increases the bundle size.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Deployment&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Self-hosting via Container image well supported and documented.&lt;/li&gt;
&lt;li&gt;Fast startup.&lt;/li&gt;
&lt;li&gt;Helm chart available.&lt;/li&gt;
&lt;li&gt;App only runs with external Postgres container.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Security / Privacy&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Supply Chain:&lt;/strong&gt; With over 80 production dependencies, the attack surface is wide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance Debt:&lt;/strong&gt; Several “utility” libraries (like tippy.js) have fallen behind or are no longer actively maintained.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing security headers:&lt;/strong&gt; No X-Frame-Options, X-Content-Type-Options, Strict-Transport-Security, or Content-Security-Policy headers are configured.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✅❓ &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Limited Recommendation.&lt;/strong&gt; Kaneo is a strong evolution of the minimalist board concept. While similar, it provides a more complete feature set than kan.bn — specifically its &lt;strong&gt;backlog, archive management, and Gantt view&lt;/strong&gt; — making it a viable candidate for general project management. However, for professional Agile teams, the &lt;strong&gt;lack of subtasks, release management, and configurable columns&lt;/strong&gt; could be significant hurdles. If you can embrace the gloomy UI and are prepared to manage the security/dependency risks yourself, Kaneo is a recommended tool, especially given its credible “free forever” open-source promise.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Vikunja&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://vikunja.io/" rel="noopener noreferrer"&gt;https://vikunja.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt;: &lt;a href="https://github.com/go-vikunja/vikunja" rel="noopener noreferrer"&gt;https://github.com/go-vikunja/vikunja&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ &lt;strong&gt;Self-Hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;True Open Source:&lt;/strong&gt; AGPL license with a firm commitment: “Vikunja is and always will be Open-Source and freely available”.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Paywalls:&lt;/strong&gt; 100% open source without feature limitations for the self-hosted version.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Vikunja covers a large portion of our checklist and offers diverse working modes, but it is more “To-Do” oriented rather than purely Agile.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rich Views:&lt;/strong&gt; Provides List, Gantt, Table, and Kanban views out of the box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time Management:&lt;/strong&gt; The “Upcoming” section offers better time visibility than its peers, though it only lists deadlines/start dates and lacks true day-to-day planning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing Agile Core:&lt;/strong&gt; No backlog management, no task archiving, no releases (versions), and no activity log.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Admin Limitations:&lt;/strong&gt; Lacks a global admin dashboard to centrally manage all users, roles, and cross-project assignments (relies heavily on Team-level management).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UX Inconsistencies:&lt;/strong&gt; While the main board UI is clean, the interface for editing individual tasks or projects feels clunky and poorly designed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Architecture / Deployment&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Modern Stack:&lt;/strong&gt; A fresh, well-designed application without historical legacy bloat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operations:&lt;/strong&gt; Self-hosting via Container image well supported and documented, fast startup, and very easy to deploy for testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability:&lt;/strong&gt; Native Prometheus metrics included out of the box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimization:&lt;/strong&gt; Some frontend dependencies could still be pruned to reduce supply chain risks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Security / Privacy&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hardening:&lt;/strong&gt; Missing essential security headers (No Content-Security-Policy, X-Frame-Options, or X-Content-Type-Options headers are set).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token Storage:&lt;/strong&gt; JWT access tokens are stored in localStorage, exposing them to potential XSS attacks (though the refresh token correctly uses HttpOnly cookies).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Patching Fatigue:&lt;/strong&gt; A high frequency of security fixes is a double-edged sword. While it shows active maintenance, it can also be a symptom of architectural weaknesses or a flawed testing process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active Threats:&lt;/strong&gt; At the time of writing, there is a critical security advisory that has been open on GitHub for over two weeks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✅❓ &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Limited Recommendation.&lt;/strong&gt; Vikunja is comparable to kan.bn and Kaneo but feels significantly more mature regarding deployment, operational options (like Prometheus metrics), and integrations. Unfortunately, it suffers from the exact same missing Agile features: no archiving, no backlog management, and no releases. Furthermore, the UI takes some getting used to. Because of the frequent security patches and active advisories, adopting Vikunja requires a highly disciplined, well-organized update management process. If you can handle the operational overhead and don’t strictly need Jira’s release hierarchy, it is a highly capable and recommendable tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Planka&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: &lt;a href="https://planka.app/" rel="noopener noreferrer"&gt;https://planka.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github&lt;/strong&gt;: &lt;a href="https://github.com/plankanban/planka" rel="noopener noreferrer"&gt;https://github.com/plankanban/planka&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Self-Hosting / Open Source / License / Costs&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The “Open Source” Trap:&lt;/strong&gt; Planka does &lt;strong&gt;not&lt;/strong&gt; use an OSI-approved open-source license. It uses a custom “Community License” with significant restrictions on commercial and business use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Business Use:&lt;/strong&gt; While free for internal use within your own organization, any use beyond that requires a paid Pro edition or Cloud subscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature Gating:&lt;/strong&gt; Several features (like the Calendar view and the “Card Inbox”) are locked behind the Pro version.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Visualization:&lt;/strong&gt; UI is fine, but the visualization of the cards in the row („list“) of the Kanban board takes some getting used to. Colors are not configurable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No backlog management&lt;/strong&gt; like in Jira, only the “First Column” method, which is not sufficient.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No release management&lt;/strong&gt; to track versions or milestones.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚠️ &lt;strong&gt;Architecture&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;While a mature open-source project, it shows clear signs of accumulated technical debt. There is some weakness in security and dependency usage. E.g. the project relies on Sails.js — a framework that is increasingly considered a legacy burden in 2026.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ Deployment
&lt;/h3&gt;

&lt;p&gt;Deployment via Docker is seamless, documentation is excellent, and it offers a well-maintained Helm chart for Kubernetes. Startup is remarkably fast.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚠️ Security / Privacy
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hardcoded Secrets:&lt;/strong&gt; The application uses hardcoded default secret keys and, alarmingly, does not check or force a change at startup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No HTTP security headers:&lt;/strong&gt; No X-Frame-Options, X-Content-Type-Options, Strict-Transport-Security, Content-Security-Policy, or Referrer-Policy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Risk:&lt;/strong&gt; There is a high XSS risk due to the usage of dangerouslySetInnerHTML, compounded by the total lack of Content Security Policy (CSP) and other security headers (HSTS, X-Frame-Options).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Jungle:&lt;/strong&gt; The project suffers from extreme “micro-package” bloat, partly unmaintained or deprecated. Also, it loads 20+ different highlightjs-* packages, each from a different maintainer, significantly increasing the supply chain attack surface.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✅❓ &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Limited Recommendation.&lt;/strong&gt; Planka feels “Enterprise-ready” in its documentation and deployment, but the custom license and technical debt tell a different story. If you need a simple, visual workflow and value the support of a German-based company (a plus for GDPR and maintenance), Planka is a solid choice. However, if you are seeking a truly sovereign, modern, and secure Jira replacement with deep Agile logic, Planka’s “Sails.js” foundation and restrictive license make it a difficult long-term bet.&lt;/p&gt;

</description>
      <category>jira</category>
      <category>opensource</category>
      <category>kanban</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Bridging the Gap: Integrating DevOps and ITIL</title>
      <dc:creator>Peter Wurbs</dc:creator>
      <pubDate>Mon, 13 Apr 2026 10:59:03 +0000</pubDate>
      <link>https://dev.to/pwurbs/bridging-the-gap-integrating-devops-and-itil-4hb0</link>
      <guid>https://dev.to/pwurbs/bridging-the-gap-integrating-devops-and-itil-4hb0</guid>
      <description>&lt;h3&gt;
  
  
  The Challenge of Combining DevOps and ITIL
&lt;/h3&gt;

&lt;p&gt;DevOps provides methods and tools to improve the agility, speed, and quality of software development. However, it lacks widely accepted guidelines for integrating these principles with IT Service Management (ITSM) operations. &lt;/p&gt;

&lt;p&gt;But even in a fully implemented DevOps culture, we need service processes when we want to bring our product to customers and are obliged to provide service levels. We have to provide a support interface, implement alerting, fix issues, etc.&lt;/p&gt;

&lt;p&gt;This article outlines a rough idea of how to bring these two worlds together. The ideas are based on ITIL, the leading framework for providing best practices to implement ITSM. Here we focus on ITIL v2/v3 and only take the main processes into account. &lt;/p&gt;

&lt;p&gt;Unlike ITIL, DevOps has no such standardized framework. I assume you know what DevOps actually means. But to make sure we're all on the same page, here's my understanding in a nutshell:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DevOps is a cultural shift and collaborative approach that breaks down the traditional barriers to integrate everyone—including business stakeholders, security, operations, and quality assurance—into a single, organization-wide feedback loop. Instead of working in isolated silos, these groups join forces throughout the entire project, sharing responsibilities and communicating openly. This unified mindset allows organizations to respond to customer needs faster, solve problems more efficiently, and deliver continuous value.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  TL;DR
&lt;/h3&gt;

&lt;p&gt;For those who lack the time to read the entire content, here’s a concise summary of the approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The application of IT Service Management (e.g., ITIL) remains essential, even when DevOps practices are fully implemented. &lt;/li&gt;
&lt;li&gt;At the very least, Incident, Problem and Event Management processes are required.&lt;/li&gt;
&lt;li&gt;It is rarely feasible to implement all IT Service Management processes within the cross-functional DevOps team itself. Therefore, compromises must be made to delegate some tasks.&lt;/li&gt;
&lt;li&gt;Practicing DevOps significantly impacts several classic ITIL processes, especially Change and Release  Management. &lt;/li&gt;
&lt;li&gt;Informal, manually maintained, and often outdated Configuration Management (CMDB) systems are replaced by current and accurate data obtained from various sources such as Issue tracking, Git, CI/CD, Cloud and software APIs, metrics, and logs.&lt;/li&gt;
&lt;li&gt;Also see the diagram at the end of this article for a good summary.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The long Story
&lt;/h3&gt;

&lt;p&gt;In the following, we go through the main ITIL processes and draw a rough idea of how these could be integrated into a DevOps way of work, respectively, how these are affected by practicing DevOps. &lt;/p&gt;

&lt;p&gt;The well-known "&lt;strong&gt;You build it - You run it!&lt;/strong&gt;" is the most relevant guideline. With every decision, you should consider how far you’re straying from this mantra.&lt;/p&gt;

&lt;h3&gt;
  
  
  Incident Management
&lt;/h3&gt;

&lt;p&gt;It's the primary goal of Incident Management to restore IT services to users as fast as possible. This is the most challenging process to be integrated into a DevOps culture. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1st Level Support (Service Desk):&lt;/strong&gt; Can be outsourced to specialized external organizations. Very often, these organizations provide standardized services (within a company) for many teams and products in a shared manner to reduce costs. The DevOps team provides troubleshooting guidelines and FAQs, while the external desk provides feedback on common incidents towards the DevOps team to improve the service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2nd Level Support:&lt;/strong&gt; Handles technical issues that do not require software developers. It can remain within the DevOps team to prevent silos, though offering 24x7 coverage is challenging. Alternatively, it can be outsourced for 24x7 support if tight collaboration is maintained, including shared tools, shared documentation, and deep technical education provided by the DevOps team. Often, this support level is also responsible for the deployment of the software into production. Here, it's especially crucial to achieve a tight collaboration, trust, and transparency to prevent further silos and borders. It's good practice to hold regular shared sessions to exchange information, knowledge, findings, and experiences. And it's a very good idea that some deputies of the 2nd level support take part in the daily stand-ups and the other regular meetings of the DevOps team. In this area, the risk of creating new silos is especially high.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3rd Level Support:&lt;/strong&gt; It's crucial that this task remains within the DevOps team, because 3rd level issues are mostly related to software bugs and their troubleshooting, and their resolution must not be segregated from the software development. This responsibility also applies to 3rd level issues concerning the CI/CD pipeline and the deployment target environment. According to "You build it - you run it!" the team is also responsible for these topics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some general guidelines and tips:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All parties should use identical tools or at least automated data synchronization to prevent information loss. Incident tickets must be integrated into the DevOps team's daily agile planning (e.g., Kanban boards) and Sprint backlogs, utilizing reserved team capacity.&lt;/li&gt;
&lt;li&gt;Engineers working on 2nd and 3rd level issues must be able to directly communicate with users and customers. Otherwise there is a loss of information and speed, which of course leads to bad support quality and unsatisfied users.&lt;/li&gt;
&lt;li&gt;The DevOps team must reserve some velocity/resources for incident issues along with the sprint planning. A budget for this could be set initially, observed, and then adapted. If the budget is not fully used, then the team can use the remaining time to improve some ops-related topics like observability, stability, etc.&lt;/li&gt;
&lt;li&gt;In the case where the production target environment (where the software runs) is operated by an external party, the DevOps team must get transparent and fast access to all configuration data, logs, metrics, and other relevant data. This is mandatory for the feedback loop and quick support in case of issues. See also below “Operating Target Environments”.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Event Management
&lt;/h3&gt;

&lt;p&gt;Event Management ensures services are monitored and events are categorized for action. Nowadays, the old term "Monitoring" is usually replaced by the modern term "Observability" to reflect the versatile perspectives of modern software architectures (microservices, containers, cloud, etc.).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data from observability tools are possible triggers for Incident, Problem, or Capacity Management and must be shared amongst all affected parties to avoid silos and borders.&lt;/li&gt;
&lt;li&gt;As for Incident Management, the DevOps team needs direct access to all the data to support fixing or preventing issues as quickly as possible. Ideally, the DevOps team owns the concept and implementation for observability tools.&lt;/li&gt;
&lt;li&gt;The old assumption that "monitoring" is "ops-stuff" is no longer valid. When we take "shift-left" seriously, then the DevOps team must integrate observability capabilities directly into the software architecture. The generated data provide vital business and runtime metrics and are not purely operational tasks. So, it's a good practice in the team to plan these aspects as early as possible in the software development lifecycle as part of the Non-Functional-Requirements (NFR).&lt;/li&gt;
&lt;li&gt;Like for Incident Management, it's challenging for a DevOps team to watch the monitors 24x7. Also, for this, the team might delegate this to an external organization (e.g. together with the 2nd level support). But also here, the obligations for both parties apply.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Problem Management
&lt;/h3&gt;

&lt;p&gt;Problem Management aims to prevent incidents and minimize their impact. The process is mostly triggered when a customer requests a RFO report (Reason for Outage) or (the proactive way), when the repeated occurrence of the same incidents must be investigated in order to prevent them in the future. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Because complex analysis is required, the execution of these tasks mostly falls to the 3rd Level Support within the DevOps team.&lt;/li&gt;
&lt;li&gt;The above-mentioned guidelines regarding time budget, ticket management, and tools apply here too.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Capacity Management
&lt;/h3&gt;

&lt;p&gt;This is the balancing act of ensuring that IT resources are exactly the right size—not too small (causing slow performance or crashes) and not too large (wasting money). We achieve good capacity management by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an appropriate upfront resource planning&lt;/li&gt;
&lt;li&gt;a suited configuration of the different items like servers, containers, applications, etc.&lt;/li&gt;
&lt;li&gt;good observability (see Event Management)&lt;/li&gt;
&lt;li&gt;a modern software architecture supporting horizontal scalability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a result, this process should be owned by the DevOps team too. It has been one of the biggest failures in the past to delegate capacity planning to an operations team. This resulted in endless ping-pong between developers and ops. &lt;/p&gt;

&lt;p&gt;Yes, if watching the monitors is delegated to e.g. the 2nd level support or any other "monitoring" team, then this team will see alerts and can act accordingly. But the DevOps team must own the concept, the thresholds, the resource configuration, and the instructions on how to act. &lt;/p&gt;

&lt;h3&gt;
  
  
  Configuration Management
&lt;/h3&gt;

&lt;p&gt;Configuration Management in ITIL is intended to document information about Infrastructure and Services required for ITSM. So-called Configuration Items (CI) are available in a CMDB (Configuration Management Database) to support different ITSM processes. &lt;/p&gt;

&lt;p&gt;We all know that it was never possible and has never worked to keep the CMDB up-to-date. Either there was not sufficient discipline, the tools were not appropriate, or the data changed too often. I can't remember any case that a CMDB was helpful. Data have been incomplete, outdated, stale, or not consistent. This becomes much more problematic when we move to the cloud, spin up 100 containers every day using ever-changing IP addresses, don't know exactly on which server or container which part of our (microservice-based) software runs, etc. &lt;/p&gt;

&lt;p&gt;So, this process is the most affected and maybe even made obsolete by the modern (DevOps) world:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DevOps replaces manually maintained CMDBs with an "everything-as-code" approach. Target configuration states are stored in Git and directly used in our tool pipeline to build, test, and deploy. &lt;/li&gt;
&lt;li&gt;This is combined with the retrieval of the current state of configuration directly from the involved systems and software using APIs, dashboards, logs, metrics, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Request Fulfillment
&lt;/h3&gt;

&lt;p&gt;This process manages minor, standardized changes (service requests) or requests for information from users.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Self-service for users should be provided as much as possible. This saves time, money, and makes users happy. &lt;/li&gt;
&lt;li&gt;The 1st or 2nd Level Support should handle simple, standard requests using guidelines provided by the DevOps team.&lt;/li&gt;
&lt;li&gt;Complex or non-standard requests must be delegated to the DevOps team.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Change Management
&lt;/h3&gt;

&lt;p&gt;Like Config Management, this is another ITIL process becoming mostly obsolete when we truly practice DevOps. ITIL defines this process as a kind of gatekeeper of the IT environment. Its primary mission is to maximize the number of successful IT changes by ensuring that risks are properly assessed and authorized before they happen. Unfortunately, this ended up in the past by adding more and more formal processes, checkpoints, gateways, paperwork, etc. This all mostly decreased the speed of delivering new features to the users and imposed silos and barriers mostly between developers and operations. When a company is really ready to introduce a DevOps culture, many of the formal rules vanish.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All changes, including new features, infrastructure, or config changes, are treated as code changes (everything-as-code), passing through the agile development in the team and CI/CD pipelines with automated tests.&lt;/li&gt;
&lt;li&gt;However, some truly important formal procedural steps should be retained. This is especially the case if the deployment has an impact on the users' perception or some risks must be mitigated. A pragmatic view on these process steps is required.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Release Management
&lt;/h3&gt;

&lt;p&gt;Release Management ensures that new or modified IT services are planned, developed, and successfully deployed to the production environment. When we practice DevOps, this integrated view of release and deployment is decoupled.:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A deployment is the technical process to provide software into one of the target environments (dev, test, qa, prod...). Deployments should happen continuously in small pieces, ideally in the background (e.g., via dark launching) without user disruption. Only by this, the DevOps team gets valuable feedback from users quickly. &lt;/li&gt;
&lt;li&gt;A "release" is the logical provisioning of software, new features, etc., to users. The technical deployment has ideally already been done, see before. During release, only small activation tasks might be done, like config changes or ingress adaptions. Release Management is thus reduced to bundling feature sets while organizing a product roadmap and external communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What does this mean for the DevOps team?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The DevOps team should be responsible for the deployment concept, the preparation of the toolchain to execute deployments, and provide sufficient information if the actual deployments are done by an external organization.&lt;/li&gt;
&lt;li&gt;It's clear that the Product Owner is responsible for the actual Release process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Operating Target Environments
&lt;/h3&gt;

&lt;p&gt;Finally, we must ask, which party should "operate" the target environments, where the software actually runs. We only touched it briefly in Incident Management. The classic answer has been in the "old" world: There is an operations department taking care of these environments. As a result, again, we have silos and borders. By the way, these borders have been the reason why DevOps was invented more than 10 years ago. So, let's invest some final minutes to ask how it could work in a DevOps world.&lt;/p&gt;

&lt;p&gt;Again, ideally, the DevOps team has the resources and knowledge to deal with the target envs too. Then, the team can optimally combine software, infrastructure, deployments, and operations without any borders, gaps, or quarrels.&lt;/p&gt;

&lt;p&gt;But in most cases (e.g. due to company restrictions), the target envs are operated by an external team. This is fine, but then...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the DevOps team keeps responsible for the infrastructure, deployment, and observability concept.&lt;/li&gt;
&lt;li&gt;the DevOps team provides all required documentation, instructions to enable the external "ops" team.&lt;/li&gt;
&lt;li&gt;the DevOps team must get transparent and fast access to all configuration data, logs, metrics, and other relevant data. This is mandatory for the feedback loop and quick support in case of issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's also a good approach to distinguish between dev and prod environments. Even if the operation of the prod target is externally delegated, the non-prod targets, especially dev environments, should still be maintained by the DevOps team itself. Even a shared operation is possible. See the picture below for more details. &lt;/p&gt;

&lt;h3&gt;
  
  
  Summary Diagram
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07bsy7e9xbg1phv4gqmv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07bsy7e9xbg1phv4gqmv.png" alt="Summary Diagram" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Note
&lt;/h3&gt;

&lt;p&gt;As an alternative framework, Google's Site Reliability Engineering (SRE) is often cited as a highly effective best practice for bridging the gap between DevOps and ITIL/Operations.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>itil</category>
      <category>itsm</category>
      <category>operations</category>
    </item>
    <item>
      <title>Links to my Articles and Repos</title>
      <dc:creator>Peter Wurbs</dc:creator>
      <pubDate>Mon, 13 Apr 2026 10:49:56 +0000</pubDate>
      <link>https://dev.to/pwurbs/links-to-my-articles-2d72</link>
      <guid>https://dev.to/pwurbs/links-to-my-articles-2d72</guid>
      <description>&lt;h2&gt;
  
  
  Articles
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@pwurbs/how-to-integrate-sonarqube-sonarcloud-7946308c0e33" rel="noopener noreferrer"&gt;How to integrate SonarQube (SonarCloud) for free without loosing Control over my Code&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@pwurbs/bridging-the-gap-integrating-devops-and-itil-f4bb6c7963a1" rel="noopener noreferrer"&gt;Bridging the Gap: Integrating DevOps and ITIL&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@pwurbs/beyond-jira-reclaiming-agile-sovereignty-with-open-source-14556d709c65" rel="noopener noreferrer"&gt;Beyond Jira: Reclaiming Agile Sovereignty with Open Source&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Repos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/pwurbs/wuflow" rel="noopener noreferrer"&gt;wuFlow&lt;/a&gt; is a simple, modern, and lightweight issue tracking and planning application.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/pwurbs/max2mqtt" rel="noopener noreferrer"&gt;max2mqtt&lt;/a&gt; is a MAX! to MQTT Bridge Home Assistant Add-on.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>How to integrate SonarQube (SonarCloud) for free without loosing Control over my Code</title>
      <dc:creator>Peter Wurbs</dc:creator>
      <pubDate>Tue, 27 Jan 2026 10:08:16 +0000</pubDate>
      <link>https://dev.to/pwurbs/how-to-integrate-sonarqube-sonarcloud-for-free-without-loosing-control-over-my-code-29om</link>
      <guid>https://dev.to/pwurbs/how-to-integrate-sonarqube-sonarcloud-for-free-without-loosing-control-over-my-code-29om</guid>
      <description>&lt;h1&gt;
  
  
  How to integrate SonarQube (SonarCloud) for free without loosing Control over my Code
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Intro
&lt;/h3&gt;

&lt;p&gt;There are already some posts that explain how to use SonarQube and SonarCloud, along with their related scanners, in general. However, these posts either don’t cover the integration aspects, are quite old, or don’t address my specific questions. So, I’ve decided to embark on my own journey and share my insights here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Goal
&lt;/h3&gt;

&lt;p&gt;I’m privately developing some applications and, at some point, I wanted to use Static Source Code Analysis to check my code. Since I work in this field, I was already familiar with SonarQube and was quite satisfied with its results. However, I don’t currently have a proper license, and I’m not comfortable sharing too much control over my data or code. Therefore, my goals and restrictions are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scan Go, JS, CSS, HTML&lt;/li&gt;
&lt;li&gt;Integrate in Visual Studio Code&lt;/li&gt;
&lt;li&gt;Keep control as much as possible&lt;/li&gt;
&lt;li&gt;Provide nice comprehensive reports and statistics&lt;/li&gt;
&lt;li&gt;Stay independent on a concrete public Git registry&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  TL;DR
&lt;/h3&gt;

&lt;p&gt;For those who lack the time to read the entire content, here’s a concise summary:&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Safe" SonarCloud Account Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Registration:&lt;/strong&gt; You cannot sign up with just an email. You must use another account like GitHub.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy Trick:&lt;/strong&gt; To keep control over your code, authorize the SonarCloud GitHub App &lt;strong&gt;only&lt;/strong&gt; for a single "Dummy/Empty" repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project Creation:&lt;/strong&gt; Inside SonarCloud, do not "Import" from GitHub. Instead, choose &lt;strong&gt;"Create a project manually."&lt;/strong&gt; This creates an "Unbound" project that waits for you to push data to it, rather than SonarCloud pulling data from a repo.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scanning Strategies
&lt;/h3&gt;

&lt;p&gt;There are two distinct tools because they serve different purposes. Neither one can replace the other.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Tool&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;SonarQube vscode plugin&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;sonar-scanner CLI&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Instant feedback ("Spell checker") while typing&lt;/td&gt;
&lt;td&gt;Full project health report &amp;amp; Dashboard update&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scope&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Only open files&lt;/td&gt;
&lt;td&gt;The entire repository&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data Flow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Downloads rules &lt;strong&gt;from&lt;/strong&gt; Cloud when Connect mode configured  &lt;br&gt;&lt;strong&gt;No code upload.&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Scans locally → Uploads report &lt;strong&gt;to&lt;/strong&gt; SonarCloud.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Trigger&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Automatic (Real-time).&lt;/td&gt;
&lt;td&gt;Manual (Command Line).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The final Workflow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Code:&lt;/strong&gt; You write code in vscode. The plugin (in Connected Mode) underlines issues using SonarCloud rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commit:&lt;/strong&gt; You commit your changes to Git.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repo scan:&lt;/strong&gt; You run the scanner CLI command in your terminal or in a CI/CD pipeline to scan the whole repo and upload the results to SonarCloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reports&lt;/strong&gt;: You check the results in SonarCloud.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The long Story
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Start
&lt;/h3&gt;

&lt;p&gt;Apparently, I was thinking too simply. I thought, I only would have to register for a free developer account at SonarQube Cloud (SonarCloud), create a project with a token there, install the SonarQube vscode plugin, create the connection to the SonarCloud via the token, and that's it. Hopefully, the code stays locally, only scan results are transferred to the cloud and stored there for nice reports and statistics. Far from it...&lt;/p&gt;

&lt;h3&gt;
  
  
  Register at SonarCloud / Grant access to GitHub
&lt;/h3&gt;

&lt;p&gt;SonarCloud doesn't provide the usual email address-based register option. They force us to use one of the public or private Git repo providers. If it were only about authentication, then it would be okay. But SonarCloud wants to get read/write access to the repos in my GitHub account. At least it can be limited to a single repo.&lt;/p&gt;

&lt;p&gt;The intention behind is clear. SonarCloud strongly integrates into the GitHub repo and executes all scans directly on the code there. But this requires granting write permissions in this repo. So, you have to trust Sonar. Currently, I wouldn’t do this. Even if SonarQube is still partly open source and there is a kind of community edition, I would not bet that it’s forever. And we have seen several times what happens with our code when we are too lazy. Anyway, I don’t want to grant this kind of trust and permissions on my code repo.&lt;/p&gt;

&lt;p&gt;So, what else can I do? To at least finish the registration at SonarCloud, I created a dummy repo in GitHub and granted access only to this repository. As a result, SonarQube Cloud is now listed in GitHub Applications under both “Authorized GitHub Apps” and “Installed GitHub Apps”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbra9q0a1t4k9mxw59qur.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbra9q0a1t4k9mxw59qur.png" alt=" " width="800" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fevmdas740j0vf1vo9rc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fevmdas740j0vf1vo9rc9.png" alt=" " width="800" height="164"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I don’t really understand why 2 entries are needed. Even the dedicated GitHub documentation is not that clear and a bit misleading. As a result of my studies, I assume the former is for using GitHub as an OAuth provider to log in to SonarCloud. The latter defines how SonarCloud is entitled to access my GitHub repo(s). When you click on the Configure button, you can configure the repos to which SonarCloud shall get access. Finally, I found out that the entry at "Installed GitHub Apps" and the dummy repo can be deleted. So, (hopefully) only the OAuth authorization remains. If your are still unsure, create a separate fully isolated GitHub account to handle SonarCloud registration and authentication. Maybe, you need the account for other cases like this.&lt;/p&gt;

&lt;p&gt;But it’s clear: If you don’t grant access to the actual code repo but only to a dummy repo to get the registration done, then your actual code won’t be scanned by SonarCloud directly on the GitHub repo. This is intended in my personal case.&lt;/p&gt;

&lt;p&gt;This means that we must manage to interconnect SonarCloud with local software by any way. Here, the actual journey starts. We must understand the different elements at the local side, how they interact with each other, and what added value each of them provides. Then we can decide, what we really want to install and use.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Components
&lt;/h3&gt;

&lt;p&gt;I read many pages, tried some things out, and asked AI. As a result, I got an overarching picture of how the whole stuff can be put together. To explain any further, I will describe the involved components, their purpose, and added value.&lt;/p&gt;

&lt;h4&gt;
  
  
  The local code repository and shell
&lt;/h4&gt;

&lt;p&gt;This is easy. This is the local code on your machine which shall be scanned and evaluated. And there is a shell terminal, where commands can be executed.&lt;/p&gt;

&lt;h4&gt;
  
  
  The remote repo
&lt;/h4&gt;

&lt;p&gt;If you work on a serious project, you will push your code to a kind of remote Git repository. This can be a privately hosted Git server or most usually a public repo like GitHub or Codeberg (here, either a public or private repo). Because I stated that I don't want to tightly integrate my remote repo with SonarCloud, the remote repo is not involved in the further concept. (Even though if I push my code to one of these repos too.)&lt;/p&gt;

&lt;h4&gt;
  
  
  The SonarCloud
&lt;/h4&gt;

&lt;p&gt;This provides the features of SonarQube as a cloud service. The features are pretty much the same compared with the self-hosted SonarQube, but of course, pricing, licenses, and subscription plans differ. You can set up different organizations and projects. Each project can cover different Git repos.&lt;/p&gt;

&lt;p&gt;To create a new project in SonarCloud, click on the plus sign in the top right corner, select "Analyze new project", and &lt;strong&gt;then resist to select a GitHub repo when you want to keep control (like me). Instead, use the small link on the right side "create a project manually"&lt;/strong&gt;. This is the crucial step to setup a SonarCloud project which is not bound to a repo on GitHub or similar.&lt;/p&gt;

&lt;p&gt;It's possible to centrally configure sonar scan properties, quality profiles and gates and much more. In the Free plan, built-in rules and gates must be used. These configuration settings will apply when you either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bind a project to a GitHub repo (what I don't want)&lt;/li&gt;
&lt;li&gt;install the SonarQube plugin into vscode and setup the Connected Mode (see below)&lt;/li&gt;
&lt;li&gt;run the sonar-scanner locally and push the results to SonarCloud (see below)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SonarCloud provides nice reports about different aspects of software quality. The main areas are general code quality, security, and test coverage. Reports are shown for new and overall code, branches are distinguished, and even a trend can be visualized. &lt;/p&gt;

&lt;p&gt;But presenting these nice reports require that any scan results are delivered to SonarCloud. This can be done by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;direct repo binding (again, not preferred)&lt;/li&gt;
&lt;li&gt;local execution of the sonar-scanner including push of the results to the cloud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's essential to understand that the SonarQube plugin for vscode doesn't deliver scan results to SonarCloud even not in the Connected mode. This plugin has a different purpose, see below. Executing the sonar-scanner CLI is required for this. This was my main misunderstanding when I started the journey.&lt;/p&gt;

&lt;p&gt;In general, SonarCloud is really useful when you want to work in a team, consolidate quality properties, have a common view on the quality status, and see the trend over the software lifecycle. &lt;/p&gt;

&lt;p&gt;But even if you are "only" a single developer, it is really useful to have this kind of insights into your software quality.&lt;/p&gt;

&lt;p&gt;And when you don't want to use the cloud service, then deploy your self-hosted instance of SonarQube. But you have to pay some money to get the full palette of features.&lt;/p&gt;

&lt;h4&gt;
  
  
  The SonarQube plugin for vscode
&lt;/h4&gt;

&lt;p&gt;This plugin checks your code while you type. Issues are visualized in your code editor and in the Problems window. When you click in a marked code, you get explained what's wrong and how it can be fixed. &lt;/p&gt;

&lt;p&gt;When you configure the connected mode (see &lt;a href="https://docs.sonarsource.com/sonarqube-for-vs-code/connect-your-ide/connected-mode" rel="noopener noreferrer"&gt;https://docs.sonarsource.com/sonarqube-for-vs-code/connect-your-ide/connected-mode&lt;/a&gt;), then only any centrally managed scan configuration is pulled from SonarCloud to your local machine. This allows you to ensure that any team member uses the same configuration even when locally applied. &lt;/p&gt;

&lt;p&gt;This is what the &lt;strong&gt;plugin does not:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It doesn't scan the whole code in your local repo. It only works on the open file. The "Problems" window only contains issues for open files. &lt;/li&gt;
&lt;li&gt;It doesn't deliver scan results to SonarCloud even not in the Connected mode. This plugin has a different purpose to support you while working on your code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The sonar-scanner&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the most useful tool when you want to check your software completely and locally. Best, you download the binary from the SonarCloud website. Go to a Project → Administration → Analysis Method → Manually. Then you can select your OS, etc., and get a download link and some additional information on how to run the sonar-scanner. Especially, you get config information on how to push sonar-scanner results to SonarCloud and how to deal with the auth token. &lt;/p&gt;

&lt;p&gt;If this has been set up, simply execute the sonar-scanner in your local terminal. It scans the whole repo, which takes about 30 seconds for 4.5k lines of code. As part of the execution, the results are delivered to SonarCloud where the results can be seen and assessed.  In contrast to the vscode plugin, this scan also contains some more complicated security-relevant checks. &lt;/p&gt;

&lt;p&gt;If sonar-scanner is configured to use SonarCloud, it pulls quality profiles, quality gates, and general settings. But any local configuration sonar-project.properties file (see the code example below) would have precedence over configuration in SonarCloud. This applies especially for code-relevant settings like file exclusions, inclusions, unit test settings, etc. It's recommended to keep these config items in the local file under Git control rather than managing it in the SonarCloud UI. &lt;/p&gt;

&lt;p&gt;To automate the execution of sonar-scanner along with e.g. test and build steps, it's good practice to create a tasks.json in vscode (see code example below).&lt;/p&gt;

&lt;p&gt;When a CI/CD pipeline like Gitlab, Jenkins, Woodpecker, or GitHub Actions is used, then the execution of the sonar-scanner should be an integrated part of the build and test process.&lt;/p&gt;

&lt;p&gt;You could ask if we still need SonarCloud at all if we can execute the local sonar-scanner. &lt;strong&gt;Unfortunately, yes!&lt;/strong&gt; If you run sonar-scanner without a configured and reachable Sonar server (either SonarCloud or a local SonarQube instance), the scan will fail. It does not produce a standalone HTML or PDF report on your hard drive. Sonar works on a client-server architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Scanner (Client):&lt;/strong&gt; Its only job is to read local files, extract some data, and ship data files to the server. It does not calculate the final results or aggregate the issues itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The SonarCloud (Server):&lt;/strong&gt; This is where the heavy work happens. The server processes the raw data, applies the rules, calculates "New Code" deltas, and generates the visual report.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Overarching Diagram
&lt;/h3&gt;

&lt;p&gt;This self-made diagram tries to depict the overall relations, without GitHub or similar. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmy3yehky9b0xbzfgn6p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmy3yehky9b0xbzfgn6p.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Decision Options
&lt;/h3&gt;

&lt;p&gt;Based on all these facts, what options do we have now:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The "magic" option&lt;/strong&gt;: Bind your project/repo in SonarCloud directly to a Git repo at e.g. GitHub. Some magic happens now: Sonar gets notified when there is a commit to GitHub, clones the repo, and executes the scan. Additionally, use the vscode plugin, and for special cases, execute sonar-scanner as part of your CI/CD pipeline. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "fully on my own" option&lt;/strong&gt;: Don't use SonarCloud at all. Only install the SonarQube plugin for vscode without connected mode to scan your code while you are typing. You get instant feedback on your code. Optionally, you can deploy your self-hosted instance of SonarQube and execute sonar-scanner connected to this instance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "pragmatic" option&lt;/strong&gt;: Use SonarCloud, but don't bind to a GitHub repo. Instead, set up a "manual" project in SonarCloud. Install the vscode plugin using connected mode for instant feedback in your IDE. Execute sonar-scanner locally and/or via CI/CD pipeline against your manually set-up SonarCloud project.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;→ For the time being, I decided for option 3. It's a good balance between code control, convenience and results.&lt;/strong&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Code Examples
&lt;/h3&gt;

&lt;h4&gt;
  
  
  .vscode/settings.json → local config file for vscode plugin
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "sonarlint.connectedMode.project": {
    "connectionId": "connection_name",
    "projectKey": "sonarcloud_project_key"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  sonar-project.properties → local sonar-scanner configuration
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# This tells the scanner: "Send the results to the Cloud, not Localhost"
sonar.host.url=https://sonarcloud.io

# Uniquely identifies your project on SonarCloud
# You get these from the project Information page on SonarCloud
sonar.organization=sonar_org
sonar.projectKey=sonarcloud_project_key

# Source code location. 
# "." means "everything in this directory"
# we exclude some files and folders later
sonar.sources=.

# Exclusions (Optional)
# Don't scan build results and database files
sonar.exclusions=bin/**,*.db*

# Specify test files
sonar.tests=.
sonar.test.inclusions=**/*_test.go

# Test coverage report
sonar.go.coverage.reportPaths=coverage.out
sonar.coverage.inclusions=backend/**/*.go
# the inclusion is not sufficient to exclude static files, so we need to exclude them explicitly
sonar.coverage.exclusions=static/**/*,main.go

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  .vscode/tasks.json → automation file for test, build and scan
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "1. Go Test",
      "type": "shell",
      "command": "go test -v -coverprofile=coverage.out ./backend/...",
      "group": "test",
      "presentation": {
        "reveal": "always",
        "panel": "shared"
      },
      "problemMatcher": [
        "$go"
      ]
    },
    {
      "label": "2. Go Build",
      "type": "shell",
      "command": "go build -v main.go",
      "group": "build",
      "presentation": {
        "reveal": "always",
        "panel": "shared"
      },
      "problemMatcher": [
        "$go"
      ]
    },
    {
      "label": "3. Sonar Scanner",
      "type": "shell",
      "command": "sonar-scanner",
      // Use a login interactive shell to ensure the user's PATH and SONAR_TOKEN are loaded correctly (finding sonar-scanner binary)
      "options": {
        "shell": {
          "args": [
            "-l",
            "-i",
            "-c"
          ]
        }
      },
      // Add your specific arguments here if not using a sonar-project.properties file
      "args": [
        "-Dsonar.token=${env:SONAR_TOKEN}" // we keep it here to document that the envvar is used
      ],
      "presentation": {
        "reveal": "always",
        "panel": "shared"
      },
      "problemMatcher": []
    },
    {
      "label": "Run Full Pipeline",
      "dependsOn": [
        "1. Go Test",
        "2. Go Build",
        "3. Sonar Scanner"
      ],
      "dependsOrder": "sequence",
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "problemMatcher": []
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>sonarqube</category>
      <category>sonarcloud</category>
      <category>codequality</category>
    </item>
  </channel>
</rss>
