<?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: Marco Steinhaeuser</title>
    <description>The latest articles on DEV Community by Marco Steinhaeuser (@kermie).</description>
    <link>https://dev.to/kermie</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%2F1154267%2F5d028239-8541-4f50-a976-61e9eb24da3f.jpeg</url>
      <title>DEV Community: Marco Steinhaeuser</title>
      <link>https://dev.to/kermie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kermie"/>
    <language>en</language>
    <item>
      <title>Why I'm supporting the petition to recognize open-source work as volunteering in Germany</title>
      <dc:creator>Marco Steinhaeuser</dc:creator>
      <pubDate>Wed, 04 Mar 2026 17:25:15 +0000</pubDate>
      <link>https://dev.to/kermie/why-im-supporting-the-petition-to-recognize-open-source-work-as-volunteering-in-germany-29ac</link>
      <guid>https://dev.to/kermie/why-im-supporting-the-petition-to-recognize-open-source-work-as-volunteering-in-germany-29ac</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclaimer: This post reflects my personal opinion and is published on my own website. I'm speaking as a Community Manager / DevRels who works at the intersection of developers and open source, not on behalf of my employer.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most people never notice when they're relying on open-source software. It runs behind video and audio streaming, powers ticket machines in public transport, drives countless websites — including many online stores — and supports most of the digital services we use every day. Germany's Federal Government has repeatedly acknowledged this, and has explicitly named open source as a key requirement for achieving digital sovereignty.&lt;/p&gt;

&lt;p&gt;Yet despite this recognition, the people who build, maintain, and secure these technologies often do not receive the same legal or fiscal recognition as volunteers in more traditional civic roles. This is why I'm adding my voice to support a petition that aims to change this: &lt;a href="https://www.openpetition.de/petition/online/recognition-of-work-on-open-source-as-volunteering-in-germany" rel="noopener noreferrer"&gt;&lt;strong&gt;Recognition of Work on Open Source as Volunteering in Germany&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A call we should all stand behind
&lt;/h2&gt;

&lt;p&gt;The petition, initiated by the TYPO3 Association Board member Boris Hinzer, calls for open-source work to be formally recognized as volunteer work in Germany. If adopted, this change would place digital volunteerism alongside long-established categories such as youth work, rescue services, and civic association roles. It would acknowledge that contributing code, documentation, translations, security fixes, and community support is every bit as valuable to society as volunteering offline.&lt;/p&gt;

&lt;p&gt;Those of us working in the open-source ecosystem know this firsthand. Platforms like TYPO3, Joomla, Shopware, and countless others are built on a foundation of open-source software and thrive because of community contributions. Every improvement, every security patch, every documentation update, and every new idea often starts with individuals who give their time because they believe in open knowledge and shared responsibility. Recognizing this work as volunteering is overdue.&lt;/p&gt;

&lt;h2&gt;
  
  
  The open-source dependency crisis
&lt;/h2&gt;

&lt;p&gt;Have you ever run &lt;code&gt;composer install&lt;/code&gt;, &lt;code&gt;npm update&lt;/code&gt;, or &lt;code&gt;pip install&lt;/code&gt; today? For most of us in tech, these commands are as routine as turning on our computers. They pull in the building blocks of our applications, open-source packages maintained by developers around the world.&lt;/p&gt;

&lt;p&gt;But what happens when that stops?&lt;/p&gt;

&lt;p&gt;Imagine waking up to find Packagist, NPM, and PyPI all offline. Not just slow, but &lt;em&gt;gone&lt;/em&gt;. In his powerful piece, "&lt;a href="https://phpunit.expert/articles/open-source-blackout.html" rel="noopener noreferrer"&gt;Open Source Blackout&lt;/a&gt;," Sebastian Bergmann paints this chilling picture. It's a scenario where global software development grinds to a halt, taking a significant chunk of the $8.8 trillion economy built on open source down with it.&lt;/p&gt;

&lt;p&gt;This dystopian vision highlights a stark reality: our industry's critical infrastructure is largely sustained by goodwill, unpaid weekends, and the burnout of a few dedicated souls. It's a system we've normalized, but it's not sustainable.&lt;/p&gt;

&lt;p&gt;Which brings me to a small but significant step happening right here in Germany: a petition that aims to officially recognize work on open source as volunteering.&lt;/p&gt;

&lt;h2&gt;
  
  
  The petition: a simple ask with deep implications
&lt;/h2&gt;

&lt;p&gt;The petition "&lt;a href="https://www.openpetition.de/petition/online/recognition-of-work-on-open-source-as-volunteering-in-germany" rel="noopener noreferrer"&gt;Recognition of Work on Open Source as Volunteering in Germany&lt;/a&gt;" might sound bureaucratic, but its goal is profoundly important. It calls on the German government to formally acknowledge that contributing to open-source software is a valuable form of civic engagement, on par with volunteering at a sports club, your local fire department or even the Schreber garden association around the corner.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does a petition actually do in Germany?
&lt;/h2&gt;

&lt;p&gt;For my international readers, it's helpful to understand the mechanism. In Germany, petitions are a formal tool for citizens to bring issues to the attention of their parliament (the "Bundestag"). If a petition gathers enough public support, it can be heard in a parliamentary committee. Lawmakers must then discuss the matter publicly and issue an official response.&lt;/p&gt;

&lt;p&gt;It's not a direct law-making tool, but it's a powerful amplifier. It forces a conversation at the highest level. Signing this petition is a way to tell the German government: "This matters. The digital infrastructure of our country, and our economy, relies on this unpaid work. It's time to look at the rules."&lt;/p&gt;

&lt;h2&gt;
  
  
  The volunteer status complication: why this matters legally
&lt;/h2&gt;

&lt;p&gt;So, why is getting this "volunteer" status such a big deal? It comes down to the legal and fiscal framework for non-profit organizations in Germany.&lt;/p&gt;

&lt;p&gt;Currently, if a group of open-source developers wants to get tax benefits or receive tax-deductible donations, they typically need to form a registered association and successfully apply for non-profit status. This works for some, but it's a poor fit for the decentralized, often global, and informal nature of many open-source projects. It creates a huge barrier.&lt;/p&gt;

&lt;p&gt;The situation becomes even clearer when you look at past struggles. Consider the case of &lt;strong&gt;J and Beyond&lt;/strong&gt;, the organization behind the Joomla! content management system. In 2016, the German tax authorities moved to strip them of their non-profit status. The core question was: is supporting open-source software truly a charitable purpose under German law?&lt;/p&gt;

&lt;p&gt;As detailed in (sorry, German only) articles like &lt;a href="https://www.cms-garden.org/de/magazin/ist-ein-verein-zur-unterstuetzung-von-opensource-software-gemeinnuetzig" rel="noopener noreferrer"&gt;"Ist ein Verein zur Unterstützung von Open-Source-Software gemeinnützig?"&lt;/a&gt; and coverage by &lt;a href="https://www.heise.de/news/Joomla-Verein-kaempft-um-seine-Gemeinnuetzigkeit-3231491.html" rel="noopener noreferrer"&gt;heise online&lt;/a&gt;, the organization won its case. But the fight took years, consumed significant financial resources, and caused immense stress. They succeeded, but the underlying legal ambiguity remains. The system is set up to recognize traditional volunteering, not digital infrastructure building.&lt;/p&gt;

&lt;p&gt;This petition aims to fix that ambiguity at its root, making it clear that maintaining the code our economy runs on &lt;em&gt;is&lt;/em&gt; a charitable, volunteer activity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why you should care (and sign)
&lt;/h2&gt;

&lt;p&gt;Whether you're a developer pushing commits, or an online merchant whose entire storefront depends on open-source plugins and frameworks, this directly affects you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;For developers:&lt;/strong&gt; It's about sustainability and fairness. It's a step toward a system where the countless hours you pour into open source can be legally acknowledged, and the projects you love can receive support without jumping through impossible bureaucratic hoops. It helps prevent the burnout Bergmann describes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For online merchants and businesses:&lt;/strong&gt; A healthy, legally recognized open-source ecosystem is more resilient. When maintainers have the backing of a supportive legal and fiscal environment, the risk of critical projects being abandoned due to burnout or lack of funds decreases. Your business, which relies on this "free" infrastructure, gains stability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As Bergmann points out, "commercial-scale use without commercial-scale support is unsustainable." The joint statement from OpenSSF, Packagist, Maven Central, PyPI, crates.io and others is a desperate plea for help. While this German petition is just one piece of a much larger puzzle, it's a concrete, actionable step we can take right now to build a more sustainable foundation.&lt;/p&gt;

&lt;p&gt;It's a gentle nudge to the system, asking it to recognize the world as it is today: a world where maintaining digital public infrastructure is one of the most important forms of volunteer work there is.&lt;/p&gt;

&lt;p&gt;Please, take a moment, read the petition, and add your name. Let's help build a future where the "Open Source Blackout" remains just a thought experiment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.openpetition.de/petition/online/recognition-of-work-on-open-source-as-volunteering-in-germany" rel="noopener noreferrer"&gt;➡️ Sign the Petition: Recognition of Work on Open Source as Volunteering in Germany&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>germany</category>
      <category>nonprofit</category>
      <category>opensource</category>
      <category>openpetition</category>
    </item>
    <item>
      <title>Adding and maintaining new languages in Shopware is now dead simple</title>
      <dc:creator>Marco Steinhaeuser</dc:creator>
      <pubDate>Tue, 03 Mar 2026 15:52:30 +0000</pubDate>
      <link>https://dev.to/shopware/adding-and-maintaining-new-languages-in-shopware-is-now-dead-simple-503p</link>
      <guid>https://dev.to/shopware/adding-and-maintaining-new-languages-in-shopware-is-now-dead-simple-503p</guid>
      <description>&lt;p&gt;With Shopware v6.7.3.0, we introduced a very interesting feature for those of you who have to deal with languages and translations in your online shops. As we ported the functionality of the formerly known &lt;a href="https://store.shopware.com/en/swag338126230916f/shopware-language-pack.html" rel="noopener noreferrer"&gt;Shopware language pack&lt;/a&gt; into the core of Shopware, installing and maintaining languages in Shopware became dead-simple. In this blog post, you will learn how it works and what the limits of this modus operandi are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Translation platform on Crowdin
&lt;/h2&gt;

&lt;p&gt;The basis is our &lt;a href="https://translate.shopware.com" rel="noopener noreferrer"&gt;translation platform&lt;/a&gt; with the generous help of Crowdin. All newly appeared language keys (AKA "snippets") in the Shopware core will automatically be available in Crowdin, followed by an automatic translation utilising &lt;a href="https://aws.amazon.com/translate/" rel="noopener noreferrer"&gt;Amazon Translate&lt;/a&gt;. Crowdin shows how much of a language is human-translated via the colour of the status bar in the language overview: Blue means machine translated, green means human translated.&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%2Fdxd0guqyxeri82j5h60h.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%2Fdxd0guqyxeri82j5h60h.png" alt="screenshot of progress bars in Crowdin" width="758" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All translations will be synchronised daily to the repository &lt;a href="https://github.com/shopware/translations/" rel="noopener noreferrer"&gt;github.com/shopware/translations/&lt;/a&gt;, after synchronisation they can be used as shown in the following steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding a new translation to Shopware
&lt;/h2&gt;

&lt;p&gt;Shopware comes with just three pre-installed languages: English – British and American – plus German. Let's say you want to extend your online shop with Spanish like it is spoken in Spain (es-ES).&lt;/p&gt;

&lt;p&gt;Login to your server via the terminal, navigate to the location of your .env file, and execute the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ php bin/console translation:install --locales=es-ES
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just like that, Spanish is installed and already activated in your Shopware instance. All you have to do now is login to your administration panel and adjust the URL for your new language, for example &lt;strong&gt;&lt;a href="https://example.com/es/" rel="noopener noreferrer"&gt;https://example.com/es/&lt;/a&gt;&lt;/strong&gt; (replace example.com with your domain). When you navigate to this URL, you'll now see Spanish translations all over – well, except for your products and custom text. 😉&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%2F1mwgmg283gsdlia8kyvb.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%2F1mwgmg283gsdlia8kyvb.png" alt="part of Shopware storefront saying that there are no products in spanish" width="800" height="30"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Maintaining translations
&lt;/h2&gt;

&lt;p&gt;Let's go a step further and update your new translation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ php bin/console translation:update --locales=es-ES
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way, you will fetch the latest language keys, no matter if used or not, and also the latest human approved translations by the community.&lt;/p&gt;

&lt;p&gt;There are even more commands and options available. Read more about it in the &lt;a href="https://developer.shopware.com/docs/concepts/translations/built-in-translation-system.html" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want to have your very own behaviour for special language keys in your online shop, there is no need to fight about the correct phrase on our translation platform. Think of cart vs. basket vs. trolley, for example. In this case, simply make use of &lt;strong&gt;Shopware admin » General » Languages » Manage Snippets&lt;/strong&gt;. These changes will be stored in the database and have first loading priority. This way, your newly installed Spanish translation set stays update-safe, and you can have your very own style without bothering others. However, other community members still can make use of it.&lt;/p&gt;

&lt;p&gt;The coolest advantage of these CLI commands is that you could even use the update method described above in a cron job or even in your continuous integration setup – at least for staging: stay up-to-date with the latest community corrections in this translation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A bit off-topic and out of scope for this blog post, but I don't want to miss pointing you to this great translation QA-tool for your CI: &lt;a href="https://github.com/boxblinkracer/phpunuhi" rel="noopener noreferrer"&gt;https://github.com/boxblinkracer/phpunuhi&lt;/a&gt; – indispensable for bigger online shops with any quality approach, isn't it? Especially, as it was developed by one of my best mates in the community, &lt;a href="https://github.com/boxblinkracer/" rel="noopener noreferrer"&gt;@boxblinkracer&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Limits and disclaimer
&lt;/h2&gt;

&lt;p&gt;Please note that this blog post is about translations of the core language keys / snippets for the storefront as well as the administration panel of your Shopware instance. No product information nor any other database entries have automatically been translated.&lt;/p&gt;

&lt;p&gt;With the method described above, you are installing translations made by the community. Shopware can not give any guarantee on the quality nor the content of these translations. We cannot proofread languages we do not speak, which means there is the possibility of a bad actor adding wrong or even offensive text into translations. If you gain knowledge of it, &lt;a href="https://chat.shopware.com" rel="noopener noreferrer"&gt;please inform us&lt;/a&gt; as soon as possible to help keeping the quality of the translations high. Also, please avoid the automatic update method in production and only use it on staging for this reason.&lt;/p&gt;

&lt;p&gt;What I have described here will only work for translations available on &lt;a href="https://translate.shopware.com" rel="noopener noreferrer"&gt;translate.shopware.com&lt;/a&gt;. There are two other methods if you need a language not available through the Crowdin setup:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;(Preferred) &lt;a href="https://chat.shopware.com" rel="noopener noreferrer"&gt;Get in touch&lt;/a&gt; and request another language to be added to our Crowdin instance. We can quickly provide at least an automated translation, which will – over time, and depending on the quality of the automation – be approved by a human being.&lt;/li&gt;
&lt;li&gt;Create your own plugin on the basis of the &lt;a href="https://github.com/shopware/SwagLanguagePack" rel="noopener noreferrer"&gt;Shopware language plugin&lt;/a&gt;. This way, you have full ownership, without any community connection.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Last but not least: We will deliver any language available on &lt;a href="https://translate.shopware.com" rel="noopener noreferrer"&gt;translate.shopware.com&lt;/a&gt;, be it LTR (left to right) or RTL (right to left, like Arabic, for example), the way described above knowing that there might be some display glitches. This is because we rely on you, the community. You as native speakers have more experience in properly solving this topic in no time as we might still struggle in planning, sorting it out, resolving and testing it. Looking forward to a proper solution, best as a free/libre and open source plugin for Shopware. Don't hesitate to &lt;a href="https://chat.shopware.com" rel="noopener noreferrer"&gt;ping us&lt;/a&gt; once you're done with it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;Send your translators to &lt;a href="https://translate.shopware.com" rel="noopener noreferrer"&gt;translate.shopware.com&lt;/a&gt; for approving existing auto-translations, correcting them and let the remaining language keys be translated for the benefit of the whole community.&lt;/p&gt;

&lt;p&gt;We are planning to publish a so called "in-context translation": There will be a demo Shopware instance that translators can use to see the context of what they are translating – everything connected to Crowdin. Once this is finished, we will announce it in this channel as well as social media.&lt;/p&gt;

&lt;p&gt;Looking for help or experienced translators? We created a club in &lt;a href="https://hub.shopware.com/clubs/translators" rel="noopener noreferrer"&gt;hub.shopware.com&lt;/a&gt;, especially for translators. We will be there to answer your translator questions.&lt;/p&gt;

&lt;p&gt;Have fun with this new feature and let us know how it is working for you!&lt;/p&gt;

</description>
      <category>shopware</category>
      <category>localization</category>
      <category>languages</category>
      <category>crowdin</category>
    </item>
  </channel>
</rss>
